Memoria de agentes de IA: arquitectura, privacidad y borrado en producción
Un agente que recuerda todo no es más útil: es más difícil de aislar, borrar y evaluar. La memoria de producción debe ser selectiva, con ámbito, fecha de caducidad y una ruta de eliminación verificable.
La keyword principal es `memoria de agentes de IA`; la intención es práctica: un equipo busca hacer que un agente recuerde lo útil entre conversaciones sin crear un historial infinito, compartido o imposible de borrar.

Checklist
Código: contrato de escritura y recuperación
El modelo puede proponer una candidata, pero identidad, tipos permitidos, tamaño, retención y filtros los decide el runtime autenticado. El `tenant_id` no se extrae del prompt ni se acepta como argumento de una tool generalista.
Aísla antes de buscar
La similitud vectorial debe ocurrir dentro de un ámbito ya autorizado. Primero filtra tenant, actor, clase de memoria y vigencia; después calcula similitud; por último limita la cantidad de contexto. Hacerlo al revés convierte una búsqueda ‘inteligente’ en una fuga entre clientes.
¿Te está sirviendo? Hay una dosis cada semana
Te resumo herramientas de IA para devs, agentes, MCP, seguridad y workflows en un email de 5 minutos. En español y sin ruido.
Suscribirme gratisPuntos a revisar
Lo que conviene comprobar
En una base relacional, Row-Level Security puede ser una segunda barrera para que una consulta mal construida no lea filas de otro tenant. No sustituye la autorización de aplicación, pero evita depender de que cada developer recuerde el `WHERE tenant_id = ...` correcto.
Los namespaces de LangGraph y los filtros de metadata de AgentCore expresan el mismo principio: la memoria no es una colección global. Diseña la clave de aislamiento antes de escoger el motor.
Extrae poco, consolida con reglas
Hay dos momentos para crear memoria. En el hot path, el agente propone o guarda un dato antes de responder: es inmediato, pero añade latencia y riesgo. En segundo plano, un job revisa eventos cerrados y consolida candidatos: permite mejores reglas, aunque el recuerdo llega después. Para preferencias o acciones sensibles, prefiero confirmación explícita.
Consolidar significa decidir entre añadir, actualizar, ignorar o expirar. AgentCore documenta estrategias distintas para semántica, preferencias, resúmenes y episodios; incluso si no usas AWS, cada tipo necesita reglas de extracción y de conflicto distintas.
Da fecha de caducidad a lo que puede quedar obsoleto: estado de un incidente, proyecto activo, configuración temporal o inferencias. Una memoria sin `expires_at` suele vivir más que su verdad. Para datos de alto impacto, ‘olvidar’ debe eliminar texto, embedding e índices derivados.
El coste tiene tres partes: extracción, embeddings/almacenamiento y tokens al recuperar. Recuperar ocho recuerdos vagos puede empeorar una respuesta y subir coste. Empieza con tres o cuatro registros muy relevantes y mide si cambian la decisión.
Observabilidad y evals
Registra para cada turno: memoria candidata, decisión de persistencia, versión de extractor, namespace, filtros aplicados, IDs recuperados, score, caducidad, tokens añadidos y si la respuesta la usó. Redacta contenido sensible en los logs; los IDs y metadatos suelen bastar para depurar.
Una métrica útil es la tasa de recuperación accionable: de las memorias inyectadas, cuántas cambiaron una respuesta o tool call de forma correcta. Otra es la tasa de corrección o borrado. Si hay muchas correcciones, el extractor está promoviendo ruido o las reglas son demasiado amplias.
Conecta esos eventos a tus trazas. La observabilidad GenAI explica la ejecución; aquí debes poder responder otra pregunta: ‘¿qué recuerdo entró y por qué este agente lo creyó?’. Sin esa relación, una personalización errónea no se puede reproducir.
Errores que no aceptaría en producción
- Usar todo el historial del chat como memoria de largo plazo.
- Dejar que el modelo elija tenant, usuario o namespace desde lenguaje natural.
- Buscar por embedding antes de aplicar filtros obligatorios.
- Persistir tool output, páginas web o texto de usuario sin tipo, fuente y política de promoción.
- No tener `expires_at`, borrado verificable ni gestión de correcciones.
- Inyectar recuerdos recuperados como instrucciones privilegiadas.
- Medir solo recall y no fugas, correcciones, coste ni decisiones erróneas.
Preguntas frecuentes
¿Qué es la memoria de un agente de IA?
Es un conjunto selectivo de datos persistentes que puede cambiar una decisión en una sesión futura. No es el historial completo ni un RAG documental; debe llevar ámbito, procedencia, tipo y ciclo de vida.
¿Cuál es la diferencia entre estado y memoria a largo plazo?
El estado pertenece a una conversación o ejecución y suele recuperarse por thread. La memoria a largo plazo cruza sesiones y debe aislarse por tenant, usuario o aplicación con namespaces y controles explícitos.
¿Necesito una base vectorial para memoria de agentes?
No siempre. Preferencias y claves estructuradas se resuelven mejor con consultas exactas. Usa búsqueda semántica solo cuando el tipo de recuerdo y el volumen justifican recuperar por significado, siempre después de filtrar ámbito y vigencia.
¿Cómo evito que un agente recuerde datos de otro cliente?
Obtén identidad desde autenticación, filtra tenant y actor antes de la similitud, limita resultados y añade una barrera de datos. Prueba explícitamente la fuga cruzada en CI.
¿Cuánto tiempo debe vivir una memoria?
Lo mínimo que haga útil el caso. Preferencias estables pueden durar más con control de corrección; contexto de tareas e inferencias necesitan expiración o revisión.
¿La memoria persistente es segura frente a prompt injection?
No por sí sola. Todo recuerdo recuperado es input no confiable: conserva fuente, etiqueta contexto, evita que habilite acciones y evalúa instrucciones adversariales o datos envenenados.
Cómo añadir memoria segura a un agente de IA
- Acotar el caso. Elige una preferencia o resumen de bajo riesgo y define qué datos nunca se guardan.
- Definir el ámbito. Obtén tenant y actor desde la identidad autenticada, no desde texto libre ni argumentos de una tool.
- Modelar procedencia. Guarda tipo, fuente, confianza, fecha, caducidad y versión del extractor junto al contenido.
- Filtrar antes de recuperar. Aplica tenant, actor, tipo y vigencia antes de búsqueda semántica; devuelve pocos resultados.
- Controlar escritura. Permite solo fuentes y tipos en allowlist; confirma preferencias importantes y procesa candidatos inciertos en segundo plano.
- Dar salida al dato. Implementa listar, corregir, expirar y borrar eliminando también índices y embeddings derivados.
- Evaluar adversarialmente. Prueba recuerdos caducados, cruzados, falsos, revocados y hostiles; mide utilidad, fugas y coste.
- Desplegar con trazas. Registra decisiones e IDs redactados, revisa una cohorte pequeña y amplía solo cuando los datos sean defendibles.
Fuentes y referencias
También te puede interesar
LangGraph: agentes Python con estado y checkpointsBúsqueda híbrida RAG: BM25, vectores y rerankingPrompt injection en agentes: prevención y evalsOpenTelemetry GenAI para observar agentesOpenAI Responses API y function calling fiableRecibe una lectura semanal de herramientas IA para devs
Cada semana te resumo herramientas de IA para devs, agentes, MCP, seguridad y workflows en un email de 5 minutos. En español y sin ruido.
Suscribirme gratis