MemoryLake
Volver a todos los artículos
Tutorial7 de agosto de 2026·11 min de lectura

Por qué Claude Code olvida tus correcciones y cómo solucionarlo (2026)

"No, haz siempre `cd backend/` antes de ejecutar eso". Se disculpa, lo hace correctamente y tú sigues adelante. Dos sesiones después, ejecuta el mismo comando desde la raíz del repositorio, la compilación falla silenciosamente sin hacer nada y estás escribiendo la misma corrección por quinta vez.

Aquí está la respuesta directa: hay dos fallos diferentes que llevan el mismo disfraz y necesitan soluciones distintas. La mayoría de las veces, la corrección nunca se escribió en ningún lugar duradero; lo dijiste en una conversación que terminó, por lo que desapareció. Pero a veces está escrita y aun así no se aplica, lo cual es un problema aparte: el almacenamiento no es cumplimiento. Solucionar lo primero es sencillo. Solucionar lo segundo significa hacer que las correcciones importantes se apliquen mecánicamente o sean breves y recuperables en el momento en que correspondan, no solo que estén presentes en algún lugar de un archivo que no para de crecer.

Este artículo separa ambos casos, utiliza un caso real reportado para mostrar por qué la distinción es importante y es honesto sobre con qué correcciones ayuda una capa de memoria y con cuáles no.

Por qué Claude Code olvida tus correcciones

La corrección casi nunca se escribe

Una corrección escrita en un chat es contexto conversacional. Da forma al resto de esa sesión y luego la sesión termina. Claude Code inicia la siguiente a partir de tus archivos (CLAUDE.md, el repositorio, lo que sea que le indiques) y tu corrección no estaba en ninguno de ellos.

Este es el caso mayoritario y es algo común. Se siente como olvidar una lección porque lo experimentaste como una enseñanza. Mecánicamente, nunca se guardó nada. Es la misma brecha detrás de que Claude Code inicie cada sesión sin el contexto de tu proyecto — la herramienta es sin estado por diseño, y solo los archivos sirven de puente entre sesiones.

Que esté escrito no es lo mismo que se actúe en consecuencia

Aquí está la parte que cambia el consejo, y está documentada en lugar de ser anecdótica.

El 22 de marzo de 2026, se registró un problema en el repositorio anthropics/claude-code titulado "Claude repeatedly fails to apply its own memory/feedback — same mistakes recur across sessions" (Claude falla repetidamente al aplicar su propia memoria/retroalimentación: los mismos errores se repiten entre sesiones). La descripción del reportero es precisa: "El sistema de memoria de Claude Code almacena correctamente la retroalimentación y las reglas, pero el modelo falla constantemente al aplicarlas. El mismo tipo de errores se repite entre sesiones a pesar de que los archivos de memoria se actualizaron varias veces (más de 5 actualizaciones para el mismo problema)".

Sus ejemplos son del tipo que cualquiera reconoce:

  • La memoria dice hacer siempre `cd` a `backend/` antes de ejecutar comandos del backend y hacer siempre `cd` a `frontend/` antes de `vite build`. Los comandos se siguen ejecutando desde el directorio incorrecto, lo que produce fallos de compilación o ejecuciones silenciosas sin efecto.
  • La memoria dice recompilar siempre `dist` después de cambios en `App.jsx` y copiar siempre los archivos de `public/` a `dist/`. Los pasos se omiten y se sirve un bundle obsoleto.
  • La memoria dice los cambios no confirmados se pierden al sincronizar. Los archivos se siguen copiando de forma ad-hoc a producción sin un commit, y el cambio se revierte silenciosamente en la siguiente sincronización.
  • Una solución de una sesión anterior (cambiar marmot.svg por marmot.png) nunca se confirmó, se revirtió y tuvo que solicitarse de nuevo.

El resumen del reportero es la frase que hay que recordar: "El sistema de memoria captura el conocimiento pero no influye de manera confiable en el comportamiento". Lo llamaron un "problema de Alzheimer" en Claude Code CLI con Opus 4.6 y memoria basada en archivos.

Dos cosas para ser claros. El problema fue cerrado como no planificado, por lo que se trata de un reporte de usuario más que de un defecto reconocido. Y demuestra algo inconveniente para la conclusión obvia: en ese caso, agregar más almacenamiento no habría ayudado. La regla estaba guardada. Cinco veces.

Las sesiones largas entierran la regla que estableciste al principio

Hay un tercer mecanismo que parece rebeldía y no lo es. En una sesión larga, una instrucción del principio puede quedar fuera del alcance confiable; los profesionales que escriben sobre esto lo describen con precisión: el modelo no está ignorando lo que dijiste al inicio de la sesión, simplemente ya no puede verlo lo suficientemente bien como para recuperarlo. La corrección que diste hace una hora está técnicamente en la conversación y funcionalmente desaparecida.

Por eso la misma corrección puede mantenerse durante veinte minutos y evaporarse en el minuto noventa, y por eso también es el mecanismo detrás de que los archivos de conocimiento queden fuera del contexto a medida que la sesión se alarga.

Una corrección sin su activador es solo un dato curioso

La mayoría de las correcciones son condicionales: cuando se despliega, antes de ejecutar comandos del backend, si tocaste App.jsx. Escrita en un archivo de instrucciones en constante crecimiento, la condición sobrevive como prosa que el modelo tiene que notar que se aplica. No hay ningún mecanismo que haga surgir el "hacer siempre cd primero" en el momento en que un comando está a punto de ejecutarse.

Así que el fallo no se debe solo a si la regla existe. Es que la regla existe en un lugar que no tiene relación con el momento en que se necesita.

Lo que la gente intenta

Añadirlo a `CLAUDE.md`. El primer paso correcto, y realmente funciona para convenciones estables e incondicionales. Sus límites son los mencionados anteriormente: el archivo crece, se carga por completo y una línea enterrada en la posición 180 compite con todo lo demás por la atención. El reporte #37314 es cómo se ve el extremo de este enfoque.

Repetir la corrección con más fuerza. MAYÚSCULAS, "IMPORTANTE:", "NUNCA". Ligeramente efectivo, pero no escala: una vez que hay seis reglas gritando, ninguna destaca.

`/clear` después de dos correcciones fallidas. Una técnica real que recomiendan los usuarios experimentados: si una corrección no ha funcionado tras dos intentos, limpia la sesión en lugar de acumular un contexto lleno de fallos. Efectivo y contundente, aunque también pierdes todo lo útil de esa sesión.

`/compact` para mantener la sesión ágil. Ayuda con el mecanismo de sesiones largas al comprimir la conversación para que el modelo pueda continuar. Sin embargo, la compactación tiene pérdidas por definición, por lo que también puede ser lo que elimine tu corrección.

Convertir la corrección en código. Subestimado, y para un tipo específico de corrección es simplemente la respuesta correcta; más sobre esto a continuación.

Un archivo de notas activas desde el que copias y pegas. Funciona porque es externo y duradero, pero tú eres el sistema de recuperación, decidiendo en cada sesión qué correcciones son relevantes y pegándolas.

La solución: hacer que las correcciones sean recuperables en el momento en que importan

Primero, clasifica tus correcciones en dos grupos. Este es el paso que marca la diferencia.

Grupo uno: correcciones que se pueden mecanizar. "Hacer siempre cd a backend/ primero". "Recompilar siempre dist después de cambiar App.jsx". "Confirmar (commit) antes de desplegar". Cada ejemplo en ese problema de GitHub está en este grupo, y para estos, la recomendación honesta no es una capa de memoria. Es un script de npm que haga el cd por ti, un target de Makefile que recompile, un gancho de pre-commit, una comprobación de CI que falle en un despliegue no confirmado. Una regla que un agente no puede violar supera a una regla que se supone que debe recordar, y además te protege de tu propio yo del futuro. Si te quedas con una sola cosa de este artículo, que sea esta.

Grupo dos: correcciones que no se pueden mecanizar. "Permitimos ese patrón en la capa del adaptador porque el upstream devuelve 200 en caso de fallo". "El cliente rechazó el enfoque modal en marzo". "No refactorices el importador heredado, se reemplazará en el cuarto trimestre (Q4)". Ningún script impone el criterio. Estas son las que deben escribirse en algún lugar duradero, mantenerse breves y mostrarse cuando sean relevantes; y aquí es donde una capa de memoria externa hace un trabajo real: la corrección vive fuera de cualquier sesión individual, se recupera cuando surge el tema en lugar de cargarse en cada solicitud y se mantiene lo suficientemente corta como para competir realmente por la atención.

MemoryLake está diseñado para el grupo dos: un almacén del que tus agentes leen a través de MCP o la API, que contiene las decisiones y restricciones que produjo tu trabajo en lugar de acumularlas en un archivo de instrucciones que se hace más largo cada semana.

El límite debe establecerse claramente, porque el caso #37314 es exactamente el que lo demuestra: una capa de memoria no garantiza que el modelo cumpla. Que un agente actúe según lo que lee es un comportamiento del modelo, y ningún sistema de almacenamiento controla eso. Lo que cambia es la disponibilidad y la forma: la restricción está presente, actualizada y es breve en el momento en que es relevante, en lugar de faltar por completo o estar enterrada en la línea 180. Eso es una mejora real y no es una garantía. Cualquiera que te diga lo contrario te está vendiendo algo.

Paso 1: Crea una clave de API

Genera una clave y realiza tu primera solicitud en unos 30 segundos. Manténla en tu entorno o en un gestor de secretos en lugar de en un archivo de configuración que podrías confirmar (commit).

Crear una clave de API de MemoryLake
Crear una clave de API de MemoryLake

Paso 2: Sube tus primeras memorias

Arrastra los documentos, imágenes y archivos que contienen tus correcciones del grupo dos: el documento de decisiones con sus motivos, las notas de arquitectura, los informes de "probamos esto y falló porque". Sube las fuentes en lugar de un resumen ordenado; el motivo detrás de una corrección suele ser la parte que se elimina al resumir, y el motivo es lo que evita que se vuelva a discutir.

Subir tus primeras memorias a MemoryLake
Subir tus primeras memorias a MemoryLake

Paso 3: Conecta tu IA y agentes

Dale a Claude, Codex, OpenClaw y otros agentes de IA acceso a la memoria a través de MCP o la API. Claude Code admite servidores MCP, por lo que esto es una entrada de configuración. El mismo almacén es luego legible desde tus otros agentes, lo cual es importante porque las correcciones no dejan de ser ciertas cuando cambias de herramienta.

Conectar tu IA y agentes a través de MCP
Conectar tu IA y agentes a través de MCP

Qué cambia esto en la práctica

El cambio más inmediato es que tu CLAUDE.md deja de crecer. Las reglas mecanizables se convierten en scripts y ganchos (hooks); las correcciones basadas en el criterio se trasladan al almacén. Lo que queda es un archivo corto de reglas permanentes a las que el modelo realmente puede prestar atención, lo cual es la solución al problema de la atención, no un parche para el mismo.

Lo segundo es que la quinta repetición se detiene. No porque el modelo se haya vuelto más obediente, sino porque las dos categorías ahora se manejan mediante mecanismos que se adaptan a ellas: los errores en el orden de compilación no pueden ocurrir, y las decisiones basadas en el criterio son recuperables en lugar de tener que ser recordadas.

Lo tercero es que las correcciones sobreviven al límite de la sesión en un formato que puedes auditar. Cuando algo está mal, editas un solo registro en lugar de buscar dónde lo escribiste, y puedes ver si la corrección se llegó a capturar alguna vez, lo que suele ser la respuesta.

And they survive the tool. "Don't refactor the legacy importer" is true in Cursor and Codex too. Kept in CLAUDE.md, it's a Claude Code fact; kept in a shared store, it's a project fact — the same reason añadir una capa de memoria a Claude Code tiende a sobrevivir a cualquier agente que estés usando este trimestre.

Buenas prácticas para correcciones que perduren

Mecaniza todo lo que sea mecanizable

Antes de escribir una corrección, pregúntate si un script, un gancho (hook) o una comprobación de CI podría hacer que fuera imposible equivocarse. Si es así, haz eso en su lugar. Cada ejemplo en el caso reportado anteriormente era mecanizable, y el reportero actualizó la memoria cinco veces en lugar de agregar un script de npm de una sola línea. Esto no es una crítica hacia ellos; es la trampa que tiende todo el flujo de trabajo, porque escribir una regla se siente como el mismo tipo de acción que escribir código.

Escribe el activador, no solo la instrucción

"Usa snake_case para las columnas de la base de datos" es débil. "Al agregar una migración en db/migrations/, usa snake_case para los nombres de las columnas; el mapeo del ORM lo asume" le da al modelo una condición para reconocer y una razón para no dudar. Las correcciones que nombran su activador sobreviven mejor que las correcciones expresadas como meras preferencias.

Mantén corto a propósito el archivo que siempre se carga

Cada línea en CLAUDE.md se carga en cada tarea y compite con todas las demás líneas. Trátalo como un recurso escaso: solo reglas permanentes, limitadas a algo que tú mismo volverías a leer. Todo lo demás pertenece a la recuperación. Un archivo de instrucciones largo no es más minucioso, es menos efectivo, y el problema de atención en sesiones largas empeora esto, no lo mejora.

Detente después de dos correcciones fallidas y cambia de enfoque

Si una corrección no ha funcionado dos veces, la tercera repetición no lo solucionará. O bien mecanízala, muévela a un registro corto recuperable, o limpia la sesión y comienza de nuevo. Repetir una corrección en un contexto que ya está lleno de fallos de esa misma corrección es la opción menos efectiva disponible.

Confirma (commit) la solución antes de continuar

Vale la pena interiorizar el caso de marmot.svg en ese reporte: la corrección se aplicó, pero luego se perdió porque nunca se confirmó (commit). Algunos casos de "se le olvidó" son en realidad "nunca se persistió en ningún lado", y eso incluye a git.

Conclusión

Claude Code olvida tus correcciones por dos razones diferentes y las soluciones no son intercambiables. Por lo general, la corrección nunca se escribió en ningún lugar duradero, por lo que no había nada que recordar. A veces, como documentó un reporte de marzo de 2026 en el repositorio claude-code, con archivos de memoria actualizados cinco o más veces para el mismo problema y el reportero concluyendo que el sistema de memoria "captura el conocimiento pero no influye de manera confiable en el comportamiento", estaba escrita y aun así no se aplicó.

Así que divídelas. Mecaniza lo que un script o un gancho (hook) pueda imponer, porque una regla que no se puede violar supera a una regla que se tiene que recordar. Coloca las correcciones basadas en el criterio en un almacén que las mantenga cortas, actualizadas y recuperables en el momento en que se apliquen, y mantén tu archivo de instrucciones que siempre se carga lo suficientemente pequeño como para que el modelo realmente pueda prestarle atención. Esa combinación maneja ambos modos de fallo. Ninguno de los dos por sí solo lo hace.

Preguntas frecuentes

¿Es esto un error en Claude Code?

No uno reconocido. El problema del 22 de marzo de 2026 que describía que la memoria se almacenaba pero no se aplicaba fue cerrado como no planificado, así que trátalo como un reporte de usuario bien documentado en lugar de un defecto confirmado. De todos modos, es evidencia útil sobre el modo de fallo y es la razón para tratar el almacenamiento y el cumplimiento como problemas separados.

¿Hará una capa de memoria que Claude Code realmente siga mis correcciones?

No por sí sola, y este es el límite honesto. Que un modelo actúe según lo que lee es un comportamiento del modelo; ninguna capa de almacenamiento lo controla. Lo que cambia una capa de memoria es que la corrección existe fuera de la sesión, se mantiene actualizada, es corta y se recupera cuando es relevante, en lugar de estar ausente o enterrada en un archivo largo. Eso ayuda notablemente. No es una garantía, y para cualquier cosa crítica querrás imposición, no memoria.

¿Por qué la misma corrección funciona durante un tiempo y luego deja de hacerlo?

Sesiones largas. Una instrucción del principio de una sesión puede dejar de ser recuperable de manera confiable a medida que crece el contexto; no se está ignorando, está fuera del alcance efectivo. Por eso tanto /compact como /clear ayudan, y por eso mover las correcciones importantes fuera de la conversación y a archivos o a un almacén es más duradero que decirlas bien.

¿Debería poner simplemente cada corrección en CLAUDE.md?

Pon tus reglas permanentes allí y mantenlo corto. CLAUDE.md se carga en cada tarea, por lo que cada línea te cuesta en cada solicitud y compite por la atención con todas las demás líneas. Las correcciones condicionales y situacionales funcionan mejor como registros recuperados; las mecanizables funcionan mejor como scripts y ganchos (hooks). Un archivo de instrucciones de 300 líneas no es cinco veces más efectivo que uno de 60 líneas.

¿En qué se diferencia esto de que Claude olvide mis convenciones?

Las convenciones son cosas que expresaste una vez como una preferencia general; el problema de las convenciones de la casa se trata de que no estén presentes en absoluto. Las correcciones son reactivas y específicas: viste un resultado incorrecto y lo solucionaste. La diferencia importa porque las correcciones casi siempre conllevan una condición de activación y un motivo, y ambos se descartan cuando la corrección se aplana en una preferencia.

¿Ocurre esto con otros agentes de programación?

Sí, es estructural, no específico de un proveedor. Cada agente que lee archivos de instrucciones e inicia sesiones desde cero tiene los mismos dos modos de fallo, razón por la cual aparece la misma queja sobre ChatGPT volviendo a proponer ideas que ya rechazaste. También es la razón por la que mantener las correcciones en un archivo específico de la herramienta significa volver a enseñar a cualquier agente al que te cambies a continuación.

Lecturas relacionadas