Artículos
Dándole Memoria a Largo Plazo a Mi Asistente de IA
Cada sesión de IA empieza desde cero. Sin contexto, sin continuidad. Construí un sistema de memoria híbrido con Supermemory, SQLite local y un archivo markdown estático para que mi asistente Zo me recuerde en todos mis canales.

Dándole Memoria a Largo Plazo a Mi Asistente de IA
Hola mi gente linda. Hablo con Zo todos los días. A veces por la interfaz web. A veces por SMS cuando no estoy en mi escritorio. A veces le pido que recuerde algo pequeño, como cómo me gusta el café o que mi hijo Brooks necesita su EpiPen empacado para los viajes.
Y después abría una nueva conversación y veía cómo esa información desaparecía. Cada sesión empezaba desde cero. Sin contexto. Sin continuidad. Como el Día de la Marmota, pero con un asistente de IA.
El fin de semana pasado por fin lo arreglé. Esto es lo que construí y por qué.
El Problema
Zo corre en Zo Computer, lo que significa que cada conversación levanta una instancia nueva. Estado limpio, sin contaminación entre sesiones, comportamiento predecible. Así fue diseñado. Pero también significa que Zo no puede recordar nada de lo que le digo.
Si menciono el lunes que prefiero dark mode en todos mis editores, y después empiezo una conversación completamente diferente el martes, Zo no tiene ni idea. Tenía que repetirme constantemente.
El mismo patrón se repite en la mayoría de herramientas de IA. Cada sesión es una isla.
Lo Que Quería
Tres cosas:
- Las preferencias deberían persistir. Dark mode, configuración de editores, cómo estructuro mis proyectos.
- Los datos deberían quedarse. El nombre de mi esposo, dónde nací, quiénes son mis contactos.
- El contexto debería ser automático. No quería tener que disparar manualmente un guardado de memoria cada vez que mencionara algo que vale la pena recordar.
Y necesitaba funcionar en todos mis canales. Web chat, SMS, email. Si le digo algo a Zo por mensaje de texto, el siguiente web chat ya debería saberlo.
La Arquitectura: Tres Capas
Construí un sistema de memoria híbrido. Cada capa respalda a las otras, así que si una falla o no está disponible, la memoria sigue funcionando.
Supermemory (nube vía MCP). Un servicio de memoria en la nube accesible a través del Model Context Protocol. Zo lo llama vía mcporter, una herramienta CLI de MCP. Almacena preferencias, datos y información a nivel de perfil. Como está en la nube, es accesible desde cualquier lugar. Si le mando un texto a Zo desde mi teléfono, puede recordar lo que dije en un web chat la semana pasada.
SQLite local con FTS5. Corre directamente en Zo Computer. Usa la extensión FTS5 de SQLite para búsqueda de texto completo rápida, indexada a través del sistema de memoria de OpenClaw. Funciona incluso si Supermemory no está disponible, y mantiene todo privado en mi máquina.
MEMORY.md (contexto estático). Un archivo markdown que se carga al inicio de cada sesión a través de una directiva en AGENTS.md. Es la fuente de verdad. Si tanto el sistema en la nube como el local fallan, este archivo sigue existiendo y sigue siendo leído.
Redundancia por diseño. Si Supermemory no está disponible, SQLite local lo atrapa. Si SQLite tiene problemas, MEMORY.md sigue ahí.
Cómo Funciona en la Práctica
Al inicio de cada sesión, Zo ejecuta esto automáticamente:
bun /home/workspace/Skills/zo-memory/scripts/recall.ts "user preferences projects family ongoing tasks"
Ese query consulta tanto @supermemory como SQLite local en paralelo, combina los resultados y carga todo en contexto antes de que yo escriba mi primer mensaje. El archivo MEMORY.md también se auto-carga vía la directiva de AGENTS.md.
Por debajo, el script de recall llama a Supermemory vía MCP:
const result = Bun.spawnSync([
'mcporter', 'call', 'supermemory.recall',
`query=${q}`
], { timeout: 30000 });
Y consulta SQLite local usando FTS5:
SELECT path, start_line, text, bm25(chunks_fts) as score
FROM chunks_fts
WHERE chunks_fts MATCH 'user preferences'
ORDER BY score
LIMIT 10
Cuando Zo aprende algo nuevo sobre mí, lo guarda en los tres sistemas automáticamente:
bun /home/workspace/Skills/zo-memory/scripts/save.ts "Andrea prefers dark mode in all editors" --tag preference
El script de guardado llama a Supermemory vía MCP:
const result = Bun.spawnSync([
'mcporter', 'call', 'supermemory.memory',
`content=${text}`, `action=save`
], { timeout: 30000 });
Después agrega a un archivo de memoria local y dispara un reindex vía OpenClaw.
Configuré reglas para que esto suceda automáticamente. Si le digo a Zo algo que vale la pena recordar, lo guarda. No tengo que pedírselo. La memoria debería ser infraestructura invisible, no una tarea manual.
La Prueba
Después de construirlo, quería verificar que realmente funcionara entre canales.
Abrí un web chat con Zo y mencioné algo específico que no había dicho antes. Después le mandé un texto a Zo desde mi teléfono y le pregunté si lo recordaba.
Sí lo recordó. La información había viajado de web chat a Supermemory a un recall por mensaje de texto. Tres días después, todavía lo recordaba.
Qué Haría Diferente
El script de recall puede ser lento. Supermemory es un servicio en la nube, así que hay latencia de red. SQLite local es rápido pero requiere reindexar después de cada guardado. Si lo hiciera de nuevo a escala, agregaría una capa de cache.
También no configuré deduplicación al principio. Si le decía la misma preferencia a Zo tres veces, la guardaba tres veces. Fue un fix simple en el script — ahora verifica tanto coincidencia exacta como similitud semántica antes de guardar en cualquier sistema. Si es duplicado, lo salta con un mensaje claro.
Por Qué Importa
Los asistentes de IA olvidan porque los construimos así. Estado limpio es más fácil de razonar. Sin carry-over significa sin contaminación. Pero para un asistente que uso diariamente, a través de múltiples canales, ese trade-off dejó de tener sentido.
Quería algo que me conociera. Ahora lo hace.
Sobre la Autora: Andrea Griffiths es Senior Developer Advocate en GitHub, donde ayuda a equipos de ingeniería a adoptar y escalar tecnologías de desarrolladores. Le apasiona hacer conceptos técnicos accesibles—tanto para humanos como para agentes de IA. Conéctate con ella en LinkedIn, GitHub, o Twitter/X. · Leer en inglés