Resolving Java Code Repository Issues with iSWE Agent

O artigo apresenta o iSWE Agent, um sistema automatizado que combina técnicas baseadas em regras e modelos de linguagem para resolver problemas em repositórios de código Java, alcançando desempenho superior a métodos anteriores em benchmarks específicos.

Jatin Ganhotra, Sami Serhan, Antonio Abu Nassar, Avraham Shinnar, Ziv Nevo, Martin Hirzel

Publicado Fri, 13 Ma
📖 4 min de leitura☕ Leitura rápida

Each language version is independently generated for its own context, not a direct translation.

Imagine que você tem uma biblioteca gigante de livros (o código de um software) e alguém deixa um bilhete dizendo: "Ei, na página 42, o personagem está falando com a voz errada, e na página 105, o livro está faltando uma página inteira". Resolver esse problema manualmente exigiria que um especialista lesse centenas de páginas, entendesse a história inteira e fizesse as correções certas.

O iSWE Agent é como um super-assistente de IA criado pela IBM para fazer exatamente isso, mas com um foco especial em Java, a linguagem usada pela maioria das grandes empresas do mundo (bancos, seguros, sistemas de voo).

Aqui está a explicação do papel, usando analogias simples:

1. O Problema: O "Vício" em Python

Até agora, a maioria desses assistentes de IA era treinada principalmente para resolver problemas em Python (uma linguagem popular, mas mais simples). É como se tivéssemos muitos mecânicos de carros, mas todos fossem especialistas apenas em carros pequenos e leves. Quando tentamos usar esses mesmos mecânicos para consertar um caminhão pesado (Java), eles tropeçam. O Java é mais complexo, tem regras rígidas de segurança e estrutura diferente. O papel diz: "Precisamos de um mecânico que entenda especificamente de caminhões".

2. A Solução: O iSWE Agent (O Duplo Time)

Em vez de ter um único robô tentando fazer tudo de uma vez (o que costuma dar errado), o iSWE divide o trabalho em dois especialistas que trabalham em equipe:

  • O Detetive (Agente de Localização):

    • O que ele faz: Ele recebe o bilhete com o problema e começa a investigar. Ele não mexe no código ainda. Ele usa "lentes de aumento" especiais (ferramentas de análise estática) para ler o código e dizer: "O erro está aqui, na página X, e também aqui, na página Y".
    • A analogia: Imagine um detetive que entra em uma casa bagunçada. Ele não move os móveis; ele apenas aponta para onde a luz queimou e onde a torneira está vazando. Ele é muito preciso porque usa regras lógicas (ferramentas de Java) para não se confundir.
    • O resultado: Ele entrega um mapa exato: "Vá até o arquivo A, linha 50, e vá até o arquivo B, linha 120".
  • O Mecânico (Agente de Edição):

    • O que ele faz: Ele pega o mapa do Detetive e vai até o local. Ele faz a troca da peça ou conserta o código.
    • A analogia: Imagine um mecânico que só entra na área de trabalho quando o detetive já marcou o local. Ele usa uma caixa de ferramentas segura. Se ele cometer um erro ao tentar consertar, ele não estraga o carro inteiro; ele apenas joga fora a tentativa e tenta de novo, sem sujar o chão da oficina.
    • Segurança: O Mecânico trabalha em uma "caixa de areia" (um ambiente isolado). Se ele tentar instalar algo que quebre o sistema, o sistema original fica intacto.

3. Por que isso é diferente? (As Ferramentas Especiais)

A maioria dos outros robôs tenta "adivinhar" o código escrevendo comandos genéricos, como se estivessem digitando no teclado de um computador aleatoriamente. Isso é perigoso e ineficiente.

O iSWE usa ferramentas feitas sob medida para Java:

  • Em vez de dizer "procure por um erro", ele usa ferramentas que entendem a estrutura do Java (classes, métodos, herança).
  • É como se, em vez de pedir para alguém procurar uma agulha no palheiro olhando com os olhos, nós lhe dávamos um detector de metal que sabe exatamente como a agulha de Java se parece.

4. Os Resultados: Mais Rápido, Mais Barato e Melhor

Os autores testaram esse sistema em dois grandes "campeonatos" de resolução de problemas (Multi-SWE-bench e SWE-PolyBench) focados em Java.

  • Desempenho: O iSWE ficou no topo das listas, resolvendo mais problemas do que os outros sistemas.
  • Custo: Ele gastou 2 a 3 vezes menos dinheiro para funcionar. Como ele é mais eficiente e não precisa de tantas tentativas (voltas), a conta da "conta de luz" (custo da IA) cai drasticamente.
  • Precisão: Ele encontrou os lugares certos para consertar com muito mais frequência do que os concorrentes.

Resumo da Ópera

O papel apresenta o iSWE como um sistema inteligente que resolve bugs em softwares escritos em Java. Ele funciona como uma equipe de dois: um Detetive que usa regras lógicas para achar onde está o erro, e um Mecânico que conserta o código com segurança.

A grande inovação é que eles pararam de tentar usar ferramentas genéricas (que funcionam bem em Python) e criaram ferramentas específicas para a complexidade do Java. O resultado? Um sistema que é mais barato, mais seguro e muito mais eficaz para o mundo corporativo, onde o Java é rei.