Description
Oscar, une architecture d'agent contributeur open-source, est un projet axé sur l'amélioration du développement logiciel open-source en créant des agents automatisés pour la maintenance des projets. La conviction fondamentale est qu'une charge de travail considérable dans la maintenance des projets open-source, petits et grands, peut être réduite. Les grands modèles linguistiques (LLM) offrent de nouvelles possibilités aux agents pour interagir de manière fluide avec les personnes grâce à l'analyse sémantique du langage naturel, tel que les rapports de problèmes et les instructions des mainteneurs, et en convertissant les instructions en langage naturel en code de programme. Bien que les LLM soient un composant essentiel, la majorité des actions d'un agent impliqueront l'exécution de code standard et déterministe. Contrairement à de nombreuses utilisations de LLM axées sur le développement, Oscar ne vise pas à augmenter ou à remplacer le processus d'écriture de code. Au lieu de cela, il se concentre sur les aspects moins attrayants de la maintenance, tels que le traitement des problèmes entrants, la mise en correspondance des questions avec la documentation existante, et des tâches similaires.
Oscar est fondamentalement une expérience, dont la direction future et les apprentissages ne sont pas encore entièrement déterminés. Le prototype initial, le bot @gabyhelp, a déjà démontré de nombreuses interactions réussies dans le traqueur de problèmes Go. Actuellement développé sous le projet Go, Oscar pourrait potentiellement être détaché en un projet distinct à l'avenir. Les objectifs concrets du projet incluent la réduction de l'effort des mainteneurs pour résoudre les problèmes et les listes de modification (CL/pull requests), la diminution de l'effort requis pour répondre aux questions des forums, et la possibilité pour plus d'individus de devenir des mainteneurs productifs. Un objectif clé non atteint est l'automatisation du codage ; l'accent reste mis sur l'automatisation de la charge de travail des mainteneurs.
L'approche est centrée sur la construction d'une architecture réutilisable et extensible que tout projet logiciel peut adapter pour créer des agents personnalisés. Oscar vise à résoudre la charge de travail des mainteneurs, qui n'est pas unique au projet Go. Les capacités clés identifiées incluent l'indexation et la mise en évidence du contexte pertinent du projet lors des interactions avec les contributeurs, l'utilisation du langage naturel pour contrôler des outils déterministes, et l'analyse des rapports de problèmes, des CL/PR, et des discussions de groupe pour les améliorer en temps réel, les étiqueter et les acheminer de manière appropriée. Les LLM font partie intégrante de ces capacités en raison de leur force en traitement du langage naturel, tandis que le code déterministe gère l'exécution. Le projet met l'accent sur l'utilisation des LLM pour l'analyse sémantique et la traduction du langage naturel vers le programme, en s'appuyant sur le code déterministe pour le reste.
Une capacité cruciale est l'indexation et la mise en évidence du contexte pertinent. Les projets logiciels sont complexes, et les mainteneurs ne peuvent pas toujours conserver tous les détails pertinents. Oscar utilise des embeddings LLM pour créer un moteur de recherche de projet, indexant la documentation, les problèmes et les discussions. Lorsqu'un nouveau problème survient, un agent peut utiliser cet index pour trouver le contexte pertinent, tel que des problèmes passés similaires ou une documentation pertinente, et répondre avec des liens. Cela a montré des avantages tels que la mise en évidence des problèmes en double, la fourniture de contexte aux contributeurs, et le gain de temps pour les mainteneurs en les orientant vers des discussions passées ou des rapports de bugs pertinents. L'interaction immédiate de l'agent après le dépôt d'un rapport est également vitale pour engager les rapporteurs tant qu'ils sont encore disponibles et engagés.
Une autre capacité clé est l'utilisation du langage naturel pour contrôler des outils déterministes. À mesure que les projets grandissent, le nombre d'outils augmente, rendant difficile leur suivi et leur utilisation. Oscar envisage des installations pour modifier les commentaires des problèmes, ajouter des étiquettes ou attribuer des personnes en fonction de demandes en langage naturel. Les LLM sont aptes à traduire les intentions en langage naturel en formes exécutables comme les invocations d'outils. Des expériences préliminaires avec Gemini montrent des promesses dans la sélection et l'invocation d'outils. Cette approche, qui utilise les LLM pour convertir le langage naturel en utilisation d'outils déterministes, est considérée comme plus efficace qu'une approche pure LLM de type « baguette magique », car elle permet une exécution déterministe et une vérification plus facile.
La troisième capacité importante concerne l'analyse des rapports de problèmes et des CL/PR. Au-delà de la liaison des problèmes connexes, Oscar prévoit d'intégrer l'analyse sémantique, telle que l'identification du sujet principal d'un problème pour un étiquetage approprié (par exemple, « performance »). Il vise également à déterminer si plus d'informations sont nécessaires pour qu'un rapport soit utile, comme demander un lien vers un programme de reproduction ou intégrer du code. L'agent pourrait potentiellement exécuter des outils d'exécution en bac à sable pour identifier les versions contenant des bugs ou utiliser git bisect pour localiser les commits introduisant des bugs. Ces analyses sont plus efficaces lorsqu'elles sont effectuées immédiatement après le dépôt d'un rapport, en tirant parti de la disponibilité 24h/24 et 7j/7 de l'agent.
Le premier prototype, Gaby (« Go AI bot »), opère dans le traqueur de problèmes Go, postant sous @gabyhelp. Son code source se trouve dans internal/gaby. Gaby indexe le contenu des problèmes Go, de la documentation Go, des revues de code Gerrit et des discussions du projet Go/golang-nuts, lui permettant de répondre aux nouveaux problèmes avec des liens pertinents. L'architecture de Gaby est conçue pour la flexibilité, lui permettant de fonctionner sur divers services d'hébergement, d'utiliser différents LLM, couches de stockage et bases de données vectorielles. Le prototype actuel utilise GCP Cloud Run avec le LLM Gemini de Google et Google Cloud Firestore. Le projet reconnaît également l'existence de @gopherbot, un agent déterministe de longue date dans le projet Go, et vise à fusionner éventuellement @gabyhelp dans @gopherbot en reconstruisant @gopherbot comme un agent Oscar, recherchant une méthode de configuration plus légère utilisant le langage naturel.
Fonctionnalités principales de Oscar
Agent automatisé pour la maintenance open-source
Réduit la charge de travail des mainteneurs en traitant les problèmes et les requêtes
Exploite les LLM pour la compréhension du langage naturel et l'analyse sémantique
Utilise du code déterministe pour une exécution fiable des tâches
Indexe et met en évidence le contexte pertinent du projet (documentation, problèmes, discussions)
Permet le contrôle du langage naturel des outils déterministes
Analyse les rapports de problèmes et les listes de modification pour un meilleur routage et étiquetage
Agent prototype @gabyhelp actif dans le traqueur de problèmes Go
Architecture extensible pour le développement d'agents personnalisés
Prend en charge l'intégration avec divers LLM, couches de stockage et bases de données vectorielles
Vise à automatiser les aspects non-codage de la maintenance open-source
Facilite un engagement plus rapide des contributeurs grâce à des réponses immédiates
Comment utiliser Oscar ?
Configurer : Définir les capacités de l'agent et se connecter aux sources de données du projet
Déployer : Héberger l'agent sur une plateforme appropriée (par exemple, service cloud)
Intégrer : Se connecter aux dépôts de projet et aux canaux de communication (par exemple, webhooks GitHub)
Entraîner/Indexer : Permettre à l'agent de traiter et d'indexer le contexte du projet à l'aide de LLM
Surveiller : Observer les interactions et les performances de l'agent dans les traqueurs de problèmes et les forums
Étendre : Développer de nouveaux comportements d'agent et intégrer des outils déterministes personnalisés
Optimiser : Affiner les réponses et l'analyse de l'agent en fonction des besoins et des retours du projet
Cas d'utilisation de Oscar
- Automatisation du triage des problèmes
- Assistance à la documentation
- Détection de problèmes en double
- Réduction de la charge de travail des mainteneurs
- Support aux contributeurs
- Analyse des listes de modification
- Mise en évidence du contexte
- Intégration d'outils






