Change2Task: From Repository Changes to Executable Coding Agent Tasks and Environments
Het artikel introduceert Change2Task, een systeem dat automatisch samengevoegde pull requests omzet in geverifieerde, uitvoerbare coding agent-taken door historische repository-toestanden te reconstrueren en deze te valideren op moderne codebases, waardoor de aanvoer van trainingsdata aanzienlijk wordt vergroot terwijl de opstartkosten worden verlaagd en de task-recovery-percentages worden verbeterd in vergelijking met bestaande baselines.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Stel je een wereld voor waarin computers leren om software engineers te worden. Deze "coding agents" zijn als digitale leerlingen die niet alleen een enkele regel code schrijven en stoppen; ze kunnen een project openen, de bestanden lezen, een bug repareren, tests draaien en het opnieuw proberen als ze falen. Maar hier is de crux: om echt goed te worden in dit werk, moeten deze leerlingen oefenen met echte problemen. Ze hebben een enorme bibliotheek van "oefeningen" nodig waar ze kunnen proberen een defecte functie te repareren of een nieuwe toe te voegen, en dan een duidelijk "geslaagd" of "gefaald" cijfer krijgen.
Het probleem is dat het maken van deze oefeningen ongelooflijk moeilijk en duur is. Meestal moet je om een test te maken een perfecte, geïsoleerde computerenvironment (zoals een digitale zandbak) bouwen voor elk afzonderlijk probleem. Als je 1.000 verschillende programmeeruitdagingen wilt, moet je misschien wel 1.000 verschillende zandbakken bouwen, wat enorm veel opslagruimte en tijd kost. Het is alsof je probeert iemand te leren koken door voor elk recept dat ze willen leren een gloednieuwe, volledig uitgeruste keuken te bouwen. Het is zoveel werk dat we opraken met oefenproblemen, en de agents krijgen niet de training die ze nodig hebben om experts te worden.
Hier komt een nieuw idee genaamd Change2Task om de hoek kijken. Denk aan dit als een magische tijdmachine voor code. In plaats van voor elk recept een nieuwe keuken te bouwen, kijkt Change2Task naar de geschiedenis van een echt softwareproject – zoals een gigantisch logboek van elke keer dat een menselijke ontwikkelaar in het verleden een bug heeft opgelost of een functie heeft toegevoegd. Het neemt die oude, echte verhalen en vraagt: "Kunnen we precies dezelfde uitdaging recreëren, maar op de huidige versie van de software?"
Het systeem werkt als een slimme editor. Het vindt een "merged" pull request (wat simpelweg een term is voor een wijziging die al is geaccepteerd en aan de code is toegevoegd) en probeert deze terug te ontwerpen (reverse-engineeren). Het vraagt de computer om die wijziging "ongedaan" te maken om een defecte staat te creëren, en stelt vervolgens een doel voor de coding agent om het weer te repareren. Maar hier zit de magische truc in: in plaats van vanaf nul te beginnen, doet het dit op een moderne, gezonde versie van de software die al draait. Als de software sinds de oorspronkelijke fix veel veranderd is, gebruikt Change2Task drie verschillende strategieën om de oude fix te mappen op de nieuwe code:
- Patch Reversal: Als de code niet veel is veranderd, draait het de oude fix simpelweg om.
- Code Mapping: Als de code is verplaatst, vindt het de nieuwe locatie van de oude code en vervangt het deze.
- Agent Reconstruction: Als de code totaal anders is, gebruikt het een slimme AI-agent om uit te vogelen hoe het probleem in de nieuwe omgeving kan worden gerecreëerd.
De onderzoekers testten dit op vijf veelvoorkomende soorten programmeertaken: het repareren van bugs, het toevoegen van nieuwe functies, het schrijven van nieuwe tests, het bijwerken van oude tools (API's) en het patchen van beveiligingslekken. Ze begonnen met 1.130 echte wijzigingen uit publieke softwareprojecten. Het systeem heeft 900 van deze wijzigingen succesvol omgezet in werkende, geverifieerde oefentaken. Dat is een succespercentage van ongeveer 80%.
Wat dit echt spannend maakt, is hoeveel het bespaart. Door dezelfde moderne "keuken" (de software-omgeving) te hergebruiken voor meerdere verschillende oefentaken, hebben ze de tijd die nodig is om omgevingen op te zetten met 58,4% verminderd en de benodigde opslagruimte met 71,2% teruggebracht. Sterker nog, ze slaagden erin om 29,2% meer geverifieerde taken te maken dan een eerdere methode die alleen probeerde oude fixes direct te kopiëren.
Het team heeft ook gecontroleerd of deze gerecreëerde taken eerlijk waren. Ze vroegen verschillende AI-coding agents om de problemen op te lossen op zowel de originele historische versie als de nieuwe moderne versie. De resultaten waren bijna identiek: de agents kregen bijna altijd (98% van de tijd) hetzelfde "geslaagd" of "gefaald" cijfer. Dit bewijst dat de nieuwe taken niet zomaar willekeurige gissingen zijn, maar getrouwe recreaties van echt ontwikkelaarswerk.
Kortom, Change2Task vindt niet alleen meer oefenproblemen; het vindt een manier om de problemen die we al hebben herbruikbaar en efficiënt te maken. Het verandert de geschiedenis van softwareontwikkeling in een hernieuwbare bron voor het trainen van de volgende generatie AI-coders, en bewijst dat we niet een nieuwe wereld hoeven te bouwen voor elke les – we hoeven alleen maar te weten hoe we naar de oude wereld met frisse ogen kunnen kijken.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.