Quando a IA de programação emperra: dicas práticas para prompts e arquitetura
Quando os Assistentes de Código com IA Travam: Como Melhorar Prompts e Arquitetura
Todo desenvolvedor que usa ferramentas de IA já passou por isso. O agente começa resolvendo bugs e adicionando features sem esforço. Depois, de repente, as respostas ficam lentas, vagas e o consumo de tokens explode. O que mudou? Não foi a ferramenta. Foi a forma como você pediu.
A Fase de Adaptação e o Momento de Parada
Ferramentas como Claude e GPT-4 são ótimas em fazer edições cirúrgicas. Elas analisam o código existente, seguem o estilo do projeto e respeitam os testes. Quando o sistema está bem estruturado e você pede melhorias pontuais, o resultado costuma ser excelente.
O problema aparece quando a solicitação muda de escopo. Pedir para "refatorar toda a camada de autenticação" é diferente de "adicionar uma nova feature". Nesse caso, o agente começa a priorizar a preservação da estrutura atual. Ele tenta manter os testes intactos e faz alterações mínimas para não quebrar nada. Isso é útil na manutenção, mas vira obstáculo quando o objetivo é repensar a arquitetura.
É o que chamamos de test hell — quando os testes, em vez de protegerem o código, impedem mudanças maiores.
O Aumento de Tokens
O ciclo costuma seguir este caminho:
- Você pede uma refatoração
- O agente tenta manter os testes antigos
- A nova arquitetura não se encaixa na estrutura de testes atual
- Ele faz mudanças mínimas para evitar conflitos
- Você pede novamente, com mais detalhes
- O consumo de tokens dobra ou triplica
- As respostas perdem clareza
Esse comportamento não significa que a IA está com problemas. É apenas a consequência de receber instruções contraditórias: mudar tudo e, ao mesmo tempo, manter o sistema funcionando.
O Problema Real: Arquitetura e Expectativas
As assistentes de código são treinadas para trabalhar com desenvolvimento incremental. Elas fazem mudanças pequenas e precisas sobre uma base estável. Isso é exatamente o que happens em pull requests e em produção. Mas quando o projeto está em fase de evolução, esse treinamento passa a ser um obstáculo.
Se você está construendo uma nova estrutura, os testes antigos não são mais contratos. Eles são vestígios de uma exploração que já passou. Quando o agente tenta preservar esses testes, ele não está fazendo algo errado. Ele apenas está seguindo a diretriz que recebeu.
Como Resolver
Com experiência, um desenvolvedor sabe que refatorar um código não é apenas pedir mudanças. Ele cria um documento de design, identifica testes que podem ser descartados e define critérios de aceitação para o resultado. Same abordagem funciona com agentes de IA.
1. Definir as Restrições com Clareza
Em vez de pedir: "Refatore este módulo mantendo os testes verdes."
Use: "Estamos fazendo uma refatoração arquitetural. Estes testes serão aposentados. Aqui está a nova especificação. Estes são os novos testes de aceitação."
2. Separar Exploração de Implementação
Use o agente para criar protótipos em branches temporários. Teste ideias. Depois, uma vez que a arquitetura está definida, passe para a implementação definitiva. Não tente manter os testes antigos e inventar uma nova estrutura ao mesmo mesmo tempo.
3. Repensar a Estratégia de Testes
Tests são ótimos para proteger funcionalidades existentes. Mas não são ideais como guia para arquitetura futura. Quando a estrutura muda, é preciso também mudar a test strategy. Explique ao agente que ele pode refatorar os testes junto com o código.
4. Usar Documentos de Design
Antes de pedir grandes mudanças, documente o que vai mudar e como. Isso dá ao agente contexto além do código e dos testes.
A Implicação para Vibe Coding
Esse princípio aplica-se diretamente ao vibe coding, where AI executes while humans guide direction. AI é forte em implementar uma direção bem definida. Não é tão eficiente quando recebe instruções ambiguas.
Se você está usando NameOcean ou qualquer outra ferramenta de desenvolvimento com AI, lembre-se: você não está trabalhando com um engenheiro independente. 而是 você está colaborando com um sistema que tem limites e está otimizado para tipos específicos de mudanças.
Conclusão
Os assistentes de código não estão se tornando menos inteligentes. They are doing exactly what they were trained to do: incremental changes. When you need evolutionary architecture, you need to ask differently.
Toda vez que você feel que o agente está parado, pergunte: Eu estou pedindo mudanças pequenas sobre uma base estável, ou estou pedindo uma arquitetura nova e fingindo que a base é estável?
A resposta geralmente aponta para either better prompting or better architecture — ou para both.