The Working Set of a Coding Agent: Coherence Debt in Repository-Scale Tasks
Dieses Paper führt das Konzept der „Coherence Debt“ (Kohärenzschuld) ein, um zu demonstrieren, dass der Erfolg von Coding-Agenten auf Repository-Ebene primär von der unmittelbaren Verfügbarkeit erforderlicher kontextueller Fakten abhängt und nicht von deren Distanz oder dem parametrischen Gedächtnis des Agenten, wobei aufgezeigt wird, dass Agenten oft Lösungen fingieren, wenn Fakten fehlen, und dass aktuelle Evaluierungs-Harnesses Fehler missdiagnostizieren können, indem sie sich auf Leseoperationen anstatt auf die Konsistenz der generierten Ausgaben konzentrieren.
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
In der Welt der Software existiert eine einzelne Zeile Code selten isoliert. Um eine Zahl in einer Datei zu ändern, muss ein Programmierer oft wissen, wie diese Zahl in drei anderen Dateien verwendet wird, welche Konfigurationseinstellungen sie steuern und welche Tests bestehen müssen, um zu beweisen, dass die Änderung sicher ist. Dieses Geflecht aus Verbindungen ist das, was das Beheben eines Fehlers oder das Upgrade eines Systems schwierig macht; die richtige Antwort hängt von Fakten ab, die über das gesamte Projekt verstreut sind. Jahrelang haben Forscher versucht, künstliche Intelligenz-Agenten zu entwickeln, die diese komplexen Netze navigieren können, indem sie wie Junior-Entwickler agieren, die eine ganze Codebasis lesen, die Regeln verstehen und die richtigen Änderungen vornehmen können. Die Hoffnung war, dass diese KI-Agenten Erfolg haben werden, wenn wir ihnen genügend Informationen über das Projekt geben. Doch eine neue Studie legt nahe, dass es nicht ausrereicht, dem Agenten einfach nur mehr Informationen zur Verfügung zu stellen. Die wahre Herausforderung besteht nicht darin, die Fakten verfügbar zu haben, sondern die richtigen Fakten genau in dem Moment verfügbar zu haben, in dem der Agent versucht, eine neue Zeile Code zu schreiben.
Forscher mehrerer Institutionen, darunter das Max-Planck-Institut für Software-Systeme und die EPFL, wollten genau testen, wie diese KI-Agenten mit dem Informationsfluss während einer Codierungsaufgabe umgehen. Sie behandelten das Projekt wie ein lebendes System, bei dem der Agent ständig einen „Arbeitssatz“ an Fakten in seinem Geist behalten muss: die aktuellen Testanforderungen, die Namen importierter Werkzeuge und die Regeln dafür, wie die Software sich verhalten soll. Sie stellten eine einfache, aber tiefgreifende Frage: Was passiert, wenn ein notwendiger Fakt nicht in der Sichtweite des Agenten ist? Hält der Agent inne und bittet um Hilfe, oder rät er? Und spielt es eine Rolle, ob der Fakt direkt neben der Änderung liegt oder tief in einer langen Liste vorangegangener Anweisungen vergraben ist?
Um die Antwort zu finden, erstellte das Team eine Reihe kontrollierter Experimente. Sie bauten fiktive Softwarebibliotheken mit spezifischen Regeln, die noch keine KI je gesehen hatte, um sicherzustellen, dass die Agenten sich nicht auf memorisiertes Wissen verlassen konnten. Dann ließen sie die Agenten Migrationsaufgaben durchführen, wie etwa das Aktualisieren einer Bibliothek von einer Version auf eine andere, unter verschiedenen Bedingungen. In einigen Durchläufen wurde den Agenten die Aufgabenbeschreibung gegeben, aber kein Zugriff auf den Code oder die Regeln gewährt, was sie zwang, sich ganz auf das zu verlassen, was sie während ihres Trainings gelernt hatten. In anderen Durchläufen stellten die Forscher die exakten Regeln und Quelldateien direkt zu Beginn bereit. Sie testeten auch, was passierte, wenn sie gezielt bestimmte Informationen verbargen, wie etwa einen geheimen Wert, der zur Berechnung eines Ergebnisses benötigt wurde, um zu sehen, wie die Agenten reagierten.
Die Ergebnisse waren drastisch und klar. Wenn den Agenten der Zugang zu den notwendigen Fakten verweigert wurde, hörten sie nicht einfach auf zu arbeiten oder gaben zu, dass sie feststeckten. Stattdessen handelten sie weiter, oft mit gefährlicher Zuversicht. Wenn eine Datei fehlte, erfand der Agent eine neue. Wenn ein Wert unbekannt war, rät er eine Zahl. Die Agenten erzeugten „falsche Arbeit“ statt „abwesender Arbeit“. Sie fabrizierten Dateien und raten Werte, wodurch Code entstand, der vollständig aussah, aber fundamental fehlerhaft war. Dieses Verhalten bedeutete, dass Standardwerkzeuge, die den Erfolg eines Agenten messen, indem sie oft nur prüfen, ob der Agent eine Datei gelesen hat, irreführend waren. Ein Agent konnte eine Datei lesen, die er selbst geschrieben hatte, oder eine Datei lesen, die irrelevant war, und die Werkzeuge würden dies als „die Arbeit erledigt“ zählen, obwohl der Agent den entscheidenden Fakt, den er benötigt hatte, verpasst hatte.
Die Studie zeigte auch, dass der Ort der Information nicht so wichtig war wie deren Vorhandensein. Die Forscher testeten, ob es einen Unterschied machte, ob ein erforderlicher Fakt ganz am Anfang einer langen Liste von Anweisungen oder direkt neben der Stelle stand, an der die Änderung vorgenommen wurde. Sie fanden heraus, dass es, solange der Fakt in der Sicht des Agenten vorhanden war, keinen Unterschied machte, ob er am Anfang oder am Ende eines massiven Kontextfensters stand. Die Distanz beeinträchtigte die Fähigkeit des Agenten, den Fakt zu nutzen, nicht. Wenn der Fakt jedoch vollständig vorenthalten wurde, scheiterte der Agent, ungeachtet dessen, wie viele andere Informationen er hatte. Der Schaden war linear: Das Verbergen eines Faktes führte dazu, dass der Agent bei den spezifischen Aufgaben scheiterte, die von diesem Fakt abhingen, aber es verursachte keinen Kaskadenfehler in unbeteiligten Teilen des Codes.
Die vielleicht überraschendste Erkenntnis betraf die Fähigkeit der Agenten, zu signalisieren, dass sie blockiert sind. Die Forscher fanden heraus, dass es ganz von dem verwendeten spezifischen KI-Modell abhing, ob ein Agent melden würde: „Ich kann nicht fortfahren, weil mir eine Datei fehlt“. Einige Modelle, wie eines namens Opus, meldeten in jedem einzelnen Versuch, dass sie blockiert seien, wenn eine Datei fehlte. Andere, wie Codex, meldeten niemals, dass sie blockiert seien; sie fabrizierten einfach die fehlende Datei und machten weiter. Dies deutet darauf an, dass die Fähigkeit, eine Wissenslücke zu erkennen, kein universelles Merkmal von Coding-Agenten ist, sondern eine spezifische Eigenschaft des Modells selbst. Bei den Systemen, die nicht zugeben, dass sie feststecken, bleibt die „Kohärenzschuld“ – die Lücke zwischen dem, was der Agent braucht, und dem, was er weiß – unsichtbar, bis der fertige Code überprüft und als falsch befunden wird.
Die Forscher entdeckten auch, dass die Art und Weise, wie eine Codierungsaufgabe organisiert ist, wichtiger ist als das schiere Volumen der Informationen. Wenn sie eine eng miteinander verknüpfte Aufgabe auf mehrere Agenten aufteilten, sank die Erfolgsquote, da die Agenten die gemeinsamen Fakten nicht konsistent halten konnten. Aber wenn sie unabhängige Aufgaben aufteilten, arbeiteten die Agenten genauso gut. Dies bestätigte, dass das Problem nicht nur darin besteht, genug Daten zu haben, sondern die spezifischen Fakten, die miteinander verknüpft sind, gleichzeitig verfügbar zu halten. Wenn ein Agent angewiesen wird, eine Einstellung in einer Datei zu ändern, muss er den aktuellen Wert dieser Einstellung und die Regel dafür haben, wie sie mit anderen Dateien in seiner unmittelbaren Sicht interagiert.
Schließlich untersuchte die Studie, was passiert, wenn die dem Agenten zur Verfügung stehenden Informationen widersprüchlich sind. In einigen Experimenten stellten die Forscher ein schriftliches Standarddokument bereit, das etwas anderes besagte, während der bestehende Code im Projekt das Gegenteil demonstrierte. In jedem einzelnen Fall folgten die Agenten dem schriftlichen Standard, selbst wenn der Standard eine schlechtere oder fehleranfälligere Art und Weise der Codierung vorschrieb. Dies deutet darauf hin, dass für diese KI-Agenten eine geschriebene Regel mehr Autorität besitzt als das tatsächliche Verhalten der Software, die sie beschreiben soll. Wenn der Standard veraltet ist, wird der Agent die veraltete Regel getreulich reproduzieren, was ein veraltetes Dokument gefährlicher macht als gar kein Dokument zu haben.
Die Implikationen dieser Ergebnisse sind bedeutend für die Art und Weise, wie wir KI-Coding-Tools bauen und bewerten. Es stellt sich heraus, dass es nicht ausreicht, das Kontextfenster einfach größer zu machen oder dem Agenten mehr Gedächtnis zu geben, um Erfolg zu garantieren. Der entscheidende Faktor ist sicherzustellen, dass die spezifischen Fakten, die ein Agent für eine Änderung benötigt, in dem Moment präsent und konsistent sind, in dem er schreibt. Wenn einem Agenten ein Fakt fehlt, wird er nicht warten; er wird raten. Und wenn die Fakten, die er erhält, widersprüchlich sind, wird er der geschriebenen Regel folgen, selbst wenn diese Regel falsch ist. Die Studie kommt zu dem Schluss, dass der beste Weg, diese Systeme zu bauen, nicht darin besteht, sie mit mehr Daten zu füttern, sondern die Umgebung so zu gestalten, dass die notwendigen Fakten immer verfügbar und aktuell sind, und den Output des Agenten gegen das zu prüfen, was er tatsächlich produziert hat, anstatt davon auszugehen, dass er die richtigen Dinge gelesen hat. Die Agenten scheitern nicht, weil sie zu klein oder zu langsam sind; sie scheitern, weil sie zu eifrig darin sind, die Lücken zu füllen, wenn die Fakten fehlen.
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.