Hippocampus : faire apprendre de ses erreurs à l'agent
Les pièges rencontrés sont écrits dans notes/, mem build compile l'index, et avant une prochaine tâche similaire, l'agent consulte d'abord comment il a échoué la fois précédente. CLI : mem.
Répertoire racine de la mémoire $MEM_HOME (par défaut ~/.claude/memory). Tout est en texte brut, mem build génère les trois autres couches à partir de notes/.
Quand l'utiliser
- Avant de commencer une tâche non triviale : vérifier si cette tâche a déjà été réalisée, s'il y a des décisions ou des pièges.
- Lorsque l'utilisateur mentionne « la dernière fois », « comme dit précédemment », « selon l'ancienne règle ».
- Avant d'envoyer un sous-agent : inclure les souvenirs pertinents dans le cahier des charges.
- Après avoir obtenu un résultat réutilisable, résolu un problème récurrent, ou avoir été corrigé par l'utilisateur : rédiger une note.
Modèle à quatre niveaux
| Niveau | Fichier | Contenu | Qui écrit |
|---|---|---|---|
| Niveau-0 | MEMORY.md | Table de routage : conventions de lecture/écriture, liste des packs, 12 notes les plus récentes ; avec budget d'octets (par défaut 12000) | mem build |
| Niveau-1 | packs/<id>.md | Une page par domaine, chaque note est une ligne : description + chemin | mem build |
| Niveau-2 | catalog.tsv | Chaque note sur une ligne : pack date type name title bytes gist | mem build |
| Niveau-3 | notes/*.md | Texte original, avec front-matter YAML | mem add crée le fichier, tu rédiges le contenu |
Règles de classification dans $MEM_HOME/.memorypack/packs.json : si le front-matter contient un metadata.pack avec un ID valide, il est utilisé ; sinon, le système note par mots-clés (strong +3, keywords +1). Zéro point va dans misc.
Chemin de lecture (dans l'ordre, arrêter dès que suffisant)
- Lire l'intégralité de
MEMORY.md(il est petit, conçu pour être lu en entier). - Trouver le domaine selon la section « quand lire » →
mem pack <id>pour une lecture rapide de ce domaine. - Pour localiser une entrée spécifique →
mem find <mot-clé> [--pack <id>] [--limit N], ne renvoie que les lignes du catalogue. - Pour seulement 1 à 3 notes ciblées →
mem show <nom>pour lire le texte original.
En cas de conflit entre la mémoire et les preuves tangibles (code, journaux, sorties de commandes), les preuves prévalent et l'utilisateur est informé que la note est obsolète.
Chemin d'écriture (un seul possible)
mem add <slug> --type project|feedback|reference [--pack <id>] [--title "titre"]
# Ouvrir le chemin affiché, remplir la ligne de description + FAIT / décision / piège / éléments connexes
mem build
descriptionest le seul contenu qui apparaît dans les trois premiers niveaux : écris-le comme « ce que c'est + quand l'utiliser » en une phrase.- Modifier une note existante : éditer directement le fichier dans
notes/, puismem build. - Après l'écriture, tu peux exécuter
mem doctorpour vérifier le budget, les liens brisés et les descriptions manquantes.
Interdictions
- Ne pas modifier manuellement
MEMORY.md,packs/*,catalog.tsv: ce sont des fichiers générés, écrasés lors du prochainmem build. - Ne pas lire en bloc
notes/(cat notes/*,lset lire chaque fichier, grep sur l'ensemble du répertoire) : utilisermem find. - Ne pas supprimer une note, sauf demande explicite de l'utilisateur ; si elle est obsolète, la marquer dans le texte original et mettre à jour la description.
- Ne pas écrire de secrets, tokens, mots de passe, clés privées, informations personnelles identifiables dans une note.
- Ne pas créer un second dépôt de mémoire ; les anciens chemins d'autres outils doivent être liés symboliquement vers
$MEM_HOME.
Références
- Maintenance courante :
prompts/maintain.md - Révision de fin de session et construction proactive :
prompts/proactive-build.md - Extrait de règles à coller dans AGENTS.md / CLAUDE.md :
prompts/agents-snippet.md - Exemples de hooks :
prompts/hooks/