Memoria del agente
La IA es buena leyendo código y conversaciones, pero cuando termina la sesión olvida «qué puede hacer en este banco de trabajo». Por eso, una tarea que ya logró una vez (desplegar·compilar·conectarse a la BD) la vuelve a juzgar erróneamente en la siguiente sesión como «no puedo, no tengo credenciales».
La memoria del agente hace que la IA almacene los hechos que ha verificado en un cajón de coincidencia exacta y los recupere automáticamente en la siguiente sesión. No compite con RAG (búsqueda por aproximación semántica), sino que reparte roles: el juicio sobre hechos al cajón, la exploración aproximada a la biblioteca.
Por qué es necesario — partiendo de un incidente real
Sección titulada «Por qué es necesario — partiendo de un incidente real»El despliegue de Blyck era posible directamente desde este PC (el CLI aws estaba configurado, había historial de despliegues directos) y el procedimiento estaba documentado. Sin embargo, el agente juzgaba erróneamente de forma repetida en cada sesión que «no podía desplegar por falta de credenciales». La causa fue que, mirando solo los comentarios del código, dedujo «paso adicional = yo no puedo».
Al diagnosticarlo, el eslabón débil no era el recuerdo, sino el almacenamiento.
| Etapa | Estado | Fundamento |
|---|---|---|
| Recuerdo (recall) | Correcto | Si hubiera estado almacenado, se habría leído sin duda |
| Almacenamiento (capture) | Fallo | «despliegue posible desde este PC» nunca se persistió |
Es decir, no es que no recordara, sino que nunca creó el elemento a recordar. La acción (un s3 cp) parece volátil, pero la capacidad que demuestra («despliegue posible») es un hecho persistente y reutilizable. El fallo en esta distinción era el punto ciego.
Principios clave
Sección titulada «Principios clave»- La memoria no se mete en la sopa de RAG. Los recuerdos de hechos/capacidades se recuperan por coincidencia exacta, no por búsqueda por aproximación semántica.
- El almacenamiento no depende de la consciencia propia. Las acciones exitosas se ascienden automáticamente a candidatas a capacidad (con compuerta de aprobación).
- El recuerdo se inyecta automáticamente. Los recuerdos relevantes entran en el contexto sin necesidad de invocación.
- Verificar antes de declararse incapaz. Antes de decir «no puedo», consulta la memoria y verifica con una sonda barata.
Analogía — la biblioteca y el cajón del escritorio
Sección titulada «Analogía — la biblioteca y el cajón del escritorio»- 📚 Búsqueda en la biblioteca (RAG): acumula todo —código, conversaciones, logs— y «busca cosas parecidas». Es voluminoso y aproximado, por lo que se cuela basura. → Para «¿dónde estaba aquel código parecido de antes?».
- 🗂️ Cajón de notas sobre el escritorio (memoria): solo unos pocos hechos clave verificados, ordenados. Es exacto y siempre está a la vista. → Para «despliegue posible desde este PC», «no tocar la BD de PROD».
RAG y la memoria no compiten, sino que se reparten el trabajo. El juicio sobre hechos al cajón (primera prioridad), la exploración aproximada a la biblioteca (apoyo).
Cajón exacto tipado
Sección titulada «Cajón exacto tipado»Los recuerdos se almacenan como registros tipados en una tabla dedicada de workspace.sqlite.
| Campo | Descripción |
|---|---|
type | capability · decision · rule · procedure · fact |
scope | workspace (predeterminado) · global |
key | Identificador de coincidencia exacta (p. ej. deploy:blyck) |
body | Cuerpo del hecho legible por humanos |
confidence | 0~1 (verificado=1.0) |
proof | Fundamento (p. ej. «aws sts pasó; s3 cp con éxito») |
status | active · stale · retired |
Almacenamiento (capture) — el eslabón débil por triplicado
Sección titulada «Almacenamiento (capture) — el eslabón débil por triplicado»| Método | Disparador | Bloqueo de basura |
|---|---|---|
| Explícito | Herramienta MCP memory_write(key, body, type, scope) | Solo invocación intencional |
| Ascenso automático | Detecta eventos de éxito (despliegue·compilación·autenticación·conexión a BD) en el registro de actividad → genera candidata | Compuerta de aprobación |
| Pase de reflexión | Al cerrar el chat / en hitos, resumen de la sesión → extrae candidatas de «¿hechos persistentes aprendidos?» | Compuerta de aprobación |
Las tres vías entran en el cajón solo tras la aprobación, por lo que no hay ruido de absorción automática al estilo RAG.
Ejemplos de eventos de éxito que el clasificador de ascenso automático eleva a candidatos de capacidad:
- Autenticación/despliegue externo con éxito (
aws … con éxito,gh auth, deploy/publish) →capability - Compilación/empaquetado con éxito (
npm run dist, tests aprobados) →capability/procedure - Conexión a BD/SSH con éxito (credenciales verificadas) →
capability - Regla dada por el usuario en imperativo («no toques PROD») →
rule - Lo demasiado trivial o puntual (simple lectura de archivos, etc.) se excluye — para evitar la fatiga de aprobaciones
Recuerdo (recall) — inyección automática
Sección titulada «Recuerdo (recall) — inyección automática»Cada turno, al ensamblar el contexto, se intercala una etapa de recuperación de memoria.
- Coincidencia exacta de
key+ coincidencia semántica ligera con la consulta actual·panel activo·proyecto. - Los k recuerdos
activeprincipales se inyectan automáticamente en el prompt del sistema (sin invocación aparte). - Ponderación por recency·importance + decay → los recuerdos sin uso prolongado pasan de
stalearetired.
Herramientas de IA (MCP)
Sección titulada «Herramientas de IA (MCP)»| Herramienta | Permiso | Rol |
|---|---|---|
memory_write(key, body, type, scope) | Confirmación | Almacena explícitamente un hecho en el cajón (sobrescribe la misma key) |
memory_read(key?/query?) | Lectura (auto) | Recupera recuerdos por coincidencia exacta de key o coincidencia semántica ligera |
Como la mayoría de los recuerdos se gestionan por inyección automática, no es necesario invocar memory_read uno a uno. Se usa para reforzar la consulta de elementos que la inyección automática haya pasado por alto.
decay y limpieza
Sección titulada «decay y limpieza»Para que el cajón no se hinche, se limpian los recuerdos sin uso prolongado a partir de last_seen.
capability·rule·procedureestán exentos del decay automático — el objetivo es evitar la recaída del §incidente anterior. Una capacidad verificada una vez no desaparece aunque no se use.- Solo
decision·factpasan astalea los 90 días y aretireda los 180 días. - En una consulta explícita,
stalerevive aactive.
Flujo completo — el caso de hoy
Sección titulada «Flujo completo — el caso de hoy»[Captura] primer despliegue con éxito → registro de actividad "s3 cp blyck-releases con éxito" → el clasificador de ascenso lo detecta → candidata {capability, key:"deploy:blyck", body:"Este PC puede desplegar directamente: npm run dist → s3 cp → cloudfront invalidate", proof:"aws sts pasó; s3 cp con éxito"} → [aprobar] → fijada en el cajón
[Recuerdo] siguiente sesión "despliega" → el ensamblaje de contexto inyecta "deploy:blyck" automáticamente → inferir "sin credenciales" se vuelve imposible → cero reincidenciasRelación con la memoria de archivos de Claude
Sección titulada «Relación con la memoria de archivos de Claude»Esta función toma prestada la exactitud y el recuerdo automático de la memoria de archivos de Claude Code (MEMORY.md + *.md, carga automática en cada sesión), pero subsana sus debilidades.
| Aspecto | Memoria de archivos de Claude | Cajón asentado de Blyck |
|---|---|---|
| Ubicación de almacenamiento | Archivos markdown | Tabla workspace.sqlite |
| Disparador de almacenamiento | Juicio del agente (manual) | Manual + ascenso automático por acción + pase de reflexión |
| Almacenamiento automático | ✗ | ✓ (ascenso por eventos de éxito) |
| Basura | Poca | Casi 0 (UNIQUE key + aprobación) |
| Prevención de duplicados | El humano gestiona el índice | UNIQUE(scope, key) automático |
| decay/limpieza | Manual | stale/retire basado en last_seen |
| Conciencia del dominio | Genérica | Especializada en la actividad de Blyck (despliegue·BD·SSH) |
La diferencia decisiva es el almacenamiento automático. El incidente anterior ocurrió con la memoria de archivos de Claude activada: el recuerdo funcionaba bien y el eslabón débil era que «el almacenamiento depende del juicio». Blyck dispone de un registro de acciones, el registro de actividad, que le permite ascender automáticamente los eventos de éxito a candidatos de capacidad, algo estructuralmente imposible solo con la memoria de archivos.
Seguridad
Sección titulada «Seguridad»- Los recuerdos entre chats tienen por defecto
scope=workspace+ filtro de información sensible, por lo que no chocan con el principio de no transferencia entre sesiones globales y de solo lectura. - Los secretos no se almacenan en el cuerpo de la memoria (el almacén cifrado del SO + el enmascarado automático son una vía aparte).
P. Si ya hay RAG, ¿por qué hace falta también la memoria? → RAG es aproximación semántica, por lo que se cuela basura en el juicio sobre hechos. Un hecho verificado como «despliegue posible desde este PC» debe recuperarse 1:1 desde el cajón de coincidencia exacta para que sea seguro. Ambos se reparten el trabajo.
P. ¿Tengo que decir «recuerda esto» uno por uno?
→ No. Puedes almacenar explícitamente con memory_write, pero los eventos de éxito surgen como candidatos de ascenso automático y basta con aprobarlos. Al cerrar el chat, el pase de reflexión también extrae reglas automáticamente.
P. ¿Un recuerdo mal almacenado me va a perseguir para siempre?
→ La misma key se sobrescribe, y decision/fact se limpian por decay. Un recuerdo de capacidad erróneo puedes actualizarlo con memory_write o retirarlo.
P. Si una capacidad verificada desaparece por falta de uso, ¿no volverá a ocurrir el incidente?
→ Por eso capability·rule·procedure están exentos del decay automático. Una capacidad verificada una vez permanece en el cajón aunque no se use.