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

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.
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
- 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.
- 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
👀 See Also

Simplificando a Hospedagem OpenClaw: BestClaw Mantém SSH e Funcionalidade Amigável
A BestClaw surge como uma solução direta para hospedagem OpenClaw, equilibrando facilidade de uso com acesso SSH crucial, conforme discutido no r/openclaw.

Sandra: MCP de memória gráfica persistente de código aberto para Claude
Sandra é um backend de memória baseado em grafos + vetores com um servidor MCP nativo que oferece ao Claude memória estruturada e persistente entre sessões, suportando busca exata, difusa e semântica.

ZSE: Motor de inferência de LLM de código aberto com inicializações a frio de 3,9 segundos
ZSE é um motor de inferência de LLM de código aberto que reduz os requisitos de memória de modelos de 32B de 64GB para 19,3GB de VRAM e alcança inicializações a frio de 3,9 segundos para modelos de 7B usando um formato .zse pré-quantizado com pesos mapeados na memória.

Engramx v3.4: Servidor MCP + Grafo de Conhecimento SQLite Reduz o Uso de Tokens do Claude Code em 89%
Engramx v3.4 intercepta leituras de arquivos para agentes Claude Code, retornando resumos estruturais em vez do conteúdo bruto. Benchmarks mostram redução agregada de 89,1% de tokens em uma base de código de 87 arquivos.