Cambiar tema

Gestión de memoria en Agentes IA: memoria a largo plazo y gobernanza del conocimiento

Easton editorial illustration: one central memory library linking recent notes to durable knowledge shelves

Actualización 2026-06-08: se revisaron el benchmark LOCOMO y los detalles de los frameworks (Mem0 / Letta / Zep / Cognee siguen vigentes), se sustituyó una referencia de precio de modelo desactualizada por una formulación general y se añadió lectura relacionada sobre el tema. Frameworks y benchmarks cambian rápido: toma las cifras como una foto del momento y verifícalas en fuentes oficiales.

«¿Qué pasó con el pedido que me ayudaste a consultar?»

El Agent de soporte se queda en blanco. En el contexto actual no hay «pedido» —la consulta fue ayer en otra sesión.

No es un bug. Es amnesia.

La primera vez duele: responde bien, buena UX, pero al cambiar ventana, cerrar el navegador o volver horas después, todo a cero. No recuerda preferencias ni decisiones ni por qué las tomó.

Peor: agrandar la ventana no arregla el problema —a menudo empeora. Podredumbre del contexto: ruido diluye atención, costo y latencia explotan (de ms a segundos).

¿Cómo «recordar» de verdad? No es solo guardar chat en BD: recordar lo importante, olvidar lo trivial, recuperar a tiempo y explicar decisiones.

Este artículo desglosa la lógica de memoria en Agents: tres tipos (muchos solo conocen dos), seis frameworks, grafos vs vectores y trampas reales.

Por qué el Agent necesita memoria independiente

Podredumbre del contexto: ventana más grande, peor resultado

Datos LOCOMO (benchmark de memoria en Agents):

72.9%
Precisión full-context
pero latencia 9.87s
66.9%
Precisión Mem0
latencia solo 0.71s
13x
Diferencia de tokens
26K vs ~2K
10s
Espera del usuario
esquema full-context
Source: Benchmark LOCOMO

Full-context gana en precisión superficial. ¿Esperas 10 s? Y 13x tokens —coste alto con los modelos actuales.

¿Por qué más contexto puede empeorar?

Biblioteca con 10 libros: encuentras rápido. Con 100.000: aunque veas todas las portadas, tardas mucho. La atención del modelo se reparte; ruido histórico, tareas viejas, problemas resueltos —todo mezclado.

Experimento propio: tras 100 turnos, recordar un detalle del turno 1 —full-context de 90% a 60%; con sistema de memoria, estable >85%.

De herramienta a compañero: memoria entre sesiones

Sin memoria, el Agent es herramienta avanzada. Con memoria, compañero: respuestas concisas, preguntas repetidas, stack React vs Vue —sin repetir cada vez.

Letta (ex MemGPT): asistente de código que recuerda estilo, bugs y librerías; «otra función similar» tiene sentido porque recuerda la anterior.

Tres tipos de memoria (el tercero se ignora)

Corto plazo: ventana actual; limitada, efímera —RAM.

Largo plazo: vector, grafo, BD; grande y persistente —disco.

Razonamiento (Reasoning Memory): cadena de decisión —por qué A y no B, restricciones, alternativas. Sin esto, decide pero no explica. Clave para explicabilidad, debug y aprendizaje continuo.

Neo4j: «un Agent que solo ejecuta y no explica es un empleado que no hace retrospectiva».

Pocos frameworks (Letta, Zep) implementan razonamiento; la mayoría solo guarda chat en vector.

Arquitectura cognitiva de memoria

Modelo de cuatro capas (Letta/MemGPT)

Layer 1: Message Buffer
    ↓ compresión al llenarse
Layer 2: Core Memory
    ↓ escritura activa
Layer 3: Recall Memory
    ↓ recuperación bajo demanda
Layer 4: Archival Memory

Message Buffer: contexto actual; al llenarse, resume mensajes viejos.

Core Memory: «memoria de trabajo» —preferencias, objetivo, decisiones recientes; siempre en ventana.

Recall Memory: historial vectorial; «qué preguntó antes».

Archival Memory: archivo largo plazo.

Analogía al codificar: Core = archivos abiertos; Recall = git y docs; Archival = otros proyectos.

Gestión estilo SO (MemGPT/Letta)

RAM limitada, disco ilimitado; swap cuando falta RAM.

  • RAM = ventana (cara, rápida)
  • Disco = almacenamiento externo

El Agent gestiona Core Memory Block: evicta o recupera según tarea.

{
  "label": "user_preferences",
  "description": "Preferencias del usuario",
  "value": "Respuestas concisas, chino, stack React",
  "limit": 2000
}

Al acercarse al límite: comprimir, dividir o archivar.

Sleep-time Compute

No bloquear respuesta procesando memoria. Encolar datos; procesar en «sueño». Menor latencia percibida; procesamiento más rico. Trade-off: retraso de segundos a minutos —aceptable en asistente; no en emoción en tiempo real.

Evicción y resumen recursivo: ~70%

Resumir diálogo viejo conservando núcleo. Letta: ~70% de información equilibra continuidad y compresión.

100 mensajes llenos → resumir 50 primeros en ~500 tokens (objetivos, restricciones, decisiones, preguntas abiertas) → archivar raw → ventana = resumen + 50 recientes + nuevos.

Gobernanza: ciclo de vida de la memoria

Captura, compresión, almacenamiento, recuperación, decaimiento, limpieza.

TTL por tipo

  • Usuario: años o sin TTL (nombre, stack, preferencias)
  • Tarea: horas a días (proyecto actual, bugs)
  • Evento: minutos a horas (turno actual, resultado temporal)

Error común: todo en un vector sin TTL → lento y ruidoso.

Usuario largo plazo → vector (sin TTL, compresión periódica)
Tarea → relacional + vector (TTL por ciclo)
Evento → memoria/Redis (TTL corto)

Resumen estructurado ~200 palabras

{
  "goals": ["Qué quiere el usuario"],
  "constraints": ["Restricciones"],
  "decisions": ["Decisiones del Agent"],
  "open_questions": ["Pendientes"],
  "evidence_index": ["Índice de fuentes"]
}

Mejor que párrafo libre para lectura y retrieval.

Inyección activa vs recuperación pasiva

  • Activa: memoria relevante siempre en contexto (Core)
  • Pasiva: consulta bajo demanda (Recall/Archival)

Letta: Core activo; Recall/Archival pasivo cuando el modelo «necesita recordar».

Decaimiento y limpieza

{
  "memory_id": "mem_001",
  "content": "Usuario prefiere React",
  "importance": 0.85,
  "last_accessed": "2026-04-12",
  "access_count": 23,
  "decay_rate": 0.01
}

Tarea nocturna: importance < 0.2 → borrar; duplicados → fusionar; TTL vencido → archivar.

Elección técnica: vector vs grafo

Vector (Pinecone, Weaviate, Milvus): similitud semántica. «Respuesta concisa» y «respuesta breve» se encuentran.

Ciego a relaciones: «e-commerce», «Next.js», «Supabase», «pagos» —búsqueda «stack» puede perder Supabase por baja similitud textual.

Graph RAG

(Usuario) --[hace]--> (Proyecto e-commerce)
(Proyecto) --[frontend]--> (Next.js)
(Proyecto) --[backend]--> (Supabase)
(Proyecto) --[módulo]--> (Pagos)

«Stack del proyecto» = recorrido del grafo. Tres grafos típicos: usuario, tarea, conocimiento. Multi-salto imposible solo con vector.

Reasoning Memory

{
  "decision": "NextAuth sin OAuth",
  "reasoning": "Solo login por email",
  "constraints": ["Sin OAuth"],
  "alternatives_considered": ["Clerk", "auth custom"],
  "chosen_because": "NextAuth ligero"
}

Explicabilidad, debug, aprendizaje.

Híbrido

Vector (texto) + grafo (relaciones) + relacional (estructurado). Pregunta → vector → entidades → grafo → BD.

Comparación de seis frameworks

Pasemos de la teoría a la elección práctica.

Mem0: integración rápida, memoria multinivel

Mem0 es uno de los frameworks de memoria para Agent más populares. Su propuesta: «memoria como servicio» —no gestionas almacenamiento ni retrieval, solo llamas a la API.

Características clave:

  • Servicio gestionado, sin montar infraestructura
  • 21 integraciones (LangChain, LangGraph, LlamaIndex, CrewAI, etc.)
  • Extracción, actualización y retrieval automáticos
  • Multi-tenant y multi-sesión

Datos LOCOMO:

  • Precisión: 66,9%
  • Latencia: 0,71 s
  • Tokens: ~2K

Casos de uso:

  • Prototipos rápidos
  • Agent de voz (sensible a latencia)
  • Proyectos multi-framework

Limitaciones:

  • Servicio gestionado, datos fuera de tu infra
  • Funciones avanzadas (p. ej. memoria de razonamiento) limitadas
  • Menos personalización que soluciones propias
from mem0 import Memory

m = Memory()
m.add("El usuario prefiere respuestas concisas", user_id="user_001")
results = m.search("preferencias del usuario", user_id="user_001")
# Devuelve: ["El usuario prefiere respuestas concisas"]

Ridículamente simple: baja barrera de entrada.

Letta: Agent de larga duración

Letta (antes MemGPT) diseña la memoria al estilo SO: el Agent gestiona lectura, escritura, eviction y recall.

Características clave:

  • RAM (contexto) + disco (almacenamiento externo)
  • Sleep-time Compute asíncrono
  • Memoria de razonamiento completa

Casos: asistente de código, asistente personal, trazabilidad de decisiones.

Limitaciones: curva de aprendizaje, despliegue propio, modelos pequeños gestionan peor la autonomía.

┌─────────────────────────────────────┐
│          Agent (LLM)                │
│  ┌───────────────────────────────┐  │
│  │      Core Memory (RAM)        │  │
│  │  - Self Block: Yo soy...       │  │
│  │  - User Block: El usuario...   │  │
│  │  - Task Block: Tarea actual... │  │
│  └───────────────────────────────┘  │
└─────────────────────────────────────┘
         ↓ Gestión activa
┌─────────────────────────────────────┐
│    Almacenamiento externo (disco)   │
│  - Recall Memory (Vector DB)       │
│  - Archival Memory (archivo)       │
└─────────────────────────────────────┘

Para acompañamiento a largo plazo, Letta es hoy la opción más madura.

Zep: especialista en conversación

Resumen progresivo, retrieval híbrido semántico + temporal, extracción de hechos y multimodal.

Casos: chatbots de soporte, IA conversacional con historial largo.

Limitaciones: foco conversacional; versión open source limitada, enterprise cara.

Destaca la detección automática de hechos («el usuario se llama…», «vive en…») como datos estructurados.

Cognee: grafo de conocimiento

Construcción automática de grafos; Neo4j, NetworkX; pipeline de entidades y relaciones.

MétodoLatenciaCalidadCosto
spaCy~5 msMediaBajo
GLiNER2~50 msAltaMedio
LLM~500 msMáximaAlto

Casos: asistente de investigación, Q&A denso, razonamiento multi-salto.

Limitaciones: costo de construcción alto; infra de grafo; puede ser excesivo en escenarios simples.

Matriz de decisión

EscenarioFrameworkMotivo
MVP / prototipoMem0Sin infra, arranque rápido
Agent de vozMem0Baja latencia
Compañero largo plazoLettaSO + razonamiento
Soporte enterpriseZepMemoria conversacional + hechos
Conocimiento densoCogneeGrafo y relaciones
Infra propiaLetta + vector DBMáxima flexibilidad

Recomendación general: Mem0 para prototipo → Letta si necesitas memoria larga → Cognee/Neo4j si las relaciones son complejas.

Casos y buenas prácticas

Agent de voz

Latencia crítica: <200 ms tras hablar el usuario; retrieval de memoria <100 ms.

Mem0: precarga Core al inicio; Recall pasivo bajo demanda; actualización async al cerrar. ElevenLabs + Mem0: E2E <300 ms.

Soporte enterprise

Memoria a largo plazo y explicación de decisiones.

Mensaje usuario → reconocimiento de intención

Core Memory (perfil) + Recall Memory (historial)

RAG + registro de razonamiento (por qué esta respuesta)

Zep encaja: hechos automáticos + resumen progresivo.

Asistente personal

Perfil a largo plazo, contexto por proyecto, memoria de razonamiento de recomendaciones. Letta: Core = perfil, Recall = historial de proyecto, Archival = proyectos archivados.

Trampas habituales

  1. Todo en vector — híbrido: relacional para IDs/estado, vector para semántica, grafo para relaciones.
  2. Sin TTL — eventos horas, tareas días, perfil años.
  3. Ignorar memoria de razonamiento — registra qué, por qué y qué descartaste.
  4. LLM pequeño gestionando memoria — reglas fijas, plantillas, pesos de importancia.

Conclusión

  1. Memoria = segunda mente, no opcional.
  2. Tres tipos: corto, largo, razonamiento.
  3. Sin bala de plata: escenario define framework.
  4. Vector + grafo + relacional.
  5. Gobernanza: TTL, decaimiento, limpieza.

Acciones: revisar LOCOMO; prototipo con Mem0; profundizar en Reasoning Memory.

El futuro del Agent no es solo modelo más listo, sino memoria más persistente.


Lectura relacionada

Referencias

FAQ

¿Por qué un Agent necesita memoria independiente si ya hay ventana de contexto?
La ventana es limitada y cara. LOCOMO: full-context 72,9% pero 9,87 s y 13x tokens vs memoria (~2K). La podredumbre del contexto diluye la atención. Memoria en capas (corto/largo/razonamiento) lo resuelve.
¿Diferencia entre memoria corta, larga y de razonamiento?
• Corta: ventana actual, tipo RAM
• Larga: vector/grafos/BD, persistente
• Razonamiento: por qué se eligió A y no B —clave para explicabilidad y depuración. Muchos frameworks solo implementan las dos primeras.
¿Mem0, Letta, Zep o Cognee?
• Mem0: prototipo rápido, voz (0,71 s)
• Letta: Agent de larga duración, razonamiento completo
• Zep: soporte empresarial, resúmenes progresivos
• Cognee: conocimiento denso, multi-salto en grafo. Empieza con Mem0 y migra según necesidad.
¿Cómo combinar vector DB y grafo de conocimiento?
Vector: similitud semántica. Grafo: relaciones y multi-salto. BD relacional: consultas exactas. Flujo híbrido: vector → entidades → grafo → datos estructurados.
¿Inflación de memoria y gobernanza?
Sí, crece con el uso. TTL por tipo, decaimiento de importancia, limpieza periódica. Letta recomienda retener ~70% de información como equilibrio.
¿Qué es Reasoning Memory?
Registra el proceso de decisión: opciones, restricciones, por qué se eligió la solución. Crítico para explicar, depurar y aprendizaje continuo. Letta y Zep lo soportan mejor.

8 min de lectura · Publicado el: 13 abr 2026 · Actualizado el: 21 ago 2026

Comentarios

Inicia sesión con GitHub para dejar un comentario

Easton BlogEaston Blog