CODENS: Transforming Code Changes into Living, Accessible, and Queryable Documentation
CODENS est un système qui transforme les pull requests en une documentation vivante et interrogeable en construisant de manière incrémentale un graphe de connaissances logicielles typé pour permettre un questionnement au niveau du dépôt guidé par des agents, comme le démontre son évaluation réussie sur un projet de production Ruby on Rails.
Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète
Imaginez que vous déambulez dans une immense bibliothèque ancienne où les livres sont constamment en train d'être réécrits. Chaque fois qu'un nouveau chapitre est ajouté, qu'une note est griffonnée dans la marge ou qu'une page est arrachée et remplacée, l'histoire change. Dans le monde du logiciel, cette bibliothèque est la « base de code », et les notes sont les « pull requests » — les tickets numériques que les développeurs utilisent pour proposer des changements. Le problème est que l'« histoire » du fonctionnement du logiciel (sa documentation) se perd souvent dans le chaos de ces changements. Les développeurs finissent par deviner comment les pièces s'assemblent car les instructions sont éparpillées à travers des milliers de fichiers et de vieux journaux de discussion.
Pour résoudre cela, des scientifiques ont commencé à construire des « graphes de connaissances ». Voyez-les non pas comme une simple liste de faits, mais comme une carte géante et vivante où chaque morceau de code est une ville, et les connexions entre eux sont des routes. Si vous modifiez une ville, la carte met automatiquement à jour les routes qui y mènent. Une autre idée clé est la « Génération Augmentée par Récupération » (RAG), qui revient à donner à un bibliothécaire super intelligent un ensemble spécifique de livres à lire avant qu'il ne réponde à votre question, garantissant qu'il ne se contente pas de deviner, mais qu'il trouve réellement la vérité dans le texte. La grande question que posent les chercheurs est la suivante : pouvons-nous construire une carte qui ne se contente pas de montrer la bibliothèque telle qu'elle est aujourd'hui, mais qui se souvient de chaque changement effectué, transformant l'historique des mises à jour de code en un guide vivant et interrogeable ?
Voici CODENS, un nouveau système conçu pour faire précisément cela. Imaginez CODENS comme un archiviste magique et hyper organisé qui veille sur un projet logiciel comme une plateforme web Ruby on Rails. Au lieu de simplement lire la version finale du code, CODENS regarde le « film » de l'histoire du projet. Il commence par scanner l'intégralité de la base de code pour construire une carte squelette, identifiant 1 739 « pièces » différentes (comme des contrôleurs, des modèles et des vues) basées sur les règles standards du framework.
Ensuite, la magie opère. CODENS rejoue l'histoire du projet, une pull request à la fois, comme si l'on regardait une vidéo en accéléré de la construction d'un bâtiment. Pour chaque changement, il ne se contente pas de regarder les nouvelles briques ; il demande à une IA puissante (un LLM) d'expliquer pourquoi le changement a été effectué et comment il s'intègre avec ce qui existait déjà. Crucialement, il ne se contente pas d'écraser l'ancienne histoire ; il fusionne les nouveaux détails avec les anciens. Si un développeur ajoute un nouveau bouton sur une page, CODENS met à jour la carte pour montrer que le bouton existe, mais il conserve également l'historique de ce à quoi la page ressemblait auparavant. Cela crée une couche de « documentation vivante » qui devient plus intelligente et plus détaillée à chaque mise à jour.
Une fois cette carte construite, CODENS offre trois façons de l'explorer, comme différents modes de voyage. Vous pouvez effectuer une « recherche vectorielle » rapide, ce qui revient à demander au bibliothécaire des livres ayant des mots similaires. Vous pouvez effectuer une « récupération multi-sauts », ce qui revient à suivre une piste de miettes de pain d'une pièce à l'autre pour voir comment elles sont connectées. Mais le mode le plus puissant est la « traversée guidée par agent ». Ici, un agent d'IA agit comme un détective avec une lampe de poche. Il ne se contente pas de suivre un chemin fixe ; il décide quelles portes ouvrir, quels chemins prendre, et écrit même ses propres requêtes personnalisées pour trouver la réponse exacte. Il utilise des outils pour jeter un coup d'œil à l'intérieur de nœuds spécifiques, vérifier leurs voisins ou exécuter des recherches complexes pour assembler une réponse complète.
Les chercheurs ont testé ce système sur un projet industriel réel comprenant plus de 1 700 fichiers et des centaines de pull requests. Ils ont posé 11 questions différentes qu'un vrai développeur pourrait avoir, telles que « Comment fonctionne cette fonctionnalité ? » ou « Que se passe-t-il quand je clique sur ce bouton ? ». Les résultats étaient prometteurs. Le système a obtenu des scores très élevés en matière d'exactitude et de « fidélité », ce qui signifie que les réponses étaient fondées sur le code réel et n'inventaient rien. Sur une échelle de 1 à 5, des experts humains ont évalué la pertinence des réponses à une moyenne de 4,09 et l'exhaustivité à 4,45. Le système était également capable de suivre le coût et le temps de chaque requête, montrant que bien que le mode détective (agent) prenne plus de temps et de jetons (tokens), il fournissait les réponses les plus approfondies.
Cependant, l'article souligne aussi un petit accroc. Bien que le système ait été excellent pour trouver l'information pertinente, la manière dont il présentait les réponses semblait parfois un peu trop technique. Les examinateurs humains ont noté que certaines réponses étaient « trop détaillées » ou « trop centrées sur le code », listant des citations ligne par ligne alors qu'un résumé plus simple aurait été préférable. C'est comme si le bibliothécaire vous donnait le numéro de page exact et le paragraphe d'un livre, mais ne vous résumait pas l'histoire. Les auteurs suggèrent que la prochaine étape n'est pas nécessairement de trouver de meilleures informations, mais d'apprendre au système à synthétiser ces informations en explications plus claires et plus conviviales.
En bref, CODENS suggère que nous pouvons transformer l'historique désordonné et dispersé des changements de code en une mémoire structurée et interrogeable pour le logiciel. Il prouve qu'en traitant les pull requests comme un flux continu de connaissances plutôt que comme de simples correctifs temporaires, nous pouvons construire un système qui aide les développeurs à comprendre des bases de code complexes beaucoup plus rapidement. Bien que ce ne soit pas encore un problème parfaitement résolu — surtout concernant la manière de faire en sorte que les réponses ressemblent davantage à un humain serviable et moins à un robot lisant un manuel — cela offre un aperçu saisissant d'un futur où la documentation logicielle est vivante, à jour et toujours prête à répondre à vos questions.
Noyé(e) sous les articles dans votre domaine ?
Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.