Volver al blog
Inteligencia Artificial06 de abril de 2026

El Modelo es Prescindible: Cómo Construí una Memoria por Embeddings que Sobrevive a Cualquier Agente

La IA avanza rápido. Demasiado rápido. Una actualización automática puede llevarse semanas de contexto acumulado. Así construí un sistema de memoria que sobrevive a cualquier agente.

5 min de lectura5 vistas
El Modelo es Prescindible: Cómo Construí una Memoria por Embeddings que Sobrevive a Cualquier Agente

El Incidente: Cuando una Actualización Borra Semanas de Trabajo

OpenClaw guarda su memoria como archivos .md en el sistema de archivos local. Es una solución funcional pero con un problema: esa memoria está atada al agente. Si el agente se actualiza, se reinstala, o se comporta de forma inesperada después de un cambio de versión, esos archivos pueden quedar desincronizados o directamente ignorados.

Lo que me pasó fue esto: OpenClaw recibió una actualización. Al reiniciarse, no reconoció su propio memory.md correctamente. Semanas de contexto acumulado — decisiones técnicas, estado de proyectos, preferencias de trabajo — evaporadas. El agente volvió a ser un extraño.

La pregunta incómoda: ¿por qué la memoria de mi agente depende del agente mismo?

El Problema de Raíz: Memoria Acoplada al Modelo

La mayoría de los agentes de IA tienen un modelo de memoria "acoplado": el contexto vive dentro del agente, en su formato, bajo sus reglas. Cuando el agente cambia, el contexto cambia con él. Cuando el agente muere, el contexto muere también.

En 2026, donde los modelos se actualizan cada pocas semanas, ese acoplamiento es una trampa. Estás construyendo sobre arena.

La alternativa es memoria desacoplada: el contexto existe en su propia infraestructura, consultable por cualquier agente que tenga las herramientas correctas. El modelo se convierte en lo que realmente es: un motor de razonamiento intercambiable.

La Solución: Un Servidor MCP de Embeddings Propio

Lo que construí fue un servidor MCP (Model Context Protocol) que actúa como capa de memoria semántica independiente. El stack:

  • Ollama con mxbai-embed-large: genera los embeddings localmente. Ningún dato sale de la máquina para ser vectorizado.

  • Redis con RediSearch: almacena los vectores y permite búsqueda semántica por similitud. Rápido, persistente, respaldable con un simple redis-cli BGSAVE.

  • Servidor MCP propio: expone las herramientas de memoria al agente.

La arquitectura completa:

Agente MCP (OpenClaw / Claude Code) → MCP Memory Server → Ollama mxbai-embed (local)
                                                              ↓
                                                    Redis (vectores + metadata)

El agente no gestiona su propia memoria. La solicita al servidor MCP como solicitaría cualquier otra herramienta. La memoria se convierte en un servicio externo.

Cómo Funciona en la Práctica

Almacenar un Recuerdo

Cuando el agente completa una tarea significativa, llama:

store_memory({
  content: "Se decidió usar JWT con refresh tokens en Redis. Salt rounds: 12. Access token TTL: 15min.",
  tags: ["auth", "jwt", "decisión-técnica"],
  project: "api-usuarios"
})

El servidor MCP: 1) Envía el texto a mxbai-embed via Ollama, 2) Obtiene el vector de 1024 dimensiones, 3) Almacena en Redis.

Recuperar Contexto Relevante

recall({
  query: "¿Cómo manejamos la autenticación en api-usuarios?",
  top_k: 5,
  project: "api-usuarios"
})

El agente carga solo los fragmentos semánticamente relevantes, no toda la memoria. Recuperación quirúrgica.

Reconfigurar OpenClaw para Ignorar su Propia Memoria

Modifiqué los archivos de configuración principales:

  • soul.md: Mi memoria no vive en este archivo. Vive en el servidor MCP.

  • agents.md: Protocolo de inicio: ejecutar recall() antes de cualquier tarea. NUNCA leer memory.md.

  • tools.md: Registrar el servidor MCP como herramienta primaria de memoria.

  • memory.md: Una sola línea: # DEPRECADO.

El Momento en que Todo Hizo Click

Después de configurar el sistema, desinstalé OpenClaw completamente y lo volví a instalar desde cero. Versión limpia. Lo reconecté al servidor MCP.

El agente ejecutó recall() al inicio. Recuperó el contexto de los proyectos activos, las decisiones técnicas pasadas. Desde su perspectiva, nunca había habido una interrupción.

El agente había muerto y resucitado con memoria intacta.

Por Qué los Embeddings Son Superiores a los Archivos .md

  • Escalan mal: un memory.md de 10,000 palabras consume tu context window antes de que el agente haga algo útil.

  • Recuperación lineal: el agente lee todo o no lee nada.

  • Acoplados al agente: si el agente cambia, la memoria cambia con él.

  • Sin semántica: "autenticación" no encuentra "JWT" o "OAuth".

Los embeddings resuelven todo: recuperación semántica, escala sin afectar el context window, sobreviven a cualquier cambio en el agente.

El Stack Completo

┌─────────────────────────────────────────┐
│ Lo que persiste                         │
├──────────────────┬──────────────────────┤
│ ProjectHub LLM   │ MCP Memory Server   │
│ ──────────────── │ ─────────────────── │
│ Proyectos        │ Decisiones técnicas │
│ Tareas          │ Contexto semántico   │
│ Event log       │ Preferencias         │
└──────────────────┴──────────────────────┘
         ↓
  Cualquier agente MCP
  OpenClaw / Claude Code / Cline

El agente es la capa más delgada. Puede cambiar.
Lo que no cambia: ProjectHub + Redis.

Conclusión

La IA avanza rápido y esa velocidad tiene un costo: las herramientas en las que confías hoy pueden cambiar mañana. Una actualización borra tu memoria. Un modelo nuevo hace obsoleto tu agente.

La respuesta no es resistir el cambio. Es construir de forma que el cambio no te cueste nada. La memoria es infraestructura, no una propiedad del agente.

La próxima vez que OpenClaw se actualice y olvide quién era, yo no voy a notar la diferencia.


Artículo original por Andres Wong · DevChefs 2026