Entre el 8 i el 9 de juny, tres persones que poques vegades escriuen el mateix assaig van escriure el mateix assaig. [Addy Osmani](https://x.com/addyosmani/status/2064127981161959567), director d'IA a Google Cloud, va publicar "Enginyeria de bucles", una taxonomia dels sistemes que sol·liciten els agents de codificació perquè no calgui fer-ho. [Matt Van Horn](https://x.com/mvanhorn/status/2063865685558903149) va publicar "WTF Is a Loop?", una recerca a través de Reddit, X, YouTube i Hacker News que va rastrejar la idea des del document ReAct 2022 fins als bucles d'orquestració que la gent executa avui. I [Lance Martin](https://x.com/RLanceMartin/status/2064397389189071163), membre del personal tècnic d'Anthropic, va publicar "Designing loops with Fable 5", dos patrons per treure el màxim profit dels models de frontera dissenyant bucles en comptes de sol·licitar directament.

Tots tres convergeixen en el mateix torn: la sol·licitud està donant pas al disseny de bucles que us demanen agents. I tots tres anomenen el mateix component que el que més importa. Osmani enumera cinc blocs de construcció, després n'afegeix un sisè i li dóna la frase més contundent de la seva peça: "L'expedient estatal és la columna vertebral de tota la cosa". Van Horn argumenta que la generació actual de bucles és realment nova per una raó estructural: "la durabilitat es va fer explícita, amb un estat recolzat per git i una recuperació d'accidents". Martin emmarca la memòria com "un bucle exterior que abasta sessions".

El diagnòstic és ara consensuat. L'estat extern durador és la part que suporta la càrrega dels agents autònoms. El que em va sorprendre és el que va passar després. Tots tres van lliurar la feina a un fitxer de text.

## Què és un bucle, breument

La definició de Van Horn és la més neta: un bucle és cron més un decisor al cos. Un treball cron executa un script fix. Un bucle executa un model que mira l'estat actual, decideix què fer, ho fa, comprova si ha funcionat i decideix si continua. Apileu-los, deixeu que un bucle en enviï d'altres, i teniu el que vol dir Boris Cherny quan diu que la seva feina és escriure bucles.

El model dins d'aquest bucle ho oblida tot entre tirades per disseny. S'acaben les finestres de context. Reinicien les sessions. Així que alguna cosa del sistema no s'ha d'oblidar. Aquesta cosa és el que llegeix el bucle per decidir què fer a continuació i escriu per registrar el que va passar. És la columna vertebral, i Osmani té raó en dir-ho així.

## El substrat punt

Aquí teniu l'inventari complet dels candidats de la columna vertebral a les tres publicacions: un fitxer de reducció, un tauler lineal, fitxers d'estat compromesos amb git i un sistema de fitxers muntat compartit entre sessions. Osmani ofereix els dos primers. Van Horn documenta el tercer, que és el que fa servir Gas Town de Steve Yegge per coordinar entre vint i trenta instàncies de Claude. Martin utilitza el quart, la funció de memòria de Claude Managed Agents.

Tot això resol la persistència. Els bytes sobreviuen a un reinici. Cap d'ells resol la integritat. Pregunteu a qualsevol d'aquests substrats la pregunta que un bucle realment necessita respondre: d'aquestes dues notes contradictòries, quina és certa, qui la va escriure, quan i es va verificar mai? Un fitxer en prosa conté les dues notes una al costat de l'altra i deixa la conciliació a qualsevol model que llegeixi el fitxer següent. Git conserva totes les versions històriques de l'ambigüitat sense resoldre-la. Un muntatge compartit afegeix les darrers guanys d'escriptura a la part superior.

La persistència i la integritat són propietats diferents. El discurs ha absorbit totalment el primer i encara no s'ha adonat del segon.

## Hem fet aquest experiment abans

Les aplicacions van emmagatzemar el seu estat en fitxers plans durant dècades. Tres forces van acabar amb aquella època: els escriptors concurrents van corrompre els fitxers, les contradiccions acumulades no tenien cap mecanisme de resolució i respondre preguntes significava analitzar-ho tot. Les bases de dades van guanyar perquè van fer de la integritat una propietat de la capa d'emmagatzematge en lloc d'una disciplina que s'esperava de cada programa que tocava les dades.

Cadascuna d'aquestes forces ja és visible dins dels tres pals.

La concurrència arriba en el moment en què els bucles supervisen els bucles, que és exactament l'etapa que Van Horn diu que estem entrant. Dos bucles escrivint un fitxer d'estat són el mateix error que dos enginyers que es comprometen amb les mateixes línies sense parlar. Els arbres de treball resolen això per al codi. Res de la cadena d'eines actual no ho soluciona per a [estat compartit](/posts/when-agents-share-state-everything-breaks).

La contradicció està documentada en els resultats de referència de Martin. En una tasca d'aprenentatge continu, Sonnet 4.6 va deixar enrere un magatzem de memòria que descriu com una llista de notes d'error i conjectures obertes, incloses entrades com "potser prc en lloc de prc_usd?" Les conjectures s'acumulen. Res no marca un resolt. La següent sessió hereta la pila.

Les consultes són el punt de partida de Van Horn. Argumenta que la part cara de la codificació agentica és ara la gestió del bucle: condicions d'aturada, cap detecció de progrés i límits pressupostaris. Cadascun d'ells requereix comparar l'execució actual amb execucions anteriors. En un substrat en prosa, això significa tornar a llegir i tornar a analitzar un fitxer creixent a cada tick, que és un impost simbòlic que augmenta amb l'edat del bucle.

## El que em va ensenyar dirigir un eixam

Dirigeixo un eixam d'agents amb nom a la meva pròpia màquina: un per a la intel·ligència del client, un per al contingut, un per a la divulgació i altres per a les operacions. A la configuració inicial, cadascun guardava les notes als seus propis fitxers. Aquells fitxers van anar a la deriva. La mateixa persona apareixia sota tres noms. Un fet corregit en un fitxer va sobreviure sense corregir en altres dos, i cap registre mostrava quina versió era actual o d'on prové.

L'eixam ara comparteix [una botiga estructurada](/posts/from-memory-to-nervous-system), i aquesta publicació és en si mateix un rebut. La investigació que hi ha darrere la va fer el meu agent d'intel·ligència de clients, que va obtenir les tres publicacions X, les va emmagatzemar cadascuna com a registre escrit amb números de compromís i procedència, va escriure els resultats competitius en una anàlisi estructurada i va presentar tasques de seguiment a dos agents més a través de la botiga compartida. Quan vaig fer una pregunta de seguiment una hora més tard, la comparació es va adjuntar al mateix registre d'anàlisi amb la seva pròpia pista de procedència, no dispersa en un fitxer nou. Cap agent va tornar a derivar el que un altre ja havia establert.

## La maduresa de la memòria és una propietat del substrat

Les dades més nítides de qualsevol de les tres publicacions es troben a la de Martin. Descriu cinc etapes d'ús de la memòria: un agent falla, investiga per què, verifica què ha trobat, destil·la la resposta en una regla i la consulta la propera vegada. Un agent que completa tots els cinc errors converteix els errors en regles verificades i reutilitzables. Un agent que s'atura aviat deixa un munt d'imatges.

Els seus resultats, tots en el mateix sistema de fitxers muntat: Sonnet 4.6 s'atura en la primera etapa, registrant els errors sense investigar-los. Opus 4.7 arriba a l'etapa de verificació, però només verifica al voltant del 17 per cent de les seves reclamacions a la mitjana. Fable 5 completa la progressió i verifica fins a un 73 per cent.

Mateix sistema de fitxers, qualitat de memòria radicalment diferent. La diferència resideix completament en la disciplina del model, perquè el sistema de fitxers no garanteix res: cada etapa és un comportament que el model ha de triar. Una botiga estructurada converteix aquests comportaments en operacions de dades. Una fallada és una observació emmagatzemada. La investigació està recuperant els registres relacionats. La verificació és una correcció amb la procedència adjunta. La destil·lació és escriure una regla mecanografiada. La consultoria és una consulta limitada. Quan el substrat porta la progressió, qualsevol model arriba a completar-la.

## Què demanar a una capa d'estat de bucle

Dit l'eina de manera agnòstica, la columna vertebral d'un bucle hauria de proporcionar sis coses: registres escrits en lloc de taques de prosa, procedència de cada camp, correccions que calculen la veritat actual en lloc d'acumular versions, escriptures concurrents que no poden entrar en conflicte, recuperació que només retorna el que necessita la marca actual i accés des de qualsevol arnès en lloc de la pila d'un proveïdor.

Per ser justos amb el fitxer de text: per a un bucle en un repo, [markdown està genuïnament bé](/posts/the-markdown-memory-ceiling). És llegible, diferenciable i gratuït. La funció de forçament és el bucle número dos, la primera vegada que dos processos es preocupen pel mateix fet i cap dels dos pot confiar en el que va escriure l'altre.

## Els fitxers recorden, els sistemes de registre ho saben

Van Horn acaba la seva peça argumentant que el bucle és la fontaneria i l'actiu durador és la biblioteca d'habilitats que anomena. Mitja raó, crec. Les habilitats són la memòria procedimental, el com del treball repetit. A sota d'ells hi ha la memòria dels fets, el que és cert ara de què depèn cada invocació d'habilitats. Tots dos compostos, però només si es pot confiar en la capa de fets després de mil escriptures desateses.

Vaig crear [Neotoma](https://github.com/markmhendrickson/neotoma) perquè necessitava aquesta capa per al meu propi eixam: observacions escrites, per procedència del camp, correccions que es resolguin amb la veritat actual i accés compartit per a cada agent que executo. El discurs de bucle acaba de passar una setmana descrivint l'espai que omple sense anomenar res del que l'omple.

Osmani tanca el seu assaig amb el consell de construir el bucle com algú que pretén seguir sent l'enginyer. La capa d'estat és on aquesta intenció es fa comprovable. Els fitxers recorden. Un sistema de registre sap.