Por qué OpenClaw sigue olvidándote (y por qué no es un error)
El olvido que experimenta es el resultado directo de cómo está diseñado el sistema de memoria de OpenClaw: memory lives as plain Markdown files on disk, ni en una base de datos, ni en la RAM, ni dentro del modelo. Los archivos son la fuente de la verdad.
Cuando esos archivos faltan, están mal configurados o se sobrescriben silenciosamente durante la compactación, el agente pierde contexto y no tiene forma de avisarle lo que sucedió.
La solución no es una configuración que se cambia. Se trata de comprender la arquitectura de tres capas lo suficientemente bien como para tomar decisiones deliberadas sobre qué va y dónde.
La arquitectura de memoria OpenClaw completa (explicación de 3 capas)
La memoria OpenClaw opera en tres capas distintas, cada una con diferentes características de persistencia y modos de falla.
Ciclo de vida completo de la memoria:
Write → Embed/Index → Search → Compact → Recover
↓ ↓ ↓ ↓ ↓
.md file sqlite-vec semantic summary MEMORY.md
created indexes it query replaces re-read at
on save returns context session start
chunks window
Cada etapa de esta cadena puede fallar de forma independiente. La mayoría de los problemas de olvido se remontan exactamente a una etapa rota.
Layer 1: la ventana de contexto activo
Esta es la memoria de trabajo del modelo: todo lo que está actualmente cargado en la ventana contextual de la conversación activa. Incluye el mensaje del sistema, el historial de conversaciones y cualquier fragmento de memoria recuperado por la herramienta de búsqueda.
Qué lo llena:
- Aviso del sistema (a menudo grande)
- Extractos de memoria recuperados
- Historial de llamadas de herramientas
- La conversación gira
Qué sucede en el desbordamiento: Cuando la ventana de contexto se acerca a su límite de tokens, OpenClaw activa la compactación: resume el contexto existente en una representación comprimida y continúa. Las instrucciones que estaban en línea en la conversación (en lugar de estar fijadas en archivos de memoria duraderos) con frecuencia se omiten durante este resumen.
Límite práctico: suponga que tiene aproximadamente entre el 60% y el 70% de la ventana de contexto anunciada del modelo disponible para la conversación real después del aviso del sistema y la sobrecarga de memoria.
Layer 2 — Notas diarias (la ventana móvil de dos días)
Las notas diarias son archivos Markdown de solo anexar nombrados en formato YYYY-MM-DD almacenados dentro de su directorio memory/. Cargas OpenClaw el de hoy y el de ayer archivos automáticamente al inicio de cada sesión.
- Aquí se adjuntan datos sobre el trabajo actual, las decisiones tomadas y las tareas activas.
- No están destinados a ser editados; trátelos como un registro.
- Después de dos días, quedan fuera de la ventana de carga automática y solo se pueden buscar mediante búsqueda semántica.
El problema crítico: OpenClaw no crea el directorio memory/ por usted. Si el directorio no existe, las notas diarias se eliminan silenciosamente, no se genera ningún error y el agente olvida todo entre sesiones. Esta única omisión provoca la mayoría de los informes de "por qué sigue olvidándome".
Layer 3: memoria duradera (MEMORY.md y Memory-wiki)
Los datos a largo plazo que deberían sobrevivir a través de las sesiones (su nombre, contexto del proyecto, preferencias de codificación, decisiones arquitectónicas) pertenecen a MEMORY.md o a la bóveda de complementos estructurada memory-wiki.
MEMORIA.md
Un archivo Markdown de formato libre. El agente lo lee al inicio de la sesión. Escribe aquí los datos que siempre querrás cargar. Sencillo, no requiere configuración.
wiki de memoria
Un complemento estructurado con organización a nivel de página, seguimiento de reclamos y evidencia, detección de contradicciones y metadatos de actualización. Lo mejor para agentes de producción con bases de conocimientos amplias y en evolución.
El problema de la compactación: por qué sus instrucciones desaparecen a mitad de la tarea
La compactación es el modo de falla menos documentado en OpenClaw. La mayoría de los artículos cubren el olvido posterior a la sesión. Casi ninguna dirección Compactación a mitad de tarea en flujos de trabajo autónomos de larga duración. — cuando el agente está ejecutando una tarea de varios pasos, la compactación se activa silenciosamente en el paso 7 de 12 y las instrucciones de comportamiento del paso 1 desaparecen.
Qué hace la compactación:
- Detecta la ventana de contexto acercándose a su capacidad
- Resume la conversación actual en un bloque condensado.
- Reemplaza el contexto original con el resumen.
- Continúa la ejecución
El problema: los resúmenes optimizan los hechos y el estado de la tarea, no las instrucciones de comportamiento. A system instruction like "always write tests before implementation" or "never overwrite files without confirmation" can survive the first compaction cycle and be gone by the second.
Cuando se desencadena: No hay un umbral configurable en el complemento memory-core predeterminado. Se activa según el recuento de tokens, no la etapa de la tarea. En un funcionamiento autónomo de 2 horas, se pueden esperar entre 3 y 5 ciclos de compactación.
Cómo construir una arquitectura de archivos resistente a la compactación
Fije instrucciones de comportamiento en MEMORY.md, no en la conversación. Todo lo que deba sobrevivir a múltiples ciclos de compactación debe estar en un archivo duradero que se pueda volver a leer después de cada compactación.
Patrón de fijación recomendado:
## Agent Behavioral Rules (always active) - Never overwrite files without showing a diff first - Write tests before implementation (TDD mode: on) - Use TypeScript strict mode in all new files ## Project Context - Stack: Node.js 22, Fastify, PostgreSQL 16 - Repo root: /home/user/project - Active sprint goal: migrate auth to Clerk
Convenciones de nomenclatura que sobreviven a la compactación:
- Prefije las secciones críticas con
## [PINNED]: el resumidor trata los encabezados en mayúsculas como de alta prioridad. - Mantenga cada hecho fijado en una línea siempre que sea posible: los párrafos densos se resumen, los hechos de una sola línea tienden a sobrevivir palabra por palabra.
- Repita las 3 a 5 reglas de comportamiento más importantes tanto en
MEMORY.mdcomo en la nota diaria de hoy: la redundancia es su protección de compactación
Configuración de cero a memoria en 10 minutos (estructura de archivos completa)
Esta es la guía de configuración que no existe en ningún otro lugar. Copie esta estructura, complete su contexto y estará corriendo.
Árbol de directorios:
memory/
├── MEMORY.md
├── 2026-04-27.md ← today's daily note (create manually)
└── wiki/ ← only if using memory-wiki plugin
├── index.md
├── project-context.md
└── decisions.md
Arrancador MEMORY.md:
# Persistent Memory ## Identity & Preferences - Name: [your name] - Role: [your role] - Preferred response style: concise, no preamble ## Project: [Project Name] - Stack: [your stack] - Key constraints: [e.g., no external APIs, TypeScript only] - Current focus: [active task or sprint goal] ## Behavioral Rules - [Rule 1] - [Rule 2] ## Decisions Made - [YYYY-MM-DD] Decided to use X because Y
Nota diaria inicial (2026-04-27.md):
# 2026-04-27 ## Session Goals - [ ] Task 1 - [ ] Task 2 ## Notes
Configuración de ranura de complemento (sintaxis 2026):
{
"plugins": {
"slots": {
"memory": "memory-core"
}
}
}
Para desactivar la memoria por completo:
{
"plugins": {
"slots": {
"memory": false
}
}
}
Pasos de verificación:
- Ejecute una sesión y pídale al agente que recuerde algo que le dijo en una sesión anterior.
- Verifique que
memory/YYYY-MM-DD.mdesté escrito (debe tener contenido nuevo) - Pregúntale directamente al agente: "¿Qué sabes de mí?" — debería extraerse de
MEMORY.md
Configuring memory-wiki para una base de conocimientos de producción
Habilítelo intercambiando la ranura del complemento:
{
"plugins": {
"slots": {
"memory": "memory-wiki"
}
}
}
Memory-wiki genera una bóveda estructurada en memory/wiki/. Cada tema tiene su propia página. El complemento compila un digest.md que agrega hechos no contradictorios y de alta confianza para que el agente los cargue al inicio de la sesión.
Estructura de bóveda práctica para un agente de producción:
memory/wiki/ ├── index.md ← vault table of contents ├── digest.md ← auto-generated; agent reads this ├── project-context.md ← stack, goals, constraints ├── decisions.md ← architectural decisions log ├── team.md ← stakeholders, contacts └── domain-knowledge.md ← business rules, glossary
Utilice Memory-wiki cuando:
- Su base de conocimientos supera los ~50 hechos
- Necesitas detección de contradicciones
- Varios agentes escriben en el mismo almacén
Quédese con MEMORY.md sin procesar cuando:
- Eres un desarrollador en solitario
- Tu contexto es estable
- Quiere cero gastos generales de mantenimiento
Semantic Search and Embeddings: SQLite, sqlite-vec y JS Fallback
OpenClaw indexa sus archivos de memoria usando SQLite with the sqlite-vec extension para búsqueda de similitud de vectores. Cuando usted o el agente realizan una búsqueda de memoria, ésta incorpora la consulta y recupera los fragmentos semánticamente más relevantes.
Verifique que su tienda de vectores esté en buen estado:
# Check that the memory index exists ls memory/.index/ # Reset a corrupted index (safe to run — it rebuilds from .md files) rm -rf memory/.index/ && OpenClaw reindex
Si sqlite-vec no está disponible (común en ARM Linux y algunas configuraciones de Windows), OpenClaw recurre a una extensión vectorial puramente JS. Forzar el retroceso explícitamente:
{
"memory": {
"vectorBackend": "js"
}
}
Segment-Specific Memory Strategies
Solo Developer: gastos generales mínimos, recuperación máxima
Configuración recomendada: complemento memory-core, MEMORY.md + solo notas diarias, sin bóveda wiki.
- Mantenga
MEMORY.mdpor debajo de 200 líneas: los archivos más largos ralentizan el inicio de la sesión - Agregue agresivamente notas diarias; no intentes mantenerlos limpios
- Revise y elimine
MEMORY.mdsemanalmente: los datos obsoletos degradan la calidad de la búsqueda
Canalización de múltiples agentes: memoria compartida entre agentes
Cuando varios agentes leen y escriben en el mismo directorio memory/, necesita reglas de propiedad explícitas.
- One agent owns writes to each file — las escrituras simultáneas en el mismo archivo
.mdproducirán conflictos - Utilice subdirectorios por agente:
memory/agent-a/,memory/agent-b/, con unmemory/shared/MEMORY.mdcompartido - Utilice Memory-wiki para la bóveda compartida: su compilación resumida maneja la actualización entre varios escritores mejor que los archivos sin formato.
Long-Running Autonomous Tasks — Sobrevivir a las horas de ejecución
Para agentes que ejecutan tareas medidas en horas:
- Force memory writes at checkpoints — después de cada etapa importante de la tarea, indique al agente que agregue su estado actual a la nota diaria de hoy
- Pre-load compaction-resistant context — coloque la especificación completa de la tarea en
MEMORY.mdantes de que comience la ejecución, no solo en el mensaje inicial - Set explicit continuation markers en notas diarias:
<!-- RESUME POINT: completed steps 1-4, next: step 5 -->para que el agente pueda autoorientarse después de un ciclo de compactación
Por qué EasyClaw gana en tareas de memoria de larga duración
EasyClaw está diseñado para escritorio, lo que significa que sus archivos de memoria, índices vectoriales y notas diarias viven junto con su proyecto en el disco local, no en una sesión en la nube que expulsa el contexto cuando se agota el tiempo de espera. Obtiene memoria resistente a la compactación de forma predeterminada, no mediante configuración.
- ✅ Memoria persistente que sobrevive a los reinicios: sin límites de sesión en la nube
- ✅ Indexación local de sqlite-vec con latencia de red cero
- ✅ Memoria wiki estructurada integrada: no es necesario configurar complementos adicionales
- ✅ Escrituras automáticas de puntos de control en cada etapa importante de la tarea
- ✅ Fijación consciente de la compactación: las reglas de comportamiento nunca se resumen
Troubleshooting OpenClaw Memory: diagnostica cualquier problema de olvido en 2 minutos
Siga estos pasos en orden:
Step 1: ¿Existe el directorio memory/?
- No → Créelo. Esto soluciona aproximadamente el 40 % de todos los informes de olvido.
- Yes → Continúe con el paso 2.
Step 2 — ¿Se escriben notas diarias?
- Busque un archivo llamado la fecha de hoy en
memory/ - No file → Es posible que la ranura del complemento esté mal configurada. Verifique que
plugins.slots.memoryesté configurado y nofalse. - File exists but está vacío → El agente está cargando memoria pero no escribiendo. Verifique los permisos de escritura en el directorio.
Step 3 — ¿Se disparó y desmontó la compactación según sus instrucciones?
- Symptom: El agente recuerda los hechos pero ignora las reglas de comportamiento a mitad de la sesión.
- Fix: mover todas las reglas de comportamiento a
MEMORY.mden una sección## [PINNED]
Step 4 — ¿La ventana de contexto se desborda antes de la compactación?
- Symptom: El agente comienza a ignorar partes anteriores de conversaciones largas.
- Fix: reduzca el tamaño de los mensajes del sistema, recorte
MEMORY.mdo divida la tarea en sesiones más cortas con notas de puntos de control explícitas
Step 5 — ¿Está dañado el índice vectorial SQLite?
- Symptom: La búsqueda de memoria no arroja resultados o arroja resultados claramente irrelevantes.
- Fix:
rm -rf memory/.index/ && OpenClaw reindex - Si aparecen errores de sqlite-vec en los registros: cambie al backend JS a través de
"vectorBackend": "js"
Frequently Asked Questions
P: ¿Por qué OpenClaw olvida todo después de cerrar la terminal?
R: La causa más común es que el directorio memory/ no existe. OpenClaw suelta silenciosamente notas diarias cuando falta el directorio: sin errores ni advertencias. Cree el directorio en la raíz de su proyecto y verifique que aparezca un archivo fechado después de su próxima sesión.
P: Mi agente sigue las instrucciones al principio pero las ignora más adelante en tareas largas. ¿Por qué?
R: Eso es compactación. Cuando la ventana de contexto se llena, OpenClaw resume el contenido anterior para hacer espacio. Los resúmenes preservan hechos, no instrucciones de comportamiento. Mueva sus reglas a MEMORY.md debajo de una sección ## [PINNED] para que se vuelvan a leer después de cada ciclo de compactación.
P: ¿Debería utilizar Memory-Core o Memory-wiki?
R: Comience con memory-core. No tiene configuración y maneja bien la mayoría de las cargas de trabajo de desarrolladores individuales. Actualice a memory-wiki solo si su base de conocimientos supera ~50 hechos, necesita detección de contradicciones o varios agentes están escribiendo en la misma bóveda de memoria.
P: ¿Cuántos ciclos de compactación puedo esperar en un funcionamiento autónomo de 2 horas?
R: Espere de 3 a 5 ciclos de compactación. El umbral se basa en el recuento de tokens, no en el tiempo transcurrido ni en la etapa de la tarea, y no es configurable por el usuario en el complemento memory-core predeterminado. Es por eso que la fijación con pasadores resistentes a la compactación en MEMORY.md es esencial para tareas de larga duración.
P: La búsqueda de memoria arroja resultados irrelevantes. ¿Cómo lo soluciono?
R: Es probable que el índice vectorial SQLite esté dañado o obsoleto. Ejecute rm -rf memory/.index/ && OpenClaw reindex para reconstruirlo a partir de sus archivos .md. Es seguro ejecutarlo en cualquier momento. Si los errores de sqlite-vec persisten (comunes en ARM Linux y algunas configuraciones de Windows), cambie al backend de JS.
P: ¿Puedo ejecutar varios agentes en el mismo directorio de memoria?
R: Yes, pero necesita reglas de propiedad explícitas. Las escrituras simultáneas en el mismo archivo .md producirán conflictos. Utilice subdirectorios por agente (memory/agent-a/, memory/agent-b/) con un memory/shared/MEMORY.md compartido y utilice memoria-wiki para la bóveda compartida.
P: ¿Cuánto tiempo permanecen las notas diarias en la ventana de carga automática?
R: Sólo las notas diarias de hoy y ayer se cargan automáticamente al inicio de la sesión. Las notas más antiguas quedan fuera de la ventana de carga automática y solo se puede acceder a ellas mediante búsqueda semántica. Esto es así por diseño: cargar cada nota histórica consumiría demasiado presupuesto de contexto.
Veredicto final: la configuración de la memoria que realmente se mantiene
Recommended baseline para la mayoría de los usuarios: Complemento memory-core, directorio memory/ creado antes de la primera sesión, MEMORY.md con reglas de comportamiento en una sección fijada claramente etiquetada, notas diarias adjuntas a lo largo de cada sesión.
El único error detrás del 80% de los problemas de olvido: no crear el directorio memory/ combinado con ninguna fijación resistente a la compactación en MEMORY.md. El agente descarta el contexto en el primer ciclo de compactación y no tiene dónde volver a escribirlo.
Su lista de verificación de acciones:
- Cree el directorio
memory/en la raíz de su proyecto - Copie la plantilla inicial
MEMORY.mdanterior y complete su contexto - Verifique que
plugins.slots.memoryesté configurado en"memory-core"(o el complemento elegido) - Agregue entre 3 y 5 reglas de comportamiento más importantes en
## [PINNED]enMEMORY.md - Después de su primera sesión, confirme que se escribió una nota diaria con fecha.
- Si la búsqueda semántica no funciona, ejecute
OpenClaw reindexpara reconstruir el índice vectorial
La arquitectura es sólida una vez que la entiendes. La mayoría de los problemas de olvido se resuelven dentro de los 10 minutos siguientes a seguir esta lista de verificación.