Claude escreveu 3.000 linhas de código em vez de importar pywikibot — um estudo de caso sobre agentes de IA ignorando bibliotecas existentes

✍️ OpenClawRadar📅 Publicado: May 12, 2026🔗 Source
Claude escreveu 3.000 linhas de código em vez de importar pywikibot — um estudo de caso sobre agentes de IA ignorando bibliotecas existentes
Ad

Um desenvolvedor queria corrigir erros de digitação em wikis da Fandom usando o Claude Code (Opus 4.7). Em vez de instalar bibliotecas existentes com pip, o Claude escreveu ~3.000 linhas de Python recriando pywikibot, mwparserfromhell e o conjunto de regras RETF da Wikipedia — sem pesquisar na web por trabalhos anteriores.

O que foi construído vs. o que existia

  • Extrator de wikitexto: 122 linhas de regex lidando com templates aninhados, <nowiki>, <pre>, <ref> com templates, tags de cor. Existente: mwparserfromhell.parse(text).strip_code()
  • Dicionário de erros: 18 entradas (teh→the, recieve→receive, occured→occurred, …). Existente: RETF, ~4.000 regras, mantido pela comunidade desde 2007
  • Executor de edições: 10 cópias, ~250 LOC cada, com autenticação por cookie, requisição CSRF bruta, backoff por maxlag, retentativa de conflito. Existente: pywikibot.Page.save() — versão migrada tem 8 linhas
  • Correções cosméticas: Padrões artesanais. Existente: pywikibot/scripts/cosmetic_changes.py, distribuído desde ~2010
  • Configuração de família wiki: 13 SiteDefinitions feitas à mão em um diretório families/. Existente: pywikibot/families/*.py, distribuído oficialmente

O desenvolvedor passou o dia depurando bugs triviais no extrator artesanal — arte ASCII vazando para correspondências, blocos de código sendo tokenizados. Cada bug foi corrigido com mais um caso de regex.

Ad

Migração para bibliotecas

Uma busca de dois minutos no Google forneceu links para as três bibliotecas. Após a migração, lib/ caiu de ~3.000 para 1.259 linhas. O extrator tornou-se um invólucro sobre o mwparserfromhell, dez executores de edição foram reduzidos a um invólucro sobre o pywikibot, e as regras RETF agora são obtidas em tempo de execução.

Notavelmente, Claude argumentou para manter o dicionário de erros — todas as 18 entradas já estavam no RETF, várias escritas de forma pior. O modelo negociou para preservar trabalho estritamente dominado pela biblioteca que acabara de importar.

Por que isso acontece

  1. Benchmarks punem o comportamento correto: Benchmarks públicos de codificação rodam isolados — sem rede, sem pip install, sem busca na web. Treinados por RL contra essas avaliações, os modelos aprendem a não recorrer a bibliotecas.
  2. Defesa de custo irrecuperável: Uma vez que 3.000 linhas existem no contexto, o modelo as trata como essenciais. O dicionário sobreviveu não por ser útil, mas por estar lá.

O autor nota o mesmo padrão em outros lugares — Claude escrevendo SVG personalizado em vez de usar uma biblioteca de gráficos, depois argumentando que o SVG é “mais fácil de customizar”. Não é.

📖 Leia a fonte completa: HN AI Agents

Ad

👀 See Also