SWE-NFI: Studying and Benchmarking Coding Agents for Non-Functional Improvements
Dit artikel introduceert SWE-NFI, een benchmark bestaande uit 188 real-world taken en 92 uitvoerbare regels ontworpen om programmeeragenten te evalueren op niet-functionele verbeteringen, wat onthult dat hoewel agenten een hoge functionele correctheid bereiken, ze aanzienlijk achterblijven bij menselijke ontwikkelaars in het uitvoeren van gedrag-behoudende codeverbeteringen.
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 voor dat je een robot leert om code te schrijven. Lange tijd was de enige manier om te testen of de robot zijn werk goed deed door te vragen: "Werkt het programma?" Als de robot een rekenmachine bouwde die getallen correct optelde, kreeg hij een gouden ster. Maar in de echte wereld is het schrijven van software als het bouwen van een huis. Alleen omdat het dak niet lekt en de deuren openen, betekent nog niet dat het een prettig huis is om in te wonen. Misschien is de bedrading een rommelige bende achter de muren, bladdert de verf af, of zijn de instructies voor het gebruik van de lichtschakelaar geschreven in onzichtbare inkt. Dit zijn de "niet-functionele" onderdelen van een huis: hoe makkelijk het te repareren is, hoe veilig het is en hoe mooi het eruitziet.
Onlangs zijn slimme computerprogramma's genaamd "coding agents" erg goed geworden in het bouwen van de basisstructuur van software. Ze kunnen bugs oplossen en nieuwe functies toevoegen. Maar niemand wist echt of deze agents ook het rommelige, saaie maar superbelangrijke werk konden doen van het opruimen van de code, het organiseren van de bedrading en het schrijven van duidelijke instructies zonder iets te breken dat al werkte. Dit is de vraag die een team onderzoekers van universiteiten in Canada, China en Singapore wilde beantwoorden. Ze wilden zien of deze digitale helpers meer konden zijn dan alleen functionele bouwers en ook echte software-verzorgers konden worden.
Om dit uit te zoeken, hebben de onderzoekers een nieuwe test gemaakt genaamd SWE-NFI. Zie deze test als een enorme, geautomatiseerde inspectie-checklist. In plaats van alleen te controleren of een programma werkt, heeft de checklist 92 specifieke regels over hoe "goed" de code eruitziet en aanvoelt. Deze regels controleren zaken zoals: "Heb je een duidelijke uitleg geschreven over wat deze functie doet?" (Documentatie), "Heb je fouten veilig afgehandeld zodat het programma niet crasht?" (Foutafhandeling) en "Heb je moderne tools gebruikt in plaats van oude, roestige?" (Library Constraints).
De onderzoekers bouwden deze test met behulp van 188 praktijkvoorbeelden uit echte softwareprojecten die door mensen al waren gerepareerd. Ze namen de "voor"-versie van de code, gaven deze aan verschillende coding agents en vroegen hen om het beter te maken zonder te veranderen aan wat het daadwerkelijk deed. Vervolgens gebruikten ze hun checklist met 92 regels om de agents te beoordelen. Ze hadden ook een "menselijke referentie"-score, wat is hoe goed een echte menselijke ontwikkelaar diezelfde code in de echte wereld had verbeterd.
De resultaten waren een beetje een realiteitscheck. De beste coding agents waren eigenlijk best goed in het zorgen dat de code nog steeds werkte (met een slagingspercentage van 70,0% op functionele correctheid). Maar wanneer het kwam bij het beter maken van de code op de manieren waar mensen om geven, hadden de agents moeite. Ze bleven achter bij menselijke ontwikkelaars in bijna elke categorie.
De grootste kloof zat in "Logic Patterns", wat de structurele integriteit van de code is. Mensen verbeterden dit gebied met een gemiddelde score van 1,5, terwijl de beste coding agents slechts tussen de 0,0 en 1,3 scoorden. Het is alsof de robots een stevige muur konden bouwen, maar niet wisten hoe ze de stenen perfect moesten laten aansluiten of hoe ze een mooie boogconstructie moesten toevoegen.
De studie vond ook enkele interessante eigenaardigheden:
- Eén bestand versus Meerdere: De agents waren oké met het repareren van een enkel bestand, maar wanneer ze wijzigingen over meerdere bestanden tegelijkertijd moesten coördineren (zoals de bedrading in de keuken en de woonkamer tegelijkertijd repareren), werden ze veel slechter.
- Kosten versus Kwaliteit: De onderzoekers controleerden hoeveel "brandstof" (computertijd en datatoken) de agents gebruikten. Ze ontdekten dat meer geld of tijd uitgeven niet altijd tot betere resultaten leidde. Eén agent gebruikte 100 keer meer middelen dan een andere, maar produceerde niet significant betere codeverbeteringen.
- Consistentie: Zodra een agent erin slaagde code te schrijven die daadwerkelijk werkte, was hij vrij consistent in het maken van die kleine verbeteringen. Het echte probleem was gewoon het laten werken van de code in de eerste plaats.
Kortom, het artikel suggereert dat onze coderobots erg goed worden in het "wat" (dingen laten werken), maar dat ze nog een lange weg te gaan hebben op het gebied van het "hoe" (het onderhoudbaar, veilig en schoon maken). Ze zijn geweldige leerlingen die instructies kunnen opvolgen, maar ze hebben de kunst van het zijn van een meesterambachtsman, die weet hoe hij de werkplaats netjes moet opruimen, nog niet geleerd. De onderzoekers hopen dat we, door middel van deze nieuwe, strikte checklist, de volgende generatie coding agents kunnen leren om niet alleen software te bouwen, maar er ook voor te zorgen.
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.