Descrição
Oscar, uma arquitetura de agente contribuinte de código aberto, é um projeto focado em aprimorar o desenvolvimento de software de código aberto através da criação de agentes automatizados para manutenção de projetos. A crença central é que o trabalho repetitivo significativo na manutenção de projetos de código aberto, tanto grandes quanto pequenos, pode ser reduzido. Modelos de Linguagem Grandes (LLMs) oferecem novas possibilidades para agentes interagirem suavemente com pessoas através da análise semântica de linguagem natural, como relatórios de issues e instruções de mantenedores, e convertendo instruções de linguagem natural em código de programa. Embora os LLMs sejam um componente crítico, a maioria das ações de um agente envolverá a execução de código padrão e determinístico. Ao contrário de muitos usos de LLM focados em desenvolvimento, Oscar não visa aumentar ou substituir o processo de escrita de código. Em vez disso, foca nos aspectos menos envolventes da manutenção, como processar issues recebidas, corresponder perguntas à documentação existente e tarefas semelhantes.
Oscar é fundamentalmente um experimento, com sua direção futura e aprendizados ainda a serem totalmente determinados. O protótipo inicial, o bot @gabyhelp, já demonstrou inúmeras interações bem-sucedidas no rastreador de issues do Go. Atualmente desenvolvido sob o projeto Go, Oscar pode potencialmente ser desmembrado em um projeto separado no futuro. Os objetivos concretos do projeto incluem reduzir o esforço dos mantenedores na resolução de issues e change lists (CLs/pull requests), diminuir o esforço necessário para responder a perguntas em fóruns e permitir que mais indivíduos se tornem mantenedores produtivos. Um objetivo chave não é automatizar a codificação; o foco permanece na automação do trabalho repetitivo dos mantenedores.
A abordagem centra-se na construção de uma arquitetura reutilizável e extensível que qualquer projeto de software pode adaptar para criar agentes personalizados. Oscar visa abordar o trabalho repetitivo dos mantenedores, que não é exclusivo do projeto Go. As capacidades identificadas incluem indexar e apresentar o contexto relevante do projeto durante as interações dos contribuidores, usar linguagem natural para controlar ferramentas determinísticas e analisar relatórios de issues, CLs/PRs e discussões em grupo para melhorá-los em tempo real, rotulá-los e encaminhá-los adequadamente. LLMs são integrais a essas capacidades devido à sua força no processamento de linguagem natural, enquanto o código determinístico lida com a execução. O projeto enfatiza o uso de LLMs para análise semântica e tradução de linguagem natural para programa, confiando em código determinístico para o restante.
Uma capacidade crucial é indexar e apresentar o contexto relacionado do projeto. Projetos de software são complexos, e os mantenedores não podem sempre reter todos os detalhes relevantes. Oscar usa embeddings de LLM para criar um motor de busca de projetos, indexando documentação, issues e discussões. Quando uma nova issue surge, um agente pode usar este índice para encontrar contexto relacionado, como issues passadas semelhantes ou documentação relevante, e responder com links. Isso mostrou benefícios como apresentar issues duplicadas, fornecer contexto aos contribuidores e economizar tempo dos mantenedores apontando-os para discussões passadas relevantes ou relatórios de bugs. A interação imediata do agente após o registro de um relatório é vital para engajar os relatores enquanto eles ainda estão disponíveis e engajados.
Outra capacidade chave é usar linguagem natural para controlar ferramentas determinísticas. À medida que os projetos crescem, o número de ferramentas aumenta, tornando difícil rastreá-las e usá-las. Oscar prevê facilidades para editar comentários de issues, adicionar rótulos ou atribuir pessoas com base em solicitações de linguagem natural. LLMs são proficientes em traduzir intenções de linguagem natural para formas executáveis, como invocações de ferramentas. Experimentos preliminares com Gemini mostram promessa na seleção e invocação de ferramentas. Essa abordagem, que usa LLMs para converter linguagem natural em uso determinístico de ferramentas, é considerada mais eficaz do que uma abordagem pura de "varinha mágica" com LLM, pois permite execução determinística e verificação mais fácil.
A terceira capacidade importante envolve a análise de relatórios de issues e CLs/PRs. Além de vincular issues relacionadas, Oscar planeja incorporar análise semântica, como identificar o tópico principal de uma issue para rotulagem apropriada (por exemplo, "desempenho"). Ele também visa determinar se mais informações são necessárias para que um relatório seja útil, como solicitar um link de programa de reprodução ou incorporar código. O agente poderia potencialmente executar ferramentas de execução em sandbox para identificar releases contendo bugs ou usar git bisect para localizar commits que introduziram bugs. Essas análises são mais eficazes quando realizadas imediatamente após o registro de um relatório, aproveitando a disponibilidade 24/7 do agente.
O primeiro protótipo, Gaby ("Go AI bot"), opera dentro do rastreador de issues do Go, postando como @gabyhelp. Seu código-fonte está em internal/gaby. Gaby indexa conteúdo de issues do Go, documentação do Go, revisões de código Gerrit e discussões do projeto Go/golang-nuts, permitindo que ele responda a novas issues com links relevantes. A arquitetura de Gaby é projetada para flexibilidade, permitindo que ele seja executado em vários serviços de hospedagem, use diferentes LLMs, camadas de armazenamento e bancos de dados vetoriais. O protótipo atual usa GCP Cloud Run com o LLM Gemini do Google e Google Cloud Firestore. O projeto também reconhece a existência do @gopherbot, um agente determinístico de longa data no projeto Go, e visa eventualmente mesclar @gabyhelp em @gopherbot reconstruindo @gopherbot como um agente Oscar, buscando um método de configuração mais leve usando linguagem natural.
Recursos principais de Oscar
Agente automatizado para manutenção de código aberto
Reduz o trabalho repetitivo de mantenedores processando issues e solicitações
Utiliza LLMs para compreensão de linguagem natural e análise semântica
Emprega código determinístico para execução confiável de tarefas
Indexa e apresenta contexto relevante do projeto (documentação, issues, discussões)
Permite controle de linguagem natural sobre ferramentas determinísticas
Analisa relatórios de issues e change lists para melhor roteamento e rotulagem
Agente protótipo @gabyhelp ativo no rastreador de issues do Go
Arquitetura extensível para desenvolvimento de agentes personalizados
Suporta integração com vários LLMs, camadas de armazenamento e bancos de dados vetoriais
Visa automatizar aspectos não relacionados à codificação da manutenção de código aberto
Facilita engajamento mais rápido de contribuidores através de respostas imediatas
Como usar Oscar?
Configurar: Definir capacidades do agente e conectar a fontes de dados do projeto
Implantar: Hospedar o agente em uma plataforma adequada (por exemplo, serviço de nuvem)
Integrar: Conectar a repositórios de projeto e canais de comunicação (por exemplo, webhooks do GitHub)
Treinar/Indexar: Permitir que o agente processe e indexe o contexto do projeto usando LLMs
Monitorar: Observar interações e desempenho do agente em rastreadores de issues e fóruns
Estender: Desenvolver novos comportamentos de agente e integrar ferramentas determinísticas personalizadas
Otimizar: Refinar respostas e análises do agente com base nas necessidades e feedback do projeto
Casos de uso de Oscar
- Automação de Triagem de Issues
- Assistência de Documentação
- Detecção de Issues Duplicadas
- Redução de Trabalho Repetitivo de Mantenedores
- Suporte a Contribuidores
- Análise de Change Lists
- Apresentação de Contexto
- Integração de Ferramentas






