miércoles, 8 de abril de 2026

Memoria no es Estado: El error arquitectónico que está confundiendo a los desarrolladores de Agentes IA


El mes pasado en el mundo de la IA ha sido, por decir lo menos, surrealista.

Por un lado, tenemos a Milla Jovovich (sí, la actriz de Resident Evil y El Quinto Elemento) lanzando MemPalace, un sistema de memoria de código abierto que destrozó los benchmarks de la industria. Por otro, presenciamos la masiva filtración de 512,000 líneas de código de Claude Code de Anthropic, dejándonos ver exactamente cómo las empresas líderes construyen a sus agentes.

En medio de todo este ruido, de Mem0, de Letta (antes MemGPT) y de las interminables discusiones en GitHub, los desarrolladores que intentan construir agentes autónomos fiables están chocando contra un muro conceptual. Se está confundiendo sistemáticamente a la "memoria" del agente con el "estado" del agente.

Y para escalar aplicaciones en producción, necesitamos establecer una tesis clara:

statememory

La regla de oro, o la mnemotécnica que todo arquitecto de IA debería tatuarse, es esta:

Si lo puedo contar, deducir o calcular desde el estado actual del sistema, no va a memoria.

Para construir agentes robustos, debemos separar estrictamente dos responsabilidades:

  1. state_schema (El Estado): Guarda hechos derivables o calculables del trabajo actual y vivo del agente. Aquí entran los ítems de una lista de compras, el carrito de e-commerce, los contadores de una base de datos, sesiones abiertas o las entradas estructuradas de un registro de gastos. Es "la base de datos viva".

  2. memory_management (La Memoria): Guarda hechos meta-cognitivos sobre el usuario, sus preferencias, el contexto histórico y las peculiaridades del dominio. Ejemplos: "Prefiere respuestas en español y sin preámbulos", "Cumpleaños de Laura: 12 de agosto", "El deadline del Q2 suele ser a mediados de junio".

Veamos cómo esta separación explica el éxito (y las controversias) de las herramientas del ecosistema actual.


El paradigma MemPalace vs. Mem0

La historia de MemPalace es fascinante. Milla Jovovich, frustrada por la "amnesia" de ChatGPT y Claude al perder el hilo de razonamientos complejos en sesiones largas, se unió al desarrollador Ben Sigman para construir algo radical.

Mientras que las herramientas financiadas por VC como Mem0 o Zep apuestan por la extracción (usar un LLM para resumir la conversación, extraer "hechos importantes", comprimir y borrar el resto), MemPalace apuesta por guardarlo todo de forma literal. Usa una arquitectura inspirada en un "palacio mental" (Wings, Rooms, Halls) respaldada por ChromaDB.

¿Por qué esto es relevante para nuestra tesis?
Porque MemPalace es pura memoria episódica y meta-cognitiva. Al guardar el razonamiento completo, el agente puede buscar por qué tomaste una decisión hace un mes. Sin embargo, si usaras MemPalace para gestionar un inventario o una lista de tareas (Estado), sería un desastre: tendrías múltiples versiones literales del pasado compitiendo entre sí. La memoria almacena el viaje; el estado almacena el valor actual.

Letta (MemGPT) y el diseño de la persistencia

Si quieres gestionar la "base de datos viva", herramientas como Letta entran al juego con su arquitectura de memoria por niveles (Tiered Memory). Pero Letta expone claramente la necesidad de separar los conceptos.

Imaginemos dos casos de uso:

  • Caso 1: Un documento Markdown del mantenimiento de tu coche. Este es un estado flexible. Es el caso de uso perfecto y nativo para la Core Memory de Letta. El agente usa herramientas nativas (core_memory_replace) para editar un bloque inyectado en su System Prompt con los cambios de aceite y revisiones. Esto es Estado de Contexto.

  • Caso 2: Una app de gestión de gastos corporativos con permisos por usuario. Si metes esto en la memoria principal del agente, el Context Window colapsará y no podrás manejar reglas de control de acceso (ACL). ¿La solución? El estado debe externalizarse. Usamos Function Calling y MCP (Model Context Protocol) para darle al agente herramientas personalizadas (crear_gasto, leer_gastos_usuario).

El MCP y el Function Calling son la verdadera forma de gestionar el state_schema. La base de datos externa maneja el estado duro; el agente solo interactúa con él mediante APIs. Tratar de forzar una base de datos relacional dentro de la memoria de Letta o en un RAG es un error de arquitectura fundamental.

Lo que nos enseñó la filtración de Claude Code

La mayor confirmación empírica de que el Estado y la Memoria son bestias distintas viene del reciente y masivo leak del código fuente de Claude Code en marzo de 2026.

Al analizar las 512,000 líneas de TypeScript filtradas, la comunidad descubrió dos patrones magistrales que Anthropic usa internamente:

1. El Límite Estático/Dinámico (Static/Dynamic Boundary)
En los prompts de Claude Code, hay una línea divisoria estricta. Por encima de ella, está la Memoria Estática (quién eres, tus reglas, el framework de análisis). Esto se cachea y no cambia. Por debajo de la línea, está el Estado Dinámico (la fecha de hoy, los archivos abiertos, los resultados de la terminal). Mezclar ambos incrementa costos y confunde al modelo.

2. La herramienta TodoWrite
En las instrucciones secretas de Anthropic para Claude se lee: "Usa las herramientas TodoWrite MUY frecuentemente para asegurar que estás rastreando tus tareas... si no usas esta herramienta puedes olvidar pasos importantes, y eso es inaceptable."

Anthropic sabe que un LLM no tiene estado interno confiable. Su memoria de trabajo (el context window) es volátil y propensa a alucinaciones en tareas largas. Por ello, obligan al modelo a externalizar su estado escribiendo listas de TODOs literales en la interfaz.

El veredicto: RAG vs Function Calling vs MCP

Para resumir cómo deben interactuar las tecnologías actuales con nuestra tesis:

  • RAG (Retrieval-Augmented Generation) / MemPalace: Úsalo para el memory_management. Búsqueda semántica, preferencias históricas, razonamientos pasados, documentos de conocimiento. Es tu almacén de hechos no estructurados.

  • Function Calling / MCP (Model Context Protocol): Úsalos para el state_schema. Operaciones CRUD, actualización de carritos, modificación de bases de datos, validación de reglas de acceso de usuarios. Es la interfaz hacia tu verdad estructurada actual.

Al final del día, los mejores sistemas que construiremos este año no serán aquellos que intenten recordar todo en un solo bloque gigante de texto. Serán aquellos que, como nos enseña Milla Jovovich, no olviden nuestro razonamiento (Memoria), pero que, como nos demuestra Anthropic, sean lo suficientemente disciplinados para anotar y calcular su trabajo actual en bases de datos externas (Estado).


¿Y tú, cómo estás gestionando el estado y la memoria en tus agentes? ¿Sigues metiendo todo en la ventana de contexto o ya adoptaste MCP? Hablemos en los comentarios.


No hay comentarios.:

Publicar un comentario