El primer problema al ejecutar varios agentes es que se olvidan. Cada sesión comienza en blanco. El contexto de una herramienta no se traslada a otra. Las decisiones tomadas ayer son invisibles hoy. Terminas reexplicando las mismas cosas, o peor aún, los agentes se contradicen porque ninguno tiene acceso a lo que el otro escribió.

Ése es el problema del almacenamiento y primero hay que solucionarlo. Necesita una capa de estado donde cada agente pueda escribir observaciones y cada agente pueda consultar el contexto. Los hechos deben persistir en todas las sesiones, herramientas y máquinas. La recuperación tiene que funcionar independientemente de qué agente escribió los datos o cuándo. [Neotoma](/posts/truth-layer-agent-memory) existe para resolver esto: un sustrato independiente del esquema que almacena, sirve y le permite consultar la verdad en toda su pila de agentes.

Pero una vez que el almacenamiento funciona, te topas con una segunda pared. Cuando un agente escribe una nueva observación, los demás agentes no se enteran hasta que la verifican. "Verificar" significa sondear: volver a consultar a intervalos, al inicio de la sesión o mediante un activador manual. La mayoría de esas encuestas no arrojan nada. Los que importan llegan con minutos u horas de retraso. La brecha entre "cambio de estado" y "avisos de agentes" es tiempo muerto y crea un límite a lo que los agentes pueden hacer juntos.

Este no es un problema de recuperación. Los datos están ahí. Es un problema de coordinación en la capa de infraestructura, y todos los sistemas de memoria caseros que he visto lo manejan de la misma manera: no es así.

## El techo de coordinación

La coordinación basada en encuestas tiene tres costos que se agravan con la escala.

**Latencia.** El intervalo entre un cambio de estado y un agente se da cuenta está limitado por la frecuencia de sondeo. Si un agente comprueba cada cinco minutos, una observación crítica podría pasar desapercibida durante cuatro minutos y cincuenta y nueve segundos. Para los agentes que se coordinan en estados urgentes, como un informe de error que acaba de enviarse o una transacción financiera que necesita conciliación, esa latencia es el cuello de botella.

**Cómputo desperdiciado.** La mayoría de las encuestas no arrojan cambios. Un agente que comprueba cada treinta segundos durante un día laboral realiza casi mil consultas, la inmensa mayoría de las cuales confirman que no pasó nada. Esto es tolerable para un agente. A diez agentes, es un impuesto. A cien, son los gastos generales de infraestructura los que escalan linealmente sin valor.

**Límite máximo de coordinación.** La combinación de latencia y desperdicio crea un límite práctico en el comportamiento colaborativo de los agentes. Los patrones que serían naturales con la conciencia basada en eventos, como "el Agente B reacciona a la escritura del Agente A en segundos", requieren un pegamento personalizado: temporizadores, hacks de webhooks, activadores manuales o demonios de sondeo dedicados que a su vez necesitan mantenimiento. Los patrones de coordinación que desea son sencillos. La plomería para hacerlos funcionar con sondeo no lo es.

Si ha creado una pila de múltiples agentes, se ha topado con este muro. La capa estatal almacena la verdad de forma fiable. Guarda silencio sobre los cambios en esa verdad.

## Qué significa la señalización

La solución es sencilla en concepto. Después de cada escritura, la capa de estado emite un evento estructurado que describe lo que cambió. Los consumidores registrados, agentes, demonios, instancias de pares, reciben el evento y deciden qué hacer al respecto. La capa de estado entrega la señal. El consumidor decide la respuesta.

Esta es una primitiva estándar en sistemas que manejan estados a escala. PostgreSQL emite entradas WAL y admite ESCUCHAR/NOTIFY. Nadie afirma que PostgreSQL esté "actuando" cuando hace esto. Proporciona observabilidad en sus propias transiciones de estado. Un intermediario de mensajes como Kafka hace lo mismo a una escala diferente. El sistema estatal informa lo sucedido. Los consumidores intermedios filtran, priorizan y actúan. La capa de informes no razona sobre los eventos. Dispara y olvida.

La analogía biológica es útil aquí. Un sistema nervioso almacena y envía señales. El cerebro guarda la memoria. Las neuronas sensoriales transmiten conciencia de lo que cambió. Ninguno de los dos decide mover un músculo. El sistema motor actúa. Una capa de estado que almacena la verdad y señala cambios es el cerebro y los nervios sensoriales. Los agentes que deciden qué hacer con esas señales son el sistema motor.

## La línea que tiene que quedarse

Una capa de estado que señala puede fácilmente convertirse en un orquestador, un motor de flujo de trabajo o un agente por derecho propio. La tentación es real. Una vez que pueda emitir eventos, querrá filtrarlos, priorizarlos, enrutarlos, agregar lógica de reintento y crear entrega condicional. Cada paso parece razonable de forma aislada. Juntos, convierten el sustrato en algo que toma decisiones sobre lo que importa y lo que no.

Esa línea tiene que permanecer.

Qué es la señalización:

- **Observación sobre el cambio de estado, no acción sobre el estado.** El sustrato informa lo que cambió. No evalúa si el cambio es importante.
- **Entrega inmediata.** Si un consumidor no está disponible, el sustrato registra el fallo. No vuelve a intentarlo con una escalada, no recurre a acciones alternativas ni altera su propio comportamiento.
- **Una salida derivada de la canalización de escritura.** La canalización existente es escritura, recálculo de instantáneas y inserción de línea de tiempo. La emisión de eventos es una entrada más en esa secuencia, de la misma manera que una instantánea se deriva de datos de una observación. Se ejecuta después de que se confirma la transacción de escritura, no durante. Si la escritura falla, no se activa ningún evento. Si falla la entrega, la escritura sigue vigente. La señal sigue la verdad; nunca lo cierra.

Qué señalización no es:

- **No toma de decisiones.** El sustrato no filtra qué eventos vale la pena enviar. Los emite todos. Los consumidores filtran.
- **No es comportamiento del agente.** El sustrato no se suscribe a sus propios eventos. No ejecuta bucles. No razona.
- **Sin orquestación.** Sin priorización, sin programación, sin enrutamiento condicional. Los demonios que procesan eventos y toman medidas son consumidores de la capa operativa, no parte del sustrato.

La prueba está limpia. Si eliminar la emisión de eventos significaría que el sustrato tiene menos observabilidad en sus propias transiciones de estado, es un sustrato primitivo. Si eliminarlo significaría que un usuario pierde un recordatorio o un agente no cumple una fecha límite, es una estrategia.

## El límite refinado

La vieja frontera: el sustrato almacena y sirve a la verdad.

La nueva frontera: el sustrato almacena, sirve y señala la verdad. Cuando la verdad cambia, el sustrato informa del cambio. Lo que suceda después es responsabilidad del consumidor.

Esta es una extensión, no una contradicción. La canalización de escritura existente ya realiza un trabajo derivado después de cada escritura: recálculo de instantáneas, creación de eventos en la línea de tiempo, generación de incrustaciones y vinculación automática. La emisión de eventos es una entrada más en la lista. No requiere ningún nuevo modelo de datos. No cambia lo que se almacena ni cómo se resuelven las consultas. Agrega un canal de salida para la concientización sobre el cambio de estado.

La terminología importa. "Señalar" y "emitir" en lugar de "notificar" o "alertar". Notificar implica juicio sobre la importancia. Alerta implica evaluación de urgencia. La señal es neutral. Las señales del sustrato. El consumidor interpreta.

Vale la pena ser explícito acerca de dónde reside la estrategia en este panorama. Los planes, las reglas vigentes, las preferencias y las decisiones previas son en sí mismos estados. Son entidades almacenadas en el sustrato como cualquier otra, consultadas, reducidas y señalizadas de la misma manera. No se ejecutan en una capa separada. El límite no está entre "la estrategia vive en otro sistema" y "el estado vive en el sustrato". Está entre "el sustrato almacena y señala" y "los consumidores deciden y actúan según lo que leen". Eso mantiene los artefactos de estrategia inspeccionables, reproducibles y compartidos por cada consumidor que los lee, sin arrastrar el sustrato más allá de la línea para decidir.

## De la memoria al sistema nervioso

La mayoría de las personas que construyen sistemas multiagente todavía describen el sustrato compartido como "memoria". Ese encuadre es preciso hasta donde llega. La memoria es almacenamiento y recuperación: el sistema registra lo que sucedió y los agentes lo consultan cuando necesitan contexto. Ésa es la base y tiene que funcionar antes de que cualquier otra cosa importe.

Pero la memoria es pasiva. Contiene la verdad. No transmite conciencia de los cambios en la verdad a las partes del sistema que necesitan reaccionar. Una capa de memoria que almacena una nueva transacción financiera no le dice al agente de conciliación que llegó la transacción. Una capa de memoria que registra un nuevo informe de error no le dice al demonio de clasificación que algo necesita atención. Los datos están ahí. La conciencia no lo es.

Un sistema nervioso agrega la capa de transmisión. Abarca todo lo que hace la memoria, el almacenamiento y la recuperación, pero extiende la responsabilidad del sustrato para incluir la señalización. La capa estatal no sólo contiene la verdad. Propaga cambios de verdad a los consumidores registrados en tiempo real.

El criterio correcto para juzgar esto es la integridad del estado, no la calidad de la recuperación. La memoria se juzga en función de si puedes volver a consultarla. Un sistema nervioso se juzga en función de si el resto del sistema puede actuar sobre un cambio en el momento en que el cambio es duradero, en lugar de minutos después, cuando algo sucede. Esos son problemas diferentes con diferentes modos de falla.

El marco biológico es preciso, no decorativo. Un cerebro sin nervios sensoriales puede almacenar recuerdos perfectamente y aun así ser incapaz de reaccionar al entorno. La pieza que falta no es el almacenamiento. Es la vía de señalización entre lo que cambió y lo que hay que saber al respecto. Esa es la pieza que terminas construyendo a mano, un bucle de sondeo a la vez, hasta que resulta obvio que pertenece al sustrato.

## Lo que esto desbloquea

Si está ejecutando una pila de múltiples agentes en un estado compartido, considere lo que es posible cuando la capa de estado señala en escritura.

**Un demonio que procesa el trabajo entrante segundos después del envío.** Un usuario o agente externo envía un informe de error, una solicitud de función o comentarios estructurados. La capa de estado almacena la entidad y emite un evento. Un demonio de larga duración recibe el webhook, crea un árbol de trabajo, ejecuta una sesión de agente en la base de código relevante, abre un PR y actualiza el estado de la entidad. Sin bucle de votación. No hay temporizador cron que controle cada cinco minutos. El demonio se suscribe una vez y reacciona cuando llega el trabajo.

**Coordinación entre herramientas sin código adhesivo.** Un agente de conciliación financiera se suscribe a las observaciones de transacciones. Un agente de canalización de contenido se suscribe a borradores de cambios de estado. Un agente de clasificación de problemas se suscribe a eventos de creación de entidades filtrados por tipo. Cada consumidor registra interés en un alcance, todos los eventos, eventos para un tipo de entidad específico, eventos para una entidad específica y proporciona un punto final de entrega. El sustrato cumple. El consumidor mantiene la lógica. Sin integración personalizada por par de agentes.

**Agentes que pueden comunicarse entre sí a través del sustrato.** La comunicación de agente a agente ya funciona a través de la capa de estado: subprocesos de conversación, identidad del remitente, semántica de subprocesos multipartitos. Lo que falta es el empujón. Cuando el Agente A escribe un mensaje destinado al Agente B, el Agente B no debería tener que realizar una encuesta para descubrirlo. El sustrato debe indicar la escritura para que la conversación se desarrolle a la velocidad de procesamiento, no a la velocidad de sondeo.

**Envíos de invitados estructurados con control de acceso.** Cualquier tipo de entidad, no solo un tipo con mayúsculas y minúsculas especiales, se puede abrir a envíos externos con políticas de acceso configurables. El agente de un cliente envía comentarios estructurados. La automatización de un socio envía datos para su conciliación. El sustrato impone quién puede escribir qué, rastrea la procedencia de los actores externos y encadena conversaciones de seguimiento. El envío es un estado duradero, no un mensaje que desaparece.

## Más allá de tus propios agentes

Hasta ahora esto se lee como si todos los agentes le pertenecieran. Se encuentran en su editor, sus trabajos cron, su computadora portátil. Ese es el caso fácil. No es el panorama completo.

La progresión natural es una instancia central en su máquina más instancias satélite en otra infraestructura: servidores de cliente, droplets de VPS de equipo, agentes remotos que usted opera pero que no son de su propiedad. Una vez allí, las encuestas no son sólo un desperdicio. Es estructuralmente ciego. Usted ingresa por SSH, ejecuta resúmenes, pregunta "qué pasó entre estas fechas" porque el almacén remoto nunca devuelve el conocimiento al lugar donde se ejecutan sus agentes coordinadores.

Se trata de coordinación a través de límites de confianza, no sólo entre procesos. Cuando el escritor es el agente de otra persona, la "memoria compartida" no es suficiente. Necesita escrituras que pueda atribuir, inspeccionar y verificar después del hecho. Eso significa identidad de escritor verificada en cada superficie (MCP, HTTP, solicitudes firmadas), niveles de atribución que distinguen a un agente verificado criptográficamente de una persona que llama anónima y formas de conversación que incluyen hilos de agente a agente y de múltiples partes para que la comunicación transfronteriza sea un estado estructurado en lugar de mensajes ad hoc.

La señalización completa el cuadro. Una instancia satélite que emite eventos al escribir les brinda a sus consumidores centrales la misma primitiva en la que ya confían localmente. Con el tiempo, dos instancias se pueden sincronizar bidireccionalmente: cuando una entidad cambia en la instancia A, se notifica a la instancia B y puede realizar la actualización sin intervención manual. No se requiere un centro central. Cualquier instancia puede ser un par.

La parte "abierta" es la interoperabilidad bajo reglas, no una batalla campal. Las superficies abiertas más la identidad explícita y la semántica de los hilos son la forma en que se permite que los agentes de otras personas participen en un sistema nervioso sin pretender que cada persona que llama sea igualmente confiable o igualmente legible. El marco de la memoria subestima ese requisito. El encuadre del sistema nervioso no.

## Lo que estoy construyendo

Estoy agregando estas capacidades a [Neotoma](/posts/truth-layer-agent-memory) en secuencia, cada una basándose en la anterior.

**Emisión de eventos de ruta de escritura.** Después de cada escritura, corrección o creación de relación exitosa, emita un evento estructurado: tipo de entidad, ID de entidad, tipo de observación, marca de tiempo y los campos que cambiaron. Los consumidores obtienen suficiente información para decidir si actúan sin necesidad de volver a consultar la capa estatal. Esta es la capa sensora. Sin él, todas las capacidades posteriores requieren sondeos. Con ello, el sustrato se vuelve reactivo.

**Suscripción y entrega de webhooks.** Los agentes registran interés en un alcance y proporcionan un punto final de entrega. El sustrato mantiene el registro y entrega eventos a través de devoluciones de llamada de webhook y SSE. El consumidor mantiene la lógica. Los webhooks son lo primero porque funcionan para agentes remotos en la infraestructura VPS, demonios locales en su computadora portátil y sincronización entre instancias entre pares. Las notificaciones push de SSE y MCP son acumulativas.

**Envío de entidades generalizadas.** En este momento, existen envíos externos estructurados (acceso de invitados, políticas de acceso, hilos de conversación, procedencia de actores externos), pero están conectados a un solo tipo de entidad. El siguiente paso es hacer que este tipo de entidad sea independiente: cualquier tipo de entidad se puede abrir para envíos de invitados con políticas de acceso configurables, espejos externos opcionales y subprocesos de conversación. El agente de un cliente envía datos estructurados. La automatización de un socio envía comentarios. El sustrato se encarga del control de acceso y la procedencia. El operador configura qué está abierto y qué no.

**Sincronización bidireccional entre instancias.** La infraestructura existente admite el envío remoto unidireccional: una instancia envía a otra. La extensión es bidireccional. Cuando una entidad cambia en la instancia A, la instancia B recibe un webhook y puede realizar la actualización. Sin eje central. Cualquier instancia puede compararse con cualquier otra. Así es como una flota de instancias satélite en la infraestructura del cliente permanece coordinada con una instancia central sin SSH ni cron.

Nada de esto es la versión más ambiciosa de lo que podría ser un "sistema nervioso". Enrutamiento, filtrado, transformación, garantías de entrega, colas de mensajes fallidos: los intermediarios de mensajes proporcionan todo eso. Intencionalmente no estoy construyendo nada de eso. El trabajo del sustrato es señalar, no orquestar. Cada característica que cruza esa línea hace que el sustrato sea menos confiable como reportero neutral de las transiciones estatales.

La restricción es la característica. Una capa de estado que señala pero no decide es una capa de estado sobre la que aún puedes razonar. Agregue lógica de capa operativa a la ruta de señalización y perderá la propiedad que hizo que el sustrato fuera útil en primer lugar: el comportamiento del sustrato está completamente determinado por la escritura, no por la política.