Hippocampus: Haz que el agente aprenda de sus errores
Los errores cometidos se escriben en notes/, mem build los compila en un índice, y antes de una tarea similar se consulta cómo se falló la última vez. La CLI es mem.
Directorio raíz de memoria $MEM_HOME (por defecto ~/.claude/memory). Todo es texto plano; mem build genera las otras tres capas desde notes/.
Cuándo usar
- Antes de comenzar una tarea no trivial: consulta si esto se ha hecho antes, si hay decisiones o errores.
- Cuando el usuario menciona «la última vez», «ya lo dijimos antes», «como es costumbre».
- Antes de enviar un subagente: escribe las memorias relevantes en la especificación.
- Después de obtener un resultado reutilizable, resolver un problema recurrente, o recibir una corrección del usuario: escribe una nota.
Modelo de cuatro capas
| Capa | Archivo | Contenido | Quién escribe |
|---|---|---|---|
| Tier-0 | MEMORY.md | Tabla de ruteo: acuerdos de lectura/escritura, lista de packs, últimas 12 notas; con presupuesto de bytes (por defecto 12000) | mem build |
| Tier-1 | packs/<id>.md | Una página por área; cada nota tiene una línea de descripción + ruta | mem build |
| Tier-2 | catalog.tsv | Una línea por nota: pack date type name title bytes gist | mem build |
| Tier-3 | notes/*.md | Texto original, con front-matter YAML | mem add crea el archivo, tú llenas el contenido |
Reglas de clasificación en $MEM_HOME/.memorypack/packs.json: si el front-matter metadata.pack tiene un id válido, se usa ese; si no, se puntúa por palabras clave (strong +3, keywords +1); con puntuación cero va a misc.
Ruta de lectura (en orden, detente cuando sea suficiente)
- Lee
MEMORY.mdcompleto (es pequeño, diseñado para leerse entero). - Según «cuándo leer», encuentra el área →
mem pack <id>escanea esa área. - Si necesitas localizar entradas específicas →
mem find <palabra clave> [--pack <id>] [--limit N], solo devuelve líneas del catálogo. - Solo para las 1-3 notas acertadas →
mem show <nombre>lee el texto original.
Cuando la memoria entre en conflicto con la evidencia actual (código, registros, salida de comandos), prevalece la evidencia actual y se informa al usuario qué nota ha quedado obsoleta.
Ruta de escritura (solo esta)
mem add <slug> --type project|feedback|reference [--pack <id>] [--title "título"]
# Abre la ruta impresa, escribe una línea de description + FACT / decisión / error / relacionado
mem build
descriptiones lo único que aparecerá en las tres capas superiores. Escríbela como una frase: «qué es esto + cuándo usarlo».- Para modificar una nota existente: edita directamente el archivo en
notes/y luego ejecutamem build. - Después de escribir, puedes ejecutar
mem doctorpara verificar presupuesto, enlaces rotos y descripciones faltantes.
Prohibiciones
- No modifiques manualmente
MEMORY.md,packs/*, nicatalog.tsv: son archivos generados y se sobrescribirán en el próximo build. - No leas
notes/en lotes (nicat notes/*, ni leas archivo por archivo después dels, ni hagas grep al texto completo del directorio): usamem find. - No elimines notas a menos que el usuario lo solicite explícitamente; si están obsoletas, márcalo en el texto original y actualiza la descripción.
- No escribas secretos, tokens, contraseñas, claves privadas ni información personal identificable en las notas.
- No abras un segundo repositorio de memoria; para rutas antiguas de otras herramientas, usa enlaces simbólicos que apunten a
$MEM_HOME.
Referencias
- Mantenimiento diario:
prompts/maintain.md - Revisión posterior a la conversación y construcción proactiva:
prompts/proactive-build.md - Fragmento de reglas que se puede pegar en AGENTS.md / CLAUDE.md:
prompts/agents-snippet.md - Ejemplos de hooks:
prompts/hooks/