Change2Task: From Repository Changes to Executable Coding Agent Tasks and Environments
Das Paper stellt Change2Task vor, ein System, das gemergte Pull Requests automatisch in verifizierte, ausführbare Coding-Agent-Aufgaben umwandelt, indem es historische Repository-Zustände rekonstruiert und diese auf modernen Codebasen validiert, wodurch das Angebot an Trainingsdaten signifikant erhöht und die Einrichtungskosten im Vergleich zu bestehenden Baselines gesenkt sowie die Task-Recovery-Raten verbessert werden.
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 eine Welt vor, in der Computer lernen, Softwareentwickler zu werden. Diese „Coding-Agenten“ sind wie digitale Lehrlinge, die nicht nur eine einzelne Zeile Code schreiben und dann aufhören; sie können ein Projekt öffnen, die Dateien lesen, einen Fehler beheben, Tests ausführen und es erneut versuchen, wenn sie scheitern. Aber hier ist der Haken: Um wirklich gut darin zu werden, müssen diese Lehrlinge an realen Problemen üben. Sie benötigen eine riesige Bibliothek von „Übungen“, in denen sie versuchen können, eine defekte Funktion zu reparieren oder eine neue hinzuzufügen, und dann eine klare „Bestanden“- oder „Nicht bestanden“-Note erhalten.
Das Problem ist, dass das Erstellen solcher Übungen unglaublich schwierig und teuer ist. Normalerweise muss man, um einen Test zu erstellen, eine perfekte, isolierte Computerumgebung (wie eine digitale Sandbox) für jedes einzelne Problem bauen. Wenn man 1.000 verschiedene Programmieraufgaben möchte, muss man vielleicht 1.000 verschiedene Sandboxes bauen, was enorme Mengen an Speicherplatz und Zeit kostet. Es ist, als würde man versuchen, jemandem das Kochen beizubringen, indem man für jedes Rezept, das man lehren möchte, eine völlig neue, voll ausgestattete Küche baut. Das ist so viel Arbeit, dass uns die Übungsprobleme ausgehen und die Agenten nicht die Trainings erhalten können, die sie brauchen, um Experten zu werden.
Hier kommt eine neue Idee namens Change2Task ins Spiel. Denken Sie an Change2Task als eine magische Zeitmaschine für Code. Anstatt für jedes Rezept eine neue Küche zu bauen, betrachtet Change2Task die Historie eines echten Softwareprojekts – wie ein riesiges Logbuch über jeden Zeitpunkt, an dem ein menschlicher Entwickler einen Fehler behoben oder eine neue Funktion hinzugefügt hat. Es nimmt diese alten, realen Geschichten und fragt: „Können wir genau diese gleiche Herausforderung auf der aktuellen Version der Software nachbilden?“
Das System arbeitet wie ein geschickter Editor. Es findet einen „merged Pull Request“ (was nur ein schicker Begriff für eine Änderung ist, die bereits akzeptiert und zum Code hinzugefügt wurde) und versucht, diesen rückwärts zu entwickeln. Es fragt den Computer, diese Änderung „rückgängig“ zu machen, um einen fehlerhaften Zustand zu erzeugen, und setzt dann ein Ziel für den Coding-Agenten, diesen wieder zu beheben. Aber hier ist der magische Trick: Anstatt von vorne zu beginnen, tut es dies auf einer modernen, gesunden Version der Software, die bereits läuft. Wenn sich der Code seit der ursprünglichen Korrektur stark verändert hat, nutzt Change2Task drei verschiedene Strategien, um die alte Korrektur auf den neuen Code abzubilden:
- Patch Reversal (Patch-Umkehrung): Wenn sich der Code nicht viel verändert hat, kehrt es die alte Korrektur einfach rückwärts um.
- Code Mapping (Code-Abbildung): Wenn der Code verschoben wurde, findet es den neuen Ort des alten Codes und tauscht ihn aus.
- Agent Reconstruction (Agenten-Rekonstruktion): Wenn der Code völlig anders ist, nutzt es einen intelligenten KI-Agenten, um herauszufinden, wie es das Problem in der neuen Umgebung nachbilden kann.
Das Team testete dies an fünf gängigen Arten von Programmieraufgaben: Fehler beheben, neue Funktionen hinzufügen, neue Tests schreiben, alte Werkzeuge (APIs) aktualisieren und Sicherheitslücken schließen. Sie starteten mit 1.130 realen Änderungen aus öffentlichen Softwareprojekten. Das System verwandelte erfolgreich 900 dieser Änderungen in funktionierende, verifizierte Übungsaufgaben. Das ist eine Erfolgsquote von etwa 80 %.
Was wirklich aufregend ist, ist die Menge an Einsparungen. Indem sie dieselbe moderne „Küche“ (die Softwareumgebung) für mehrere verschiedene Übungsprobleme wiederverwendeten, reduzierten sie die Zeit für die Einrichtung der Umgebungen um 58,4 % und senkten den Speicherplatzbedarf um 71,2 %. Tatsächlich konnten sie 29,2 % mehr verifizierte Aufgaben erstellen als eine vorherige Methode, die lediglich versuchte, alte Korrekturen direkt zu kopieren.
Das Team prüfte auch, ob diese rekonstruierten Aufgaben fair waren. Sie ließen verschiedene KI-Coding-Agenten die Probleme sowohl auf der ursprünglichen historischen Version als auch auf der neuen modernen Version lösen. Die Ergebnisse waren fast identisch: Die Agenten erhielten in 98 % der Fälle die gleiche „Bestanden“- oder „Nicht bestanden“-Note. Dies beweist, dass die neuen Aufgaben keine bloßen Zufallsraten sind, sondern getreue Rekonstruktionen echter Entwicklerarbeit.
Kurz gesagt: Change2Task findet nicht nur mehr Übungsprobleme; es findet einen Weg, die Probleme, die wir bereits haben, wiederverwendbar und effizient zu machen. Es verwandelt die Geschichte der Softwareentwicklung in eine erneuerbare Ressource für das Training der nächsten Generation von KI-Codern und beweist, dass wir nicht eine neue Welt für jede Lektion bauen müssen – wir müssen nur wissen, wie wir die alte mit frischen Augen betrachten.
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.