Hoe je een Terminal AI Agent oneindig je code laat optimaliseren
Denk na over hoe je gewoonlijk tests versnelt of je frontend-bundel verkleint. Je wijzigt een paar regels in de config, voert de build uit, checkt de seconden in de console. Langzamer — je draait terug. 5% sneller — je commit en probeert het volgende wilde idee. Dit proces kost uren aan routinematig werk, hoewel het eigenlijk een mechanische cyclus van hypothese-toetsing is.
Andrei Karpathy demonstreerde onlangs het concept van autonome experimenten in de autoresearch-repository. Ontwikkelaar davebcn87 nam dit idee verder en bracht pi-autoresearch uit — een extensie voor de terminal AI-agent pi. De extensie delegeert routineoptimalisatie naar het neurale netwerk: de agent formuleert een idee, brengt wijzigingen aan in bestanden, meet het resultaat, slaat succesvolle bevindingen op en draait regressies terug.
Hoe de autonome cyclus werkt
Het hele idee rust op een eenvoudige regel: probeer een idee, meet het, bewaar bij succes, gooi weg bij falen.
De agent werkt direct in je repository. Wanneer je een sessie start, maakt de extensie een aparte map .auto/ aan in de projectroot. Daarin worden alle werkbestanden opgeslagen:
.auto/prompt.md— een document dat de huidige taak beschrijft, meetregels en een lijst van wat de agent al heeft geprobeerd..auto/measure.sh— een bash benchmark-script dat een string met een numerieke metrische waarde retourneert..auto/log.jsonl— een gestructureerd logboek van elke poging met de commit-hash en status..auto/checks.sh— een extra script voor het verifiëren van tests en types, zodat de agent de logica niet breekt voor mooie cijfers.
Wanneer het contextvenster van het model overloopt of de agent opnieuw opstart, leest het simpelweg .auto/prompt.md en de tail van het logboek opnieuw in. De volledige experimentgeschiedenis gaat niet verloren wanneer de context wordt gecomprimeerd.
pi install npm:pi-autoresearch
Na installatie voer je simpelweg de skill uit:
/skill:autoresearch-create
De agent stelt een paar verduidelijkende vragen over het doel, doelbestanden en run-commando, of bedenkt ze zelf op basis van de projectcontext. Vervolgens neemt het baseline-metrieken en duikt direct in een oneindige lus.
Omgaan met willekeurige ruis in metingen
Elke benchmark is onderhevig aan schommelingen. Achtergrond OS-processen, CPU-opwarming of netwerkvertragingen kunnen de illusie wekken van snelheidswinst waar die er niet is.
Om valse winsten uit te filteren, berekent pi-autoresearch een betrouwbaarheidsscore op basis van median absolute deviation (MAD). Na drie runs begint de extensie de behaalde verbetering te vergelijken met het ruisniveau van de hele serie:
- Waarde ≥ 2.0x wordt groen gemarkeerd — de winst overstijgt merkbaar de achtergrondruis.
- Bereik 1.0–2.0x wordt geel weergegeven — er is winst, maar het ligt op de rand van de foutmarge.
- Waarde < 1.0x gloeit rood — het resultaat ligt volledig binnen de statistische fout.
Het tool dwingt geen rollback-beslissing af aan de agent; het suggereert alleen om een twijfelachtige run opnieuw te controleren.
Bescherming tegen breken via backpressure
Neurale netwerken houden ervan om te sjoemelen. Als je de agent vraagt om de testuitvoeringstijd te verkorten, is er een sterke verleiding om simpelweg de helft van de testbestanden te verwijderen of stubs in te voegen.
Om dergelijke trucjes te voorkomen, bevat .auto/checks.sh verplichte correctheidscontroles:
#!/bin/bash
set -euo pipefail
pnpm test --run
pnpm typecheck
Het verificatiescript wordt uitgevoerd na elke succesvolle meting. Als tests falen of type-checking breekt, wordt het experiment onmiddellijk gemarkeerd als mislukt (checks_failed), en worden alle wijzigingen in de werkbranch teruggedraaid. De uitvoeringstijd van de controles zelf wordt niet toegevoegd aan de hoofdsnelheidsmetriek.
Chaos ordenen in nette branches
Tijdens een multi-uur cyclus maakt de agent tientallen commits, waarbij voortdurend verschillende bestanden worden gewijzigd. Het direct samenvoegen van zo'n log in de main-branch zou een nachtmerrie zijn voor de reviewer.
Om dit probleem op te lossen, is er een commando:
/skill:autoresearch-finalize
De skill analyseert .auto/log.jsonl, groepeert succesvolle wijzigingen in onafhankelijke logische blokken en stelt een structuur voor je goedkeuring voor. Na bevestiging maakt het tool aparte schone branches aan vanaf de initiële commit. Elke branch bevat strikt één logische set wijzigingen met de winstbeschrijving in de commit-message, waardoor ze gemakkelijk afzonderlijk te reviewen en samen te voegen zijn.
Monitoring en hooks
Je kunt de voortgang direct in de terminal of via de browser monitoren:
- De widget boven de editor toont constant een resultatentabel.
- De toetsencombinatie
Ctrl+Shift+Fopent een fullscreen terminal-dashboard met een pogingenlijst. - Het commando
/autoresearch exportgenereert een interactieve webpagina met metrische dynamiekdiagrammen.
Als de basiscyclus niet genoeg is, kun je uitvoerbare bestanden before.sh en after.sh in de .auto/hooks/ directory plaatsen. Ze triggeren bij iteratiegrenzen. Via hen kun je het verzenden van systeemnotificaties naar het desktop instellen, zoeken naar ideeën in externe documentatie, of een trainingsjournal bijhouden. Het script ontvangt context via standard input in JSON-formaat, en zijn stdout-output wordt als systeemhint aan de agent doorgegeven.
Zaken om in gedachten te houden
Autonome cycli kunnen snel je API-tegoed uitputten als ze onbeheerd overnacht worden achtergelaten. Het is verstandig om meteen een iteratielimiet in te stellen in het .auto/config.json bestand:
{
"maxIterations": 30
}
De agent stopt zodra hij dertig experimenten heeft voltooid.
Het tool presteert goed op taken met duidelijk meetbare numerieke resultaten: webpack build-grootte optimaliseren, unit test-uitvoering versnellen, hyperparameters tunen voor het trainen van kleine modellen, of Lighthouse-scores tweaken. Als je al de pi console-agent gebruikt, is het project zeker de moeite waard om op een echte optimalisatietaak te proberen.
Gerelateerde projecten