AN-07 L2 Nivel de conformidad: Memory Grupo: Conocimiento

Agent Memory memoria del agente

Las notas que puedes leer y editar son la verdad. Los índices son una caché que puedes tirar.

Definición

Agent Memory = notas que puedes leer y editar + índices que puedes tirar en cualquier momento. Cada nota cita sus fuentes; los índices (texto completo, vectoriales, de grafo, esquemas) son solo derivados de las notas; y las tareas de mantenimiento en segundo plano solo proponen ediciones y nunca reescriben el diario original.

v0.2 Borrador de especificación Actualizado

El problema

Los frameworks de memoria meten la memoria en bases de datos opacas: no se puede inspeccionar, comparar, migrar ni corregir, borrarla de forma fiable es difícil, y el índice y el modelo de embeddings quedan atados. Y la propia memoria es una superficie de ataque: en un estudio de 2026, el envenenamiento de la memoria persistente alcanzó una tasa media de éxito del ataque del 50,46 % en dos agentes, y otro estudio usó un solo correo cuidadosamente elaborado para tener éxito contra los backends de memoria tanto de sistema de archivos como vectoriales.

Mientras tanto, “qué arquitectura de memoria es la mejor” está lejos de estar resuelto: los benchmarks se contradicen entre sí. Un diseño que no apuesta por ningún algoritmo de recuperación concreto es el que puede sobrevivir a tres años de cambios.

Cómo funciona

  • Las notas son la verdad. Markdown con frontmatter YAML: kind (episodic, semantic, procedural, preference), subject, sources, confidence, valid_from, valid_to, supersedes, origin, reviewed.
  • Actualiza, no sobrescribas. Un hecho nuevo supersedes al anterior; el tiempo de validez y el tiempo de registro se mantienen separados, porque los hechos cambian y los benchmarks habituales apenas lo prueban.
  • Los índices son una caché. BM25 (por ejemplo SQLite FTS5), vectores (pueden coexistir varios) y un grafo opcional; cada derivado lleva su receta y sus entradas. Cambiar el modelo de embeddings es un recálculo en segundo plano, y el índice antiguo se conserva hasta que el nuevo supere las pruebas de recuperación de referencia.
  • Dos tipos de derivación. Las deterministas (fragmentación, BM25, embeddings de un modelo fijo) son reproducibles; las generativas (resúmenes de LLM, hechos extraídos) solo se pueden “regenerar y comparar”, así que se marcan con generated: true y nunca sirven como única copia.
  • Ruta de escritura. nas_remember escribe una nota (con fuentes) en la rama actual, y la contaminación se hereda. Una nota de una sesión con contaminación external va a cuarentena, marcada como sin revisar: se puede recuperar pero no se carga automáticamente ni entra en MEMORY.md.
  • Ruta de lectura. nas_recall = búsqueda, candidatas, una vista con presupuesto y punteros de evidencia, y muestra la fuente y el estado de revisión de cada nota.
  • Tareas de mantenimiento (de noche o en ratos libres): deduplicar, consolidar episodios en hechos semánticos, señalar contradicciones, retirar hechos obsoletos, reconstruir índices. Las tareas generan propuestas en una rama para que las revise una persona o un agente; nunca borran el diario original; se mide la “tasa de arrepentimiento” (la proporción de propuestas que se revierten).
  • Pruebas de recuperación de referencia (golden recall). Para cada Home, un conjunto de pares “pregunta, nota esperada” que se ejecutan automáticamente cuando cambia el modelo o el indexador.

Empezar en pequeño

  • memory/notes/*.md con frontmatter, y SQLite FTS5 para la búsqueda.
  • Ejecuta diez preguntas de referencia en CI.
  • Los índices vectoriales y las tareas de mantenimiento pueden venir después; acierta primero con la “procedencia” y con que “solo se cargan automáticamente las notas revisadas”.

Esbozo de la interfaz

Solo ilustrativo. Los nombres de los campos pueden cambiar antes de la especificación v0.3.

memory/notes/customer-acme.md
---
id: mem_4kq2
kind: semantic
subject: customer/acme
valid_from: 2026-10-02
valid_to: null
confidence: 0.8
origin: agent
reviewed: true
sources:
  - nas://home-box/agents/cleo/journal/2026-10-02.md@9f2c1de#L12-L18
supersedes: [mem_1xa9]
---
Acme renewed for 24 months; the champion moved from Dana to Luis.

Lo que pide la especificación

  • Las notas DEBEN ser legibles sin la capa Memory (son archivos normales en Store).
  • Cada derivado DEBE llevar su receta y sus entradas; un índice DEBE ser desechable y reconstruible.
  • Las notas escritas por una sesión contaminada NO DEBEN cargarse automáticamente antes de revisarse.
  • Un hecho nuevo DEBE sustituir a uno antiguo con supersedes en lugar de sobrescribirlo.
  • Las tareas de mantenimiento DEBEN trabajar en una rama y solo proponer; NO DEBEN borrar el diario original.
  • Cada Home DEBERÍA llevar pruebas de recuperación de referencia y ejecutarlas siempre que cambie el modelo o el indexador.

Lo prestado y lo nuevo

Lo que sigue es todo pensamiento establecido, y la arquitectura de memoria de OpenClaw ya hace etiquetas de procedencia, cuarentena por niveles y propagación de la contaminación durante la consolidación. Lo nuevo: OpenClaw lo hace dentro de un solo runtime; nosotros proponemos hacerlo en el almacenamiento compartido para que cualquier runtime se beneficie, y degradar el índice a una caché desechable para que el algoritmo de recuperación pueda cambiar sin perder memoria.

Límites honestos

  • Los derivados generativos nunca se pueden reproducir bit a bit.
  • Una tarea de mantenimiento puede “endurecer” un error hasta convertirlo en un hecho, por eso solo propone y nunca edita directamente.
  • Qué arquitectura de memoria es la mejor sigue sin estar resuelto.

Preguntas abiertas

  • ¿Cuándo debe escribir la memoria el propio agente y cuándo una tarea de mantenimiento?
  • ¿Cuál es el estándar de regresión entre versiones de modelos?

Preguntas

¿Por qué archivos y no una base de datos vectorial?

Los archivos son la verdad que puedes leer, editar, comparar y llevarte; un índice vectorial es una caché derivada que puede coexistir en varias versiones y reconstruirse en cualquier momento. El benchmark de Letta mostró que un agente con solo grep y herramientas de archivos es competitivo, pero los benchmarks se contradicen entre sí, así que el diseño no apuesta por un único algoritmo de recuperación.

¿Cómo se evita el envenenamiento de la memoria?

No se puede garantizar que nunca se escriba nada malo, pero sí acotar las consecuencias: el contenido de fuera lleva la etiqueta external; las notas escritas por una sesión contaminada van a cuarentena y no se cargan automáticamente; las fusiones se revisan; y cuando algo sale mal puedes seguir la cadena de procedencia hasta las notas afectadas y revertir.

¿Tengo que migrar la memoria al cambiar el modelo de embeddings?

No. Las notas no cambian; solo se recalculan los índices en segundo plano con la nueva receta, y el índice antiguo se conserva hasta que el nuevo supere las pruebas de recuperación de referencia.

Citar esta página

Direcciones estables y una cita sugerida para personas, buscadores y agentes.

Cita sugerida
Agent NAS project. “Agent Memory (memoria del agente).” agentnas.com, 2026-11-11. https://agentnas.com/es/concepts/agent-memory/