Quan diversos agents treballen amb els mateixos fets, aquests fets canvien i no tots els agents se n'assabenten alhora. Una data de venciment mostra el problema amb claredat.

Suposem que la factura INV-2041 diu que el pagament venç el 22 d'octubre i que un correu posterior del proveïdor trasllada el venciment al 29 d'octubre. Un agent llegeix la factura, un altre llegeix el correu i un tercer prepara els pagaments de la setmana amb allò que troba. El primer respon «22 d'octubre», el segon «29 d'octubre» i el tercer respon amb la data que ha trobat primer. Res en aquesta organització no estableix quina data és vigent, de manera que la persona que dirigeix els agents ho ha de comprovar.

M'he inventat aquest exemple concret de la factura, però l'organització que hi ha al darrere és real. Faig servir [agents en tres eines](https://markmhendrickson.com/posts/what-my-agentic-stack-actually-does) amb una sola instància de [Neotoma](https://neotoma.io/). Un procés que consulta el correu desa els missatges entrants amb la seva font i converteix en tasques els que requereixen una acció; les sessions de Claude Code, Codex i Cursor recullen [les mateixes tasques i els mateixos plans](https://markmhendrickson.com/posts/the-swarm-that-runs-my-work). Aquesta configuració, i la meva feina a Neotoma com a sistema de registre integral, són l'origen d'aquest assaig.

![Un document i un sobre, cadascun connectat a una fitxa de dades diferent](/images/posts/neotoma-paper/observation.svg "paper|Exemple fictici · INV-2041|Dues fonts diuen coses diferents sobre una factura: el PDF indica que venç el 22 d'octubre i un correu posterior indica el 29 d'octubre.")

## Recordar serveix per a una altra cosa

La recuperació d'informació troba material que sembla relacionat amb una pregunta. Un índex vectorial o un historial de conversa llarg ho fan bé i, per a moltes tasques, n'hi ha prou. Però això no [resol quin és el fet vigent](https://markmhendrickson.com/posts/agentic-search-and-the-truth-layer). Si es pregunta per la data de venciment, la recuperació retorna la factura i el correu ordenats per la semblança amb la pregunta, no segons quin reflecteix la situació actual.

Tenir més eines i entorns d'execució ho complica. Un agent guarda [notes en un fitxer Markdown](https://markmhendrickson.com/posts/the-markdown-memory-ceiling), un altre conserva el que ha après dins la seva aplicació de xat i un tercer llegeix una carpeta compartida. Cada còpia era correcta quan es va escriure. Quan el fet canvia, les còpies s'actualitzen en moments diferents, o no s'actualitzen, i cap agent no pot preguntar quina preval perquè no hi ha cap lloc on aquesta pregunta tingui resposta. El sistema de registre ha de ser fora de tots ells, en un lloc al qual tots puguin accedir.

A començament d'aquest any vaig anomenar Neotoma [una capa de memòria i una capa de veritat](https://markmhendrickson.com/posts/truth-layer-agent-memory). Vaig deixar de fer-ho perquè vaig arribar a pensar que «memòria» és una categoria equivocada per a Neotoma: [és confusa](https://markmhendrickson.com/posts/your-ai-remembers-your-vibe-but-not-your-work), i la gent continuava comparant-lo amb productes de memòria. El que necessito que un agent conservi són dades exactes sobre moltes classes de coses, en una forma auditable. El nom planer del lloc que les guarda és sistema de registre.

Això és el que entenc per sistema de registre: indica què és vigent, d'on prové i què va substituir. La cerca per similitud no pot respondre aquestes preguntes, perquè la similitud no diu res del temps ni de la font.

> **La recuperació i el registre**
>
> **Les eines de memòria i recuperació ajuden un agent a conservar i trobar context. Un sistema de registre assumeix una altra funció: calcula el valor vigent a partir d'observacions acceptades i conserva el rastre fins a l'evidència de cada camp. Les dues funcions se superposen, i un producte pot cobrir-ne més d'una.**

## Què fa Neotoma avui

Desenvolupo Neotoma, el sistema de registre per a agents d'IA. És de codi obert amb llicència MIT i s'executa localment, al directori de dades que triïs. El que segueix descriu què fa avui el paquet publicat (0.25.0 a npm).

Cada escriptura es desa com una observació nova vinculada a la font d'on prové. Un valor nou s'afegeix al costat de l'anterior en comptes de sobreescriure'l. Neotoma pot guardar el [PDF o correu original](https://github.com/markmhendrickson/neotoma/blob/v0.25.0/docs/developer/source_storage_by_reference.md) juntament amb les entitats estructurades que se'n deriven, i mantenir les observacions vinculades a la seva font.

Les observacions pertanyen a entitats. L'identificador d'una entitat es deriva del tipus d'entitat i dels seus camps identificadors. Dins de la mateixa instància i amb les mateixes regles d'identitat, els mateixos valors identificadors produeixen de manera determinista el mateix identificador; per això, dos agents que desin la mateixa factura escriuen a la mateixa entitat.

Les entitats també es poden vincular entre si: la factura amb el seu proveïdor, o una tasca de seguiment amb la factura a què es refereix. L'agent crea aquestes relacions explícitament. Descriuen com encaixen els registres, mentre que els vincles amb les fonts mostren el PDF o el correu que hi ha darrere d'una observació.

Neotoma aplica automàticament la regla de fusió de l'esquema per a cada camp per calcular-ne el valor vigent a partir de les observacions. En la majoria de camps preval l'observació més recent. Amb les mateixes observacions i les mateixes regles de fusió, la reducció produeix la mateixa instantània, sense demanar a un model que torni a triar a cada lectura.

Cada camp vigent indica l'observació que el va establir, i una observació desada indica la seva font. És un rastre fins a l'evidència, no pas una prova que un agent l'hagi llegida correctament. Una correcció és una altra observació, no una edició, i el valor anterior continua a la llista. També es pot llegir una entitat tal com Neotoma la tenia registrada en un moment anterior.

Tornem a la factura. Les escriptures de tots dos agents arriben a una sola entitat. La data de venciment ara és el 29 d'octubre i indica l'observació procedent del correu. L'import continua indicant la primera observació, perquè no ha canviat. L'agent de pagaments llegeix el 29 d'octubre, i l'observació del 22 d'octubre es manté a la llista amb la seva font.

![Una factura i un correu separats, connectats per línies fines a una targeta de registre marcada](/images/posts/neotoma-paper/invoice-example.svg "paper|El registre vigent · INV-2041|La data de venciment ara és el 29 d'octubre. El camp modificat apunta a l'observació posterior. L'import encara prové de la primera observació. Totes dues observacions romanen al registre.")

Els agents accedeixen a Neotoma mitjançant un servidor MCP, una API REST i una CLI. La guia d'instal·lació explica com connectar les eines i els entorns d'execució compatibles. Connecta cada eina a la mateixa instància i al mateix perfil de dades, o a la mateixa entrada MCP, per compartir registres; les entrades separades poden utilitzar bases de dades separades.

Les persones poden consultar els seus registres a l'aplicació Neotoma inclosa amb el paquet.

Una [sol·licitud signada](https://markmhendrickson.com/posts/know-which-of-your-agents-wrote-what/) admesa pot establir una identitat d'agent verificada. Els permisos actius i delimitats determinen les accions permeses; una signatura tota sola no concedeix permís.

## Cap a on va això

Fins ara he descrit un sistema de registre que estableix els fets vigents per als agents. La direcció és un sistema de registre que persones i agents mantenen conjuntament, on tothom pugui preguntar quin valor és vigent, quina font el va introduir, si es va observar, inferir o decidir, qui tenia autoritat per corregir-lo i quins agents es van basar en la versió anterior. Les capacitats de governança previstes van més enllà de la identitat signada, els permisos delimitats i l'aplicació actuals:

- Donar a cada domini un responsable clar, amb autoritat per corregir els seus registres limitada a aquell domini.
- Representar explícitament afirmacions contraposades, disputes sense resoldre i posicions oficials.
- Mostrar per què es manté un valor, de qui prové l'autoritat que el sustenta i què afectaria un canvi.

Ateles amplia aquesta direcció en l'àmbit operatiu. En el [disseny dels adaptadors d'Ateles](https://github.com/markmhendrickson/ateles/blob/a3e4d9ed2c33ac867bb67447221d559cbe8c5810/docs/foundation/adapters.md#L14-L22), els adaptadors porten informació de sistemes com ara correu, calendaris i plataformes de codi a Neotoma, i porten accions autoritzades de tornada a aquests sistemes. Neotoma guarda els registres; les eines connectades fan la feina.

La visió completa, amb l'estat actual de cada part, és al [README](https://github.com/markmhendrickson/neotoma#vision-and-execution-status).

![Propietat del domini: un titular autoritzat arriba a un de dos compartiments delimitats](/images/posts/neotoma-paper/vision-domain.svg "paper|Propietat del domini|La propietat del domini deixarà clar qui pot corregir cada part delimitada del sistema de registre.")
![Seguiment de posicions: dues afirmacions conservades es connecten a un expedient on una posició apareix com a seleccionada](/images/posts/neotoma-paper/vision-positions.svg "paper|Seguiment de posicions|El seguiment de posicions conservarà afirmacions contraposades i permetrà examinar una posició explícita.")
![Explicacions: en aixecar un camp vigent, se'n veu el fonament i un conjunt delimitat d'efectes](/images/posts/neotoma-paper/vision-explanation.svg "paper|Explicacions|Les explicacions mostraran per què es manté un valor, de qui prové l'autoritat que el sustenta i quins valors connectats podria afectar un canvi.")

## Un sistema de registre, no de recuperació

La resposta no és un índex millor. La recuperació ajuda un agent a trobar allò que es va dir. [Un sistema de registre li diu què és vigent](https://markmhendrickson.com/posts/the-spine-of-the-loop). Els agents que treballen amb diverses eines necessiten la segona funció, en un lloc al qual tots puguin accedir; i un sistema de registre només ajuda si els agents hi escriuen i en llegeixen.

Si fas servir agents en més d'una eina o entorn d'execució, comença amb un flux de treball amb fets i entitats relacionats:

```
npm install -g neotoma
neotoma init
neotoma setup --tool claude-code
```

Fes servir l'opció de configuració corresponent a la teva eina o entorn d'execució; la guia d'instal·lació cobreix les altres integracions compatibles. Després, desa els fets i les entitats relacionats amb el flux des d'un agent i llegeix-los des d'un altre connectat a la mateixa instància configurada i al mateix perfil de dades o entrada MCP.

La guia d'instal·lació és a [neotoma.io/install](https://neotoma.io/install?utm_source=site&utm_medium=blog&utm_campaign=essay-system-of-record). El codi i el gestor d'incidències són a GitHub, a [github.com/markmhendrickson/neotoma](https://github.com/markmhendrickson/neotoma).

> **L'ambició**
>
> **Neotoma és el sistema de registre per a agents d'IA. L'ambició és oferir a persones i agents una comprensió compartida que puguin examinar i governar: què se sap, per què es creu, en què discrepen i qui té autoritat per canviar-ho. Aquesta comprensió hauria de perdurar més enllà de qualsevol model, eina o aplicació en particular.**
