JustHTML é um exemplo fascinante de engenharia de vibração em ação

JustHTML é um exemplo fascinante de engenharia de vibração em ação


JustHTML é um exemplo fascinante de engenharia de vibração em ação

14 de dezembro de 2025

Recentemente descobri JustHTML, uma nova biblioteca Python para análise de HTML lançada por Emil Stenström. É um software muito interessante, tanto como biblioteca útil quanto como estudo de caso em programação sofisticada assistida por IA.

Primeiras impressões do JustHTML

Inicialmente, eu não sabia que JustHTML havia sido escrito com assistência de IA. O README chamou minha atenção devido a algumas características atraentes:

  • É Python puro. Gosto de bibliotecas que sejam Python puro (sem extensões C ou similares) porque as tornam fáceis de usar em ambientes Python menos convencionais, incluindo o Pyodide.
  • “Passa em todos os mais de 9.200 testes do conjunto oficial de testes html5lib (usado por fornecedores de navegadores)” — isso imediatamente chamou minha atenção! HTML5 é uma especificação grande, complicada, mas meticulosamente escrita.
  • 100% de cobertura de teste. Isso não é algo que você vê todos os dias.
  • Consultas do seletor CSS como um recurso. Eu construí uma biblioteca Python para isso há muitos anos e estou sempre interessado em ver novas implementações desse padrão.
  • O html5lib tem sido mantido de forma inconsistente nos últimos anos, deixando-me interessado em alternativas potenciais.
  • São apenas 3.000 linhas de código de implementação (e outros cerca de 11.000 de testes).

Eu estava fora de casa sem um laptop, então decidi testar o JustHTML no meu telefone. Solicitei Claude Code para web em meu telefone e fiz com que ele construísse esta ferramenta HTML baseada em Pyodide para testá-la:

Captura de tela de uma interface de aplicativo da web intitulada "Modo Parque" com botões rotulados "Consulta do seletor CSS" (roxo, selecionado), "HTML de impressão bonita", "Estrutura da árvore", "Transmitir eventos", "Extrair texto"e "Para redução" (todo cinza). Abaixo está um campo de texto rotulado "Seletor CSS:" contendo "p" e um verde "Executar consulta" botão. Um "Saída" seção com fundo escuro mostra 3 correspondências em um emblema verde e exibe código HTML

Isso foi o suficiente para me convencer de que a funcionalidade principal funcionava conforme anunciado. É um código bacana!

Acontece que quase tudo foi construído por LLMs

Neste ponto, procurei mais informações básicas sobre a biblioteca e encontrei a entrada do blog de Emil sobre isso: Como escrevi JustHTML usando agentes de codificação:

Escrever um analisador HTML5 completo não é um problema curto e único. Estou trabalhando neste projeto há alguns meses fora do horário comercial.

Ferramentas: usei VS Code simples com Github Copilot no modo Agent. Ativei a aprovação automática de todos os comandos e adicionei uma lista negra de comandos que sempre quis aprovar manualmente. Escrevi uma instrução para o agente que dizia para ele continuar trabalhando e não parar para fazer perguntas. Funcionou bem!

Emil usou vários modelos diferentes – uma vantagem de trabalhar no modo VS Code Agent em vez de um agente de codificação bloqueado pelo provedor como Claude Code ou Codex CLI. Claude Sonnet 3.7, Gemini 3 Pro e Claude Opus são mencionados.

Engenharia de vibração, não codificação de vibração

O que há de mais interessante no relato de 17 etapas de Emil que cobre esses vários meses de trabalho é a quantidade de engenharia de software envolvida, independentemente da digitação do código real.

Escrevi sobre engenharia de vibração há algum tempo como uma alternativa à codificação de vibração.

A codificação Vibe é quando você tem um código LLM sem qualquer aparência de revisão de código – ótimo para protótipos e projetos de brinquedo, definitivamente não é uma abordagem para usar em bibliotecas sérias ou código de produção.

Propus a “engenharia de vibração” como a versão adulta da codificação de vibração, onde programadores especializados usam agentes de codificação de maneira profissional e responsável para produzir resultados confiáveis ​​e de alta qualidade.

Você absolutamente deveria ler o relato de Emil na íntegra. Alguns destaques:

  1. Ele se conectou ao conjunto de testes de conformidade de 9.200 testes html5lib quase desde o início. Não há melhor maneira de construir um novo analisador HTML5 do que usar o conjunto de testes usado pelos próprios navegadores.
  2. Ele mesmo escolheu o design principal da API – uma classe base TagHandler com métodos handle_start() etc. – e disse ao modelo para implementá-lo.
  3. Ele adicionou um benchmark comparativo para monitorar o desempenho em comparação com bibliotecas existentes como html5lib e, em seguida, experimentou uma otimização Rust com base nesses números iniciais.
  4. Ele jogou fora o código original e começou do zero como uma versão aproximada da excelente biblioteca html5ever Rust da Servo.
  5. Ele construiu um perfil personalizado e um novo benchmark e deixou o Gemini 3 Pro solto, finalmente conseguindo micro-otimizações para superar as bibliotecas Pure Python existentes.
  6. Ele usou cobertura para identificar e remover códigos desnecessários.
  7. Ele fez com que seu agente construísse um fuzzer personalizado para gerar um grande número de documentos HTML inválidos e proteger o analisador contra eles.

Isso representa muitas práticas de desenvolvimento sofisticadas, aproveitando a profunda experiência de Emil como engenheiro de software. Conforme descrito, isso me parece mais uma função de arquiteto líder do que de um programador prático.

Ele se encaixa perfeitamente no que eu estava pensando quando descrevi engenharia de vibração.

Configurar o agente de codificação com o conjunto html5lib-tests também é um ótimo exemplo de design de um loop de agente.

“O agente digitou”

Emil concluiu seu artigo assim:

JustHTML tem cerca de 3.000 linhas de Python com mais de 8.500 testes aprovados. Eu não poderia ter escrito isso tão rapidamente sem o agente.

Mas “rapidamente” não significa “sem pensar”. Passei muito tempo revisando código, tomando decisões de design e orientando o agente na direção certa. O agente digitou; Eu pensei.

Essa é provavelmente a divisão correta do trabalho.

Eu não poderia concordar mais. Os agentes de codificação substituem a parte do meu trabalho que envolve digitar o código em um computador. Acho que o que resta é um uso muito mais valioso do meu tempo.



Source link

Postagens Similares

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *