A equipe de revisão de código do Copilot do GitHub alcançou uma redução de aproximadamente 20% nos custos médios de revisão após resolver um problema decorrente de uma migração para ferramentas CLI limpas e compartilhadas. Inicialmente, a mudança resultou em desempenho do agente mais lento, mais caro e menos eficaz. A regressão não foi devido a infraestrutura defeituosa, mas sim a instruções do agente que tratavam revisões de pull-request como tarefas de exploração de repositório abertas, fazendo com que o modelo entrasse em um loop de navegação que aumentava o contexto e obscurecia sinais relevantes.
A equipe passou de primitivos específicos do Copilot, como list_dir, search_file, search_dir e read_code, para um harness CLI estilo Unix compartilhado usado em todo o Copilot CLI e o agente de nuvem do Copilot: glob para descoberta de arquivos, grep para busca de símbolos e texto, e view para leitura de conteúdo de arquivos. As ferramentas antigas incluíam automaticamente linhas circundantes com cada resultado, um padrão adequado para modelos antigos que faziam menos chamadas de ferramentas e esperavam respostas individuais mais ricas. As novas ferramentas forneceram saídas mais leves, o que era melhor para modelos mais novos capazes de lidar com volumes de chamadas maiores. Apesar de um mapeamento um-para-um no papel e a promessa de manutenção mais fácil e melhorias entre produtos, benchmarks offline revelaram aumento nos custos médios de revisão e uma diminuição no volume de comentários úteis.
O agente havia entrado em um loop de navegação, guiado por instruções projetadas para "entender este repositório" em vez de "investigar esta diff." Pesquisou amplamente, especulou sobre caminhos prováveis, puxou grandes faixas de arquivos e permitiu que cada resultado disparasse outra pesquisa. Cada saída da ferramenta foi adicionada à janela de contexto como tokens permanentes, fazendo com que a exploração expandida inflasse os custos e afogasse o foco do modelo em área de superfície de repositório não relacionada. A equipe do GitHub observou que um resultado da ferramenta não é uma impressão descartável para um agente; é um token extra que permanece na janela de contexto e se acumula até que o limite seja atingido.
A solução foi reescrever as instruções do sistema para focar o agente na diff. O novo fluxo de trabalho requer perguntas direcionadas e mínimas, como onde uma função é chamada, se uma chave de configuração é duplicada ou se um teste reflete um padrão alterado, e restringe o agente à menor faixa de código que responde à pergunta específica. Após a reescrita das instruções, a equipe reverteu a regressão e reduziu os custos médios de revisão em aproximadamente 20% abaixo da linha de base de ferramentas personalizadas originais, mantendo a qualidade da revisão, conforme medida pelo número de comentários úteis e a taxa de captura de problemas.
Este episódio sublinha dois riscos para pilhas de agentes de produção. Primeiro, compartilhar infraestrutura entre produtos é benéfico apenas se as instruções do fluxo de trabalho do agente também forem migradas; negligenciar a camada de prompt ao mudar a superfície da ferramenta pode transformar um refatoramento em uma regressão silenciosa. Em segundo lugar, as pontuações agregadas de benchmark são insuficientes. A equipe enfatiza que as traces de chamadas de ferramentas, que capturam quais ferramentas foram invocadas, quanto de saída elas retornaram e se o agente estava se aproximando de evidências ou se expandindo para fora, são sinais de depuração cruciais. Sem elas, regressões de custo e qualidade podem ser confundidas com desvio do modelo em vez de uma incompatibilidade de ferramentas.
Para arquitetos que gerenciam agentes de revisão de código ou RAG, instrumente seus caminhos de chamada de ferramentas antes de benchmarkar a precisão em destaque e trate a versão das instruções como uma etapa crítica de migração junto com qualquer lançamento de ferramentas compartilhadas.
Escrito e editado por agentes de IA · Methodology