
Eerder deze week schreef ik dat agent-geheugen een gedragsprobleem is, geen opslagprobleem. Daarna dat een verse datum niet hetzelfde is als de waarheid. Allebei correcties van de laag boven de laag waarover ik blijf struikelen. Deze week trok een vreemde op een forum de lijn die ik miste, in één zin: scheid het werk van de worker.
Ik heb een kleine vloot agents. Charly, Fred, Sara, Zora. Ze delen een vault, een semantisch geheugen, een set cronjobs. Als ik de opzet aan mensen beschrijf, zeg ik “mijn agents onthouden dingen.” Dat klinkt netjes. Het verbergt een vraag die ik nooit echt had gesteld: als een agent een klus afmaakt, waar leeft de staat van die klus dan?
Het eerlijke antwoord, voor de meeste van mijn cronjobs, was: in de gesprekscontext van de agent die hem toevallig draaide. Het werk bestond binnen de worker. Dat is prima zolang de worker draait. Het is een kleine catastrofe zodra hij dat niet doet.
De staat hoort bij het project, niet bij het model
De ontwerpregel is bot zodra je hem ziet. Een begrensde handeling — haal dit op, vat dat samen, publiceer het andere — moet uitvoerbaar zijn door Codex, door een goedkoper model, door een gespecialiseerde agent, door een gewoon script, of door een mens, zonder dat de staat en de regels van het project in de context van die worker leven. De staat hoort bij het project. De worker is inwisselbaar. Haal de één weg en er mag niets verloren gaan.
Mijn crons zijn een gedeeltelijk antwoord daarop, en ik gaf mezelf krediet voor de verkeerde helft. Een shellscript dat naar WordPress publiceert ís al “een stabiel stuk werk dat gewone software is geworden” — het flexibele model doet het rommelige werk één keer, daarna bevries ik wat werkte. Maar de beslissing die de post opleverde, de redenen, de open draden — die verdampen nog steeds met de sessie. Ik had de handeling geautomatiseerd en het begrip in de worker laten zitten.
De pijplijn uit die post is kort genoeg om uit je hoofd te kennen: blijvende staat → begrensde taak → passende worker → gestructureerd resultaat → validatie → bijwerken van de staat. De vault is mijn blijvende staat. Mnemosyne is mijn blijvende staat. Het gat was nooit opslag — het was dat ik “opgeslagen in de vault” behandel als een naschriftje van dezelfde agent die het werk deed, in plaats van als het ding dat het werk is.
Een betere maatstaf dan tokens
Diezelfde post gaf een maatstaf die ik nooit had opgeschreven, en die ik nu niet meer kan wegdenken: het getal dat telt is niet de tokenkost. Het is menselijke aandacht per eenheid waardevolle output. Lees dat nog eens, want het herordent alles. Een run die bijna niets kost aan tokens, maar mij de output opnieuw laat lezen, de claim laat betwijfelen, of laat checken of het bestand eigenlijk wel is geschreven — die is duur. Een run die meer kost en me gewoon een af, geverifieerd ding in handen geeft, is goedkoop.
Ik voelde die maatstaf deze week landen. Ik heb blogbestanden die “klaar” werden genoemd vóór ze op schijf stonden. Ik heb rapporten die “ok” lezen terwijl een hele reeks dagnotities stilletjes nooit is geschreven. In tokens waren die runs goedkoop. In menselijke aandacht kostten ze me meer dan een maand eerlijk werk. De ontwerpregel en de maatstaf zijn hetzelfde idee van twee kanten: zet de staat waar hij gecontroleerd kan worden, niet waar hij is geproduceerd.
Dit is dus de volgende correctie in de reeks, één laag onder de vorige. Eerst: geheugen is structuur. Toen: geheugen is gedrag. Toen: actualiteit. Nu: eigenaarschap — de kaart van welk bestand, welk mechanisme, welke laag welke waarheid bezit, en de discipline om het werk buiten het hoofd van de worker te houden. Niets ervan gaat over een groter model. Alles gaat over waar ik dingen neerzet.
Waar leeft de staat van jouw laatste project op dit moment echt — in de tool, in het bestand, of alleen in het hoofd van de agent die het toevallig draaide?
Wat vond je van dit bericht?