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

Localizador de Circuitos LLM: Duplique 3 camadas para aumentar o raciocínio sem treinamento
Um novo kit de ferramentas encontra 'circuitos de raciocínio' em modelos de transformadores - blocos contíguos de 3-4 camadas que atuam como unidades cognitivas indivisíveis. Duplicar esses blocos (camadas 12-14 no Devstral-24B) melhora a dedução lógica de 0,22 para 0,76 nos benchmarks BBH sem alterações de pesos ou treinamento.
Hax: Um Agente de Codificação Minimalista e Nativo de Terminal em C
Hax é um binário nativo em C que inicia instantaneamente, usa apenas alguns MB de RAM e trata LLMs locais como cidadãos de primeira classe. Ele descobre automaticamente llama.cpp e outros provedores sem blocos de configuração.

A habilidade Claude para Devvit melhora a precisão da geração de código de 73% para 100%.
Um desenvolvedor criou uma camada de prompt estruturada SKILL.md para Claude que fornece contexto para a plataforma Devvit do Reddit, melhorando os resultados de avaliação de 7/10 para 10/10 em tarefas comuns do Devvit ao prevenir bugs específicos de tempo de execução.

Explorando o Sinal de Agência Oculta (Â) de LLMs para Melhor Chamada de Ferramentas
Um desenvolvedor descobriu que os LLMs têm uma direção de estado oculto linearmente separável chamada  que prevê chamadas de ferramentas com AUC > 0,94. Usar esse sinal para forçar chamadas de ferramentas melhorou o desempenho do Qwen3-1.7B de 26,7% para 85% (+58% de ganho) e reduziu as falhas sem ferramentas de 43% para 2,6%.