Claude-Mem : mémoire persistante pour Claude Code, guide pratique

ai
claude
tutorial
mcp
Author

Sylvain Pham

Published

February 7, 2026

Claude Code oublie tout entre deux sessions. Chaque nouvelle conversation repart de zéro : pas de souvenir des fichiers lus, des choix d’architecture pris, ni des bugs corrigés la veille. Claude-Mem résout ce problème en capturant automatiquement les observations de chaque session et en les réinjectant au démarrage suivant.

Ce post explique comment l’installer, comment il fonctionne sous le capot, et comment l’utiliser au quotidien.

Le problème : la mémoire volatile des agents

Un agent IA comme Claude Code travaille dans une fenêtre de contexte limitée. Quand on ferme la session, tout disparaît. On se retrouve à répéter les mêmes explications, re-décrire l’architecture du projet, ou re-découvrir des patterns qu’on avait déjà établis.

C’est un problème connu. Plusieurs startups lèvent des millions pour le résoudre (Mem0, Letta, Supermemory…). Mais côté open source, des solutions pratiques existent déjà, et Claude-Mem en fait partie.

Comment ça marche

Claude-Mem s’appuie sur le système de hooks de Claude Code pour intercepter le cycle de vie d’une session :

┌─────────────────────────────────────────────────────────────┐
│ 1. SessionStart → Injecte le contexte des 10 dernières     │
│                    sessions dans le prompt                  │
└─────────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────────┐
│ 2. UserPromptSubmit → Crée une session, sauvegarde les     │
│                        prompts utilisateur                  │
└─────────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────────┐
│ 3. PostToolUse → Capture les observations (Read, Write,    │
│                   Bash, Grep, etc.)                         │
└─────────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────────┐
│ 4. Stop → Génère un résumé structuré de la session         │
│           (requête, investigation, apprentissages, suite)   │
└─────────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────────┐
│ 5. SessionEnd → Marque la session comme terminée           │
└─────────────────────────────────────────────────────────────┘

Au prochain lancement, le hook SessionStart injecte silencieusement les résumés des sessions précédentes dans le contexte de Claude. L’agent retrouve ainsi une continuité de connaissance.

Installation

1. Installer le plugin

Dans un terminal Claude Code :

/plugin marketplace add thedotmack/claude-mem
/plugin install claude-mem

Redémarrer Claude Code. Le plugin lance automatiquement son hook SessionStart et vérifie les dépendances via un script smart-install.js.

2. Le service worker (optionnel)

Le worker démarre automatiquement via le hook. On peut aussi le gérer manuellement :

npm run worker:start    # démarrer le worker (port 37777)
npm run worker:status   # vérifier le statut
npm run worker:restart  # redémarrer

Vérifier que tout tourne :

curl http://localhost:37777/api/health

3. Interface web

Naviguer vers http://localhost:37777 pour visualiser en temps réel les observations et résumés stockés.

Les 5 hooks en détail

Le plugin enregistre 5 hooks dans plugin/hooks/hooks.json :

Hook Déclencheur Action
SessionStart Ouverture de Claude Code Vérifie le worker, injecte le contexte des sessions précédentes
UserPromptSubmit Envoi d’un prompt Crée/récupère la session en base, sauvegarde le prompt nettoyé
PostToolUse Après chaque outil Capture l’observation (outil, entrée, sortie) et l’envoie au worker
Stop Pause utilisateur Génère un résumé structuré (request, investigated, learned, completed, next_steps)
SessionEnd Fermeture de session Marque la session comme terminée, notifie l’interface via SSE

Le hook PostToolUse filtre les outils à faible valeur (TodoWrite, AskUserQuestion…) pour ne garder que les observations utiles.

Architecture du worker

Le worker est un processus Node/Bun séparé qui tourne sur le port 37777 :

┌─────────────────────────────────────────────────────────────┐
│                    Worker Service                            │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│   Express HTTP  ──►  API REST pour les hooks                │
│       │                                                      │
│       ├── SessionStore  ──►  CRUD SQLite (sessions,         │
│       │                       prompts, observations)         │
│       │                                                      │
│       ├── SDK Agent  ──►  Compression des observations      │
│       │                   via Claude Agent SDK               │
│       │                                                      │
│       ├── SessionSearch  ──►  Recherche FTS5 + ChromaDB     │
│       │                                                      │
│       └── SSE  ──►  Events temps réel vers l'interface      │
│                                                              │
└─────────────────────────────────────────────────────────────┘

Le composant clé est le SDK Agent : pour chaque observation reçue, il appelle le Claude Agent SDK pour compresser le contenu brut en un résumé structuré, puis stocke le résultat en base.

Endpoints principaux

Endpoint Méthode Description
/api/health GET Statut du worker
/api/context/inject GET Récupère le contexte à injecter (paramètre project)
/api/sessions/observations POST Enregistre une observation
/api/sessions/summarize POST Génère le résumé de fin de session
/api/sessions/complete POST Marque une session comme terminée

Schéma de la base SQLite

Quatre tables organisent les données :

Table Contenu
sdk_sessions ID session Claude, projet, premier prompt, compteur de prompts, statut, timestamps
user_prompts Chaque prompt soumis, lié à une session
observations Nom de l’outil, entrée/sortie nettoyées, observation compressée, timestamp
session_summaries Résumé structuré : request, investigated, learned, completed, next_steps

La recherche plein texte passe par une table virtuelle FTS5 indexée sur les observations compressées.

Recherche : le workflow MCP en 3 couches

La recherche dans l’historique utilise des outils MCP avec un workflow progressif qui réduit la consommation de tokens d’un facteur ~10 par rapport à un RAG classique :

Couche 1 : Search (index compact)

Requête : "comment j'ai configuré le SSL"
Résultat : liste d'IDs + titres + timestamps (~50-100 tokens chacun)

Couche 2 : Timeline (contexte autour d’un point)

Requête : observation #42, ±5 observations
Résultat : vue chronologique de ce qui s'est passé autour

Couche 3 : Get Observations (détails complets)

Requête : IDs [42, 43, 45]
Résultat : texte complet, entrées/sorties des outils (~500-1000 tokens chacun)

Ce pattern de progressive disclosure évite de charger 10-20k tokens d’un coup. On filtre d’abord, on zoome ensuite.

Configurer le serveur MCP dans Claude Desktop

Pour exposer la recherche dans Claude Desktop :

{
  "mcpServers": {
    "mcp-search": {
      "command": "node",
      "args": [
        "/Users/YOUR_USERNAME/.claude/plugins/marketplaces/thedotmack/plugin/scripts/mcp-server.cjs"
      ]
    }
  }
}

Dans Claude Code, le serveur MCP est configuré automatiquement à l’installation du plugin.

Gestion de la vie privée

Les données sensibles peuvent être protégées avec des balises <private> :

<private>Mon token API est xyz123</private>

Les hooks suppriment ces balises avant d’envoyer les données au worker. Une seconde balise <claude-mem-context> empêche le plugin de ré-ingérer ses propres résumés.

Retour d’expérience

Quelques points à noter après utilisation :

  • Le gain de contexte est réel : sur un projet suivi pendant plusieurs jours, Claude retrouve naturellement les conventions établies et les décisions prises
  • L’impact sur les performances peut être significatif : le worker en arrière-plan consomme des ressources. Sur une machine modeste, surveiller l’usage CPU/RAM
  • La sécurité de l’API n’est pas durcie par défaut (le worker écoute sur localhost sans auth). Acceptable en local, mais à sécuriser si exposé

Stack technique

Composant Technologie
Runtime Node 18+ / Bun
Base de données SQLite (WAL mode) + FTS5
Recherche sémantique ChromaDB (optionnel)
Compression Claude Agent SDK
API Express (port 37777)
Interface Web viewer temps réel (SSE)

Liens


Le sujet de la mémoire persistante pour les agents IA est en pleine explosion : Mem0 ($24M levés), Letta ($10M), Supermemory ($2.6M). Claude-Mem propose une approche locale et open source qui fonctionne déjà aujourd’hui avec Claude Code.