CODENS: Transforming Code Changes into Living, Accessible, and Queryable Documentation
CODENS ist ein System, das Pull Requests in lebendige, abfragbare Dokumentation transformiert, indem es inkrementell einen typisierten Software-Wissensgraphen aufbaut, um agentengesteuertes Fragenstellen auf Repository-Ebene zu ermöglichen, wie durch seine erfolgreiche Evaluierung an einem produktiven Ruby-on-Rails-Projekt demonstriert wurde.
Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
Stellen Sie sich vor, Sie wandern durch eine riesige, antike Bibliothek, in der die Bücher ständig umgeschrieben werden. Jedes Mal, wenn ein neues Kapitel hinzugefügt, eine Notiz an den Rand gekritzelt oder eine Seite herausgerissen und ersetzt wird, ändert sich die Geschichte. In der Welt der Software ist diese Bibliothek die „Codebasis“, und die Notizen sind „Pull Requests“ – die digitalen Tickets, mit denen Entwickler Änderungen vorschlagen. Das Problem ist, dass die „Geschichte“ darüber, wie die Software funktioniert (die Dokumentation), im Chaos dieser Änderungen oft verloren geht. Entwickler müssen dann raten, wie alles zusammenpasst, weil die Anweisungen über tausende von Dateien und alte Chat-Protokolle verstreut sind.
Um dies zu lösen, haben Wissenschaftler begonnen, „Knowledge Graphs“ (Wissensgraphen) zu bauen. Betrachten Sie diese nicht als eine einfache Liste von Fakten, sondern als eine riesige, lebendige Landkarte, auf der jedes Stück Code eine Stadt ist und die Verbindungen zwischen ihnen die Straßen darstellen. Wenn Sie eine Stadt ändern, aktualisiert die Karte automatisch die Straßen, die zu ihr führen. Eine weitere Schlüsselidee ist „Retrieval-Augmented Generation“ (RAG), was so ist, als würde man einem superintelligenten Bibliothekar ein spezifisches Set an Büchern zum Lesen geben, bevor er Ihre Frage beantwortet, um sicherzustellen, dass er nicht einfach nur rät, sondern tatsächlich die Wahrheit im Text findet. Die große Frage, die Forscher stellen, lautet: Können wir eine Karte bauen, die nicht nur zeigt, wie die Bibliothek heute aussieht, sondern die sich an jede einzelne Änderung erinnert, die jemals gemacht wurde, um die Geschichte der Code-Updates in einen lebendigen, durchsuchbaren Leitfaden zu verwandeln?
Hier kommt CODENS ins Spiel, ein neues System, das genau dazu entwickelt wurde. Stellen Sie sich CODENS als einen magischen, hyperorganisierten Archivar vor, der ein Softwareprojekt wie eine Ruby-on-Rails-Webplattform bewacht. Anstatt nur die finale Version des Codes zu lesen, beobachtet CODENS den „Film“ der Projektgeschichte. Es beginnt damit, die gesamte Codebasis zu scannen, um eine Skelett-Karte zu erstellen, wobei es 1.739 verschiedene „Räume“ (wie Controller, Models und Views) basierend auf den Standardregeln des Frameworks identifiziert.
Dann geschieht die Magie. CODENS spielt die Geschichte des Projekts ab, einen Pull Request nach dem anderen, wie beim Anschauen eines Zeitraffer-Videos vom Bau eines Gebäudes. Für jede Änderung schaut es nicht nur auf die neuen Ziegel; es fragt eine leistungsstarke KI (ein LLM), warum die Änderung vorgenommen wurde und wie sie in das bereits Vorhandene passt. Entscheidend ist, dass es die alte Geschichte nicht einfach überschreibt; es verschmilzt die neuen Details mit den alten. Wenn ein Entwickler einen neuen Button zu einer Seite hinzufügt, aktualisiert CODENS die Karte, um zu zeigen, dass der Button existiert, behält aber gleichzeitig die Historie davon, wie die Seite vorher aussah. Dies schafft eine Ebene der „lebendigen Dokumentation“, die mit jedem Update intelligenter und detaillierter wird.
Sobald diese Karte erstellt ist, bietet CODENS drei Möglichkeiten, sie zu erkunden, wie verschiedene Fortbewegungsmodi. Sie können eine schnelle „Vektorsuche“ durchführen, was so ist, als würde man den Bibliothekar nach Büchern mit ähnlichen Wörtern fragen. Sie können „Multi-Hop-Retrieval“ nutzen, was so ist, als würde man einem Brotkrumenpfad von einem Raum zum nächsten folgen, um zu sehen, wie sie miteinander verbunden sind. Aber der leistungsstärkste Modus ist die „Agent-gestützte Traversal“ (agentenbasierte Begehung). Hier agiert ein KI-Agent wie ein Detektiv mit einer Taschenlampe. Er folgt nicht nur einem festen Pfad; er entscheidet selbst, welche Türen er öffnet, welche Wege er nimmt, und schreibt sogar seine eigenen benutzerdefinierten Abfragen, um die exakte Antwort zu finden. Er nutzt Werkzeuge, um in spezifische Knoten hineinzuschauen, deren Nachbarn zu prüfen oder komplexe Suchen durchzuführen, um ein vollständiges Bild zusammenzusetzen.
Die Forscher testeten dieses System an einem realen Industrieprojekt mit über 1.700 Dateien und hunderten von Pull Requests. Sie stellten dem System 11 verschiedene Fragen, die ein echter Entwickler haben könnte, wie etwa „Wie funktioniert diese Funktion?“ oder „Was passiert, wenn ich auf diesen Button klicke?“. Die Ergebnisse waren vielversprechend. Das System erzielte sehr hohe Werte bei der Genauigkeit und „Treue“ (Faithfulness), was bedeutet, dass die Antworten auf dem tatsächlichen Code basierten und nichts erfunden wurden. Auf einer Skala von 1 bis 5 bewerteten menschliche Experten die Relevanz der Antworten im Durchschnitt mit 4,09 und die Vollständigkeit mit 4,45. Das System war zudem in der Lage, die Kosten und die Zeit jeder Abfrage zu verfolgen, was zeigte, dass der Detektiv-Modus (Agent) zwar mehr Zeit und Token beanspruchte, aber die gründlichsten Antworten lieferte.
Es gibt jedoch einen kleinen Haken. Während das System hervorragend darin war, die richtigen Informationen zu finden, fühlte sich die Art und Weise, wie es die Antworten präsentierte, manchmal etwas zu technisch an. Die menschlichen Prüfer merkten an, dass einige Antworten „zu detailliert“ oder „zu code-zentriert“ waren, indem sie zeilenweise Zitate auflisteten, obwohl eine einfachere Zusammenfassung besser gewesen wäre. Es ist, als würde der Bibliothekar Ihnen zwar die exakte Seitenzahl und den Absatz eines Buches nennen, Ihnen aber nicht die Geschichte zusammenfassen. Die Autoren schlagen vor, dass der nächste Schritt nicht unbedingt darin besteht, bessere Informationen zu finden, sondern das System zu lehren, diese Informationen in klarere, benutzerfreundlichere Erklärungen zu synthetisieren.
Kurz gesagt: CODENS deutet darauf an, dass wir die chaotische, verstreute Historie von Code-Änderungen in ein strukturiertes, abfragbares Gedächtnis für Software verwandeln können. Es beweist, dass wir – indem wir Pull Requests als einen kontinuierlichen Wissensstrom statt nur als temporäre Korrekturen behandeln – ein System bauen können, das Entwicklern hilft, komplexe Codebasen viel schneller zu verstehen. Auch wenn es noch kein perfekt gelöstes Problem ist – insbesondere im Hinblick darauf, wie man die Antworten menschlicher und weniger wie ein Roboter klingen lässt, der ein Handbuch vorliest –, bietet es einen lebhaften Ausblick auf eine Zukunft, in der Software-Dokumentation lebendig, aktuell und immer bereit ist, Ihre Fragen zu beantworten.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.