← Últimos artigos
💻 computer science

AgentSZZ: Teaching the LLM Agent to Play Detective with Bug-Inducing Commits

O artigo apresenta o AgentSZZ, um framework baseado em agentes de IA que supera as limitações dos algoritmos SZZ tradicionais ao utilizar um processo iterativo de investigação e ferramentas específicas para identificar com precisão commits que introduzem bugs, especialmente em cenários complexos como mudanças entre arquivos e commits fantasmas, alcançando ganhos significativos de desempenho em relação aos métodos existentes.

Autores originais: Yunbo Lyu, Jieke Shi, Hong Jin Kang, Ratnadira Widyasari, Junda He, Yuqing Niu, Chengran Yang, Junkai Chen, Zhou Yang, Julia Lawall, David Lo

Publicado 2026-04-07
📖 4 min de leitura☕ Leitura rápida

Autores originais: Yunbo Lyu, Jieke Shi, Hong Jin Kang, Ratnadira Widyasari, Junda He, Yuqing Niu, Chengran Yang, Junkai Chen, Zhou Yang, Julia Lawall, David Lo

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ê é um detetive particular e alguém te entrega um relatório de um crime: "O código do nosso programa quebrou aqui". O seu trabalho é encontrar quem escreveu a linha de código que causou esse erro, mesmo que tenha sido anos atrás e em um arquivo totalmente diferente.

Esse é o desafio que o AgentSZZ resolve. Vamos descomplicar como isso funciona, usando uma analogia de detetive.

O Problema: O Detetive "Cego"

Antigamente, os programadores usavam uma ferramenta chamada SZZ (o nome de um algoritmo famoso) para achar esses culpados. Pense no SZZ tradicional como um detetive muito teimoso e limitado:

  • Ele só olha para o mesmo arquivo onde o erro foi corrigido.
  • Ele só segue o rastro de linhas que foram apagadas ou modificadas.

Onde ele falha?

  1. O "Fantasma": Às vezes, o erro foi corrigido sem apagar nenhuma linha (talvez mudando apenas uma configuração). O detetive tradicional fica confuso e diz: "Não tem nada aqui, não há culpado".
  2. O "Cruzamento de Arquivos": O erro pode ter sido introduzido em um arquivo de biblioteca (como biblioteca.c), mas a correção foi feita em um arquivo de driver (como motor.c). O detetive tradicional só olha no motor.c e perde o rastro.

Isso significa que cerca de 25% dos crimes (erros de código) nunca são resolvidos por esses métodos antigos.

A Solução: O Agente Detetive (AgentSZZ)

Os autores criaram o AgentSZZ. Em vez de ser um robô que segue um roteiro fixo, eles criaram um Agente de IA que age como um detetive humano inteligente e curioso.

Aqui está como ele funciona, passo a passo:

1. A Caixa de Ferramentas Especializada

Um detetive humano não usa apenas uma lupa. Ele usa álbuns de fotos, mapas, interrogatórios e bancos de dados. O AgentSZZ tem uma "caixa de ferramentas" de 5 instrumentos específicos para investigar código:

  • Lupa (git blame): Olha quem tocou na linha específica.
  • Histórico (git log): Vê a história de quem mudou o que.
  • Busca Global (git grep): Procura por nomes de funções em todos os arquivos do projeto, não apenas no atual.
  • Visão de Raio-X (git show): Olha o conteúdo exato de uma mudança antiga.

2. O Processo de Investigação (O "Loop ReAct")

Diferente dos antigos que seguiam um roteiro rígido (A -> B -> C), o AgentSZZ pensa e age em ciclos:

  1. Observar: Ele olha para o erro.
  2. Pensar: "Hmm, a correção está aqui, mas o erro parece vir de outra parte. Vou usar a ferramenta de busca global."
  3. Agir: Ele usa a ferramenta de busca para procurar em outros arquivos.
  4. Aprender: Se a busca der em um beco sem saída, ele muda de estratégia. Ele não desiste; ele tenta outro caminho.

Isso é chamado de ReAct (Raciocinar + Agir). É como um detetive que, ao encontrar uma pista falsa, volta atrás e decide investigar um suspeito diferente, em vez de continuar batendo na mesma porta.

3. O "Resumo Inteligente" (Compressão)

Imagine que o detetive recebe 1.000 páginas de documentos. Se ele ler tudo, vai ficar exausto e gastar muito dinheiro (em tokens de IA).
O AgentSZZ tem um assistente de resumo que lê esses documentos e diz: "Ignore as páginas de capa e os endereços, foque apenas nas assinaturas e nas linhas de código alteradas". Isso economiza tempo e dinheiro, mantendo apenas as pistas importantes.

Os Resultados: O Detetive de Elite

Os pesquisadores testaram esse novo agente em três grandes "cenas de crime" (bases de código do Linux, GitHub e Apache).

  • Comparação: O AgentSZZ foi muito melhor que os melhores métodos anteriores (incluindo outros que usavam IA, mas de forma "burra" e fixa).
  • O Grande Salto:
    • Nos casos de "Fantasma" (onde não havia linhas apagadas), ele melhorou a taxa de sucesso em 60%.
    • Nos casos de "Cruzamento de Arquivos" (erro em um lugar, correção em outro), a melhoria foi absurda: 300%. Ele achou culpados que os outros nem sabiam que existiam.

Resumo da Ópera

O AgentSZZ ensinou uma Inteligência Artificial a não ser apenas um "leitor de código", mas um investigador ativo.

  • Antes: Um robô que olhava apenas onde o erro foi corrigido e dizia "não encontrei nada" se o rastro estivesse em outro lugar.
  • Agora: Um detetive que usa ferramentas certas, pensa estrategicamente, ignora ruídos desnecessários e consegue rastrear o culpado mesmo que ele tenha se escondido em outro arquivo ou anos atrás.

É como trocar um policial que só olha a cena do crime por um detetive que vai até a casa do suspeito, revira o arquivo e encontra a prova que faltava.

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.

Experimentar Digest →