Lidando com o código espaguete criado por agentes de IA e reduzindo os custos de tokens
Deixei a codificação por conta do agente e o código se multiplicou por um milhão, resultando em uma fatura de API astronômica. Este artigo fala sobre como lidar com essa situação.
Removendo a base de código corrompida
O código duplicado gerado por um agente em um loop infinito pode ser apagado em 30 minutos. Basta usar knip e jscpd.
Crie um arquivo knip.json na raiz do projeto e liste os pontos de entrada. Digite npx knip no terminal para encontrar pacotes fantasmas criados e abandonados pelo agente. Em seguida, execute npx jscpd ./src -t 1 para extrair blocos de funções duplicadas que aumentaram devido ao copiar e colar.
É possível eliminar o código desnecessário de uma só vez em um monorepo de 158 arquivos. Depois disso, abra biome.json, ative a regra noUnusedVariables e impeça que código morto volte a entrar.
Limitando custos de tokens com o sandbox
Enviar o código inteiro para o agente a cada vez faz os tokens evaporarem. É necessário isolar apenas o arquivo em que se está trabalhando, aplicando uma estrutura Repo-Map no estilo Aider.
Ao usar a opção --map-tokens 1024, é possível conter os tokens usados para entender a estrutura do repositório abaixo de 2.000 tokens, mesmo em projetos com mais de 1.000 arquivos.
Para impor limites de custo, o LiteLLM Proxy é a resposta. Configure o litellm_config.yaml e limite o número máximo de loops por sessão a 15. Se você definir um teto de custo de 2,50 dólares, o proxy interromperá a chamada assim que o agente ultrapassar o limite.
Controlando o agente com testes declarativos
Não adianta escrever prompts longos. Você deve fornecer primeiro um código de teste unitário que falha para que o agente não faça besteira.
De acordo com a pesquisa do SWE-bench Verified, ao usar o método de injetar casos de teste unitários primeiro, a taxa de regressão caiu de 6,08% para 1,82% e a taxa de resolução de problemas subiu de 24% para 32%.
Crie primeiro o arquivo de teste que falha e instrua o agente a escrever apenas a parte de implementação que passa nesse teste.
O script de verificação também deve ser automatizado. Crie um arquivo local_verifier.sh e insira os comandos npx tsc --noEmit, npx biome check ./src e npx vitest run em ordem. Mesmo que o agente insista que terminou de escrever o código, o commit será bloqueado se o código de saída deste script não for 0.
Fluxo de trabalho híbrido com intervenção humana direta
O código criado pelo agente é dividido em unidades de pull request para revisão humana direta.
Verifique se as linhas modificadas ultrapassaram 200, se há pacotes estranhos em package.json ou se erros foram encobertos com @ts-ignore. Ao vincular o Husky e o lint-staged, qualquer código duplicado que exceda 2% no momento do commit é bloqueado imediatamente.
Para dividir o trabalho, siga 3 etapas. O modelo de ponta divide o trabalho e cria um TODO.md. Em seguida, um modelo de bom custo-benefício implementa cada item. Por fim, um desenvolvedor sênior verifica o git diff. Usando essa estrutura, é possível economizar mais de 70% nos custos em comparação a depender de um único modelo de fronteira.