SWE-NFI: Studying and Benchmarking Coding Agents for Non-Functional Improvements
Este artigo apresenta o SWE-NFI, um benchmark composto por 188 tarefas do mundo real e 92 regras executáveis projetadas para avaliar agentes de codificação em melhorias não funcionais, revelando que, embora os agentes alcancem alta correção funcional, eles ficam significativamente atrás dos desenvolvedores humanos na execução de melhorias de código que preservam o comportamento.
Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo
Imagine que você está ensinando um robô a escrever código. Por muito tempo, a única maneira de testar se o robô estava fazendo um bom trabalho era perguntar: "O programa funciona?". Se o robô construísse uma calculadora que somasse números corretamente, ele ganhava uma estrela de ouro. Mas, no mundo real, escrever software é como construir uma casa. Só porque o telhado não vaza e as portas abrem, não significa que a casa seja um prazer de se viver. Talvez a fiação seja uma bagunça emaranhada atrás das paredes, a pintura esteja descascando ou as instruções de como usar o interruptor de luz estejam escritas em tinta invisível. Estas são as partes "não funcionais" de uma casa: o quão fácil é de consertar, o quão segura ela é e o quão bonita ela parece.
Recentemente, programas de computador inteligentes chamados "agentes de codificação" tornaram-se muito bons em construir a estrutura básica de software. Eles conseguem corrigir erros e adicionar novos recursos. Mas ninguém realmente sabia se esses agentes também poderiam realizar o trabalho desordenado, entediante, mas super importante, de limpar o código, organizar a fiação e escrever instruções claras sem quebrar nada que já estava funcionando. Esta é a pergunta que uma equipe de pesquisadores de universidades do Canadá, China e Singapura decidiu responder. Eles queriam ver se esses ajudantes digitais poderiam ser mais do que apenas construtores funcionais e se tornarem verdadeiros zeladores de software.
Para descobrir, os pesquisadores criaram um novo teste chamado SWE-NFI. Pense neste teste como um gigante e automatizado checklist de um inspetor. Em vez de apenas verificar se um programa executa, o checklist possui 92 regras específicas sobre como o código "parece" e "parece ser". Essas regras verificam coisas como: "Você escreveu uma explicação clara para o que esta função faz?" (Documentação), "Você lidou com erros de forma segura para que o programa não travesse?" (Tratamento de Erros) e "Você usou ferramentas modernas em vez de antigas e enferrujadas?" (Restrições de Biblioteca).
Os pesquisadores construíram este teste usando 188 exemplos da vida real retirados de projetos de software reais que humanos já haviam corrigido. Eles pegaram a versão "antes" do código, entregaram-na a vários agentes de codificação e pediram que a tornassem melhor sem mudar o que ela realmente fazia. Então, usaram seu checklist de 92 regras para avaliar os agentes. Eles também utilizaram uma pontuação de "referência humana", que é o quão bem um desenvolvedor humano melhorou aquele mesmo pedaço de código no mundo real.
Os resultados foram um choque de realidade. Os melhores agentes de codificação foram, de fato, bastante bons em garantir que o código ainda funcionasse (obtendo uma taxa de aprovação de 70,0% na correção funcional). No entanto, quando se tratava de tornar o código melhor das maneiras que os humanos se importam, os agentes tiveram dificuldades. Eles ficaram aquém dos desenvolvedores humanos em quase todas as categorias.
A maior lacuna foi em "Padrões de Lógica", que é como a integridade estrutural do código. Os humanos melhoraram esta área com uma pontuação média de 1,5, mas os melhores agentes de codificação conseguiram apenas entre 0,0 e 1,3. É como se os robôs pudessem construir uma parede resistente, mas não conseguissem entender como fazer os tijolos se alinharem perfeitamente ou como adicionar um belo arco.
O estudo também encontrou algumas peculiaridades interessantes:
- Um arquivo vs. Muitos: Os agentes foram bons em corrigir um único arquivo, mas quando tinham que coordenar mudanças em vários arquivos ao mesmo tempo (como consertar a fiação da cozinha e da sala de estar ao mesmo tempo), eles ficavam muito piores.
- Custo vs. Qualidade: Os pesquisadores verificaram quanto "combustível" (tempo de computador e tokens de dados) os agentes usaram. Eles descobriram que gastar mais dinheiro ou tempo nem sempre significava melhores resultados. Um agente gastou 100 vezes mais recursos do que outro, mas não produziu melhorias de código significativamente melhores.
- Consistência: Uma vez que um agente conseguiu escrever um código que realmente funcionasse, ele era bastante consistente em fazer essas pequenas melhorias. O verdadeiro problema era apenas fazer o código funcionar em primeiro lugar.
Em resumo, o artigo sugere que, embora nossos robôs de codificação estejam ficando muito bons no "o quê" (fazer as coisas funcionarem), eles ainda têm um longo caminho a percorrer no "como" (tornar o código sustentável, seguro e limpo). Eles são excelentes aprendizes que conseguem seguir instruções, mas ainda não aprenderam a arte de serem mestres artesãos que sabem como arrumar a oficina. Os pesquisadores esperam que, ao terem este novo e rigoroso checklist, possamos ensinar a próxima geração de agentes de codificação a não apenas construir software, mas a cuidar dele.
Afogado em artigos na sua área?
Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.