Aller au contenu

Vue d'ensemble de la mémoire

OpenClaw se souvient des choses en écrivant des fichiers Markdown bruts dans l’espace de travail de votre agent. Le modèle ne “retient” que ce qui est sauvegardé sur le disque — il n’y a aucun état caché.

Votre agent possède trois fichiers liés à la mémoire :

  • MEMORY.md — mémoire à long terme. Faits durables, préférences et décisions. Chargé au début de chaque session DM.
  • memory/YYYY-MM-DD.md (ou memory/YYYY-MM-DD-<slug>.md) — notes quotidiennes. Contexte d’exécution et observations. Les notes d’aujourd’hui et d’hier sont chargées automatiquement, et les variantes slugged telles que celles écrites par le hook session-memory intégré sur /new ou /reset sont désormais récupérées parallèlement au fichier de date uniquement.
  • DREAMS.md (optionnel) — Journal de rêve et résumés de balayage de rêve pour examen humain, y compris les entrées de rétroremplissage historique ancrées.

Ces fichiers résident dans l’espace de travail de l’agent (par défaut ~/.openclaw/workspace).

MEMORY.md est la couche compacte et curée. Utilisez-la pour les faits durables, les préférences, les décisions permanentes et les courts résumés qui doivent être disponibles au début d’une session privée principale. Elle n’est pas destinée à être une transcription brute, un journal quotidien ou une archive exhaustive.

Les fichiers memory/YYYY-MM-DD.md constituent la couche de travail. Utilisez-les pour les notes quotidiennes détaillées, les observations, les résumés de session et le contexte brut qui peut encore être utile plus tard. Ces fichiers sont indexés pour memory_search et memory_get, mais ils ne sont pas injectés dans le prompt d’amorçage normal à chaque tour.

Au fil du temps, l’agent est censé distiller le matériel utile des notes quotidiennes dans MEMORY.md et supprimer les entrées à long terme obsolètes. Les instructions de l’espace de travail générées et le flux de heartbeat peuvent le faire périodiquement ; vous n’avez pas besoin de modifier manuellement MEMORY.md pour chaque détail mémorisé.

Si MEMORY.md dépasse le budget du fichier d’amorçage, OpenClaw conserve le fichier sur disque intact mais tronque la copie injectée dans le contexte du model. Traitez cela comme un signal pour déplacer le matériel détaillé vers memory/*.md, ne garder que le résumé durable dans MEMORY.md, ou augmenter les limites d’amorçage si vous voulez explicitement dépenser plus de budget de prompt. Utilisez /context list, /context detail ou openclaw doctor pour voir les tailles brutes vs injectées et l’état de la troncation.

Certains suivis futurs ne sont pas des faits durables. Si vous mentionnez un entretien demain, la mémoire utile peut être « vérifier après l’entretien », et non « stocker ceci pour toujours dans MEMORY.md ».

Les engagements sont des mémoires de suivi opt-in et de courte durée pour ce cas. OpenClaw les déduit lors d’une passe en arrière-plan masquée, les limite au même agent et channel, et transmet les vérifications dues via le heartbeat. Les rappels explicites utilisent toujours les tâches planifiées.

L’agent dispose de deux outils pour travailler avec la mémoire :

  • memory_search — trouve des notes pertinentes grâce à la recherche sémantique, même lorsque la formulation diffère de l’originale.
  • memory_get — lit un fichier mémoire ou une plage de lignes spécifique.

Les deux outils sont fournis par le plugin de mémoire actif (par défaut : memory-core).

Si vous souhaitez que la mémoire durable se comporte davantage comme une base de connaissances entretenue que comme de simples notes brutes, utilisez le plugin fourni memory-wiki.

memory-wiki compile les connaissances durables dans un coffre wiki avec :

  • une structure de page déterministe
  • des affirmations et des preuves structurées
  • le suivi des contradictions et de la fraîcheur
  • des tableaux de bord générés
  • des résumés compilés pour les consommateurs agent/runtime
  • des outils natifs au wiki comme wiki_search, wiki_get, wiki_apply et wiki_lint

Il ne remplace pas le plugin de mémoire actif. Le plugin de mémoire actif gère toujours le rappel, la promotion et le rêve. memory-wiki ajoute une couche de connaissances riche en provenance à côté de celui-ci.

Voir Memory Wiki.

Lorsqu’un fournisseur d’intégration est configuré, memory_search utilise une recherche hybride — combinant la similarité vectorielle (sens sémantique) avec la correspondance de mots-clés (termes exacts comme les identifiants et les symboles de code). Cela fonctionne immédiatement dès que vous disposez d’une clé API pour n’importe quel fournisseur pris en charge.

Pour plus de détails sur le fonctionnement de la recherche, les options de réglage et la configuration du fournisseur, voir Memory Search.

Intégré (par défaut)

Basé sur SQLite. Fonctionne immédiatement avec la recherche par mots-clés, la similarité vectorielle et la recherche hybride. Aucune dépendance supplémentaire.

QMD

Sidecar local en priorité avec reranking, expansion de requêtes et la capacité d’indexer des répertoires en dehors de l’espace de travail.

Honcho

Mémoire inter-sessions native IA avec modélisation utilisateur, recherche sémantique et conscience multi-agents. Installation du plugin.

LanceDB

Mémoire fournie avec LanceDB, embeddings compatibles OpenAI, rappel automatique, capture automatique et support d’embeddings Ollama locaux.

Memory Wiki

Compile la mémoire durable en un coffre wiki riche en provenance avec des revendications, des tableaux de bord, le mode pont et des flux de travail compatibles avec Obsidian.

Avant que la compaction ne résume votre conversation, OpenClaw effectue un tour silencieux qui rappelle à l’agent d’enregistrer le contexte important dans les fichiers mémoire. Ceci est activé par défaut — vous n’avez rien à configurer.

Pour conserver ce tour de maintenance sur un modèle local, définissez une substitution exacte de modèle pour la vidange de la mémoire (memory-flush) :

{
"agents": {
"defaults": {
"compaction": {
"memoryFlush": {
"model": "ollama/qwen3:8b"
}
}
}
}
}

La substitution s’applique uniquement au tour de vidange de la mémoire et n’hérite pas de la chaîne de repli (fallback chain) de la session active.

Le rêve est une passe de consolidation en arrière-plan optionnelle pour la mémoire. Il collecte des signaux à court terme, note les candidats et ne promeut que les éléments qualifiés dans la mémoire à long terme (MEMORY.md).

Elle est conçue pour maintenir un signal élevé dans la mémoire à long terme :

  • Opt-in : désactivée par défaut.
  • Planifié : lorsqu’il est activé, memory-core gère automatiquement une tâche cron récurrente pour un balayage de rêve complet.
  • Seuils : les promotions doivent franchir les barrières de score, de fréquence de rappel et de diversité des requêtes.
  • Révisable : les résumés de phase et les entrées de journal sont écrits dans DREAMS.md pour révision humaine.

Pour le comportement des phases, les signaux de notation et les détails du journal de rêve, voir Dreaming.

Le système de rêverie possède désormais deux voies d’examen étroitement liées :

  • Le rêve en direct fonctionne à partir du magasin de rêve à court terme sous memory/.dreams/ et c’est ce que la phase profonde normale utilise pour décider de ce qui peut passer en MEMORY.md.
  • Le remplissage rétroactif ancré lit les notes historiques memory/YYYY-MM-DD.md comme fichiers journal autonomes et écrit la sortie de révision structurée dans DREAMS.md.

Le remplissage rétroactif ancré est utile lorsque vous souhaitez relire d’anciennes notes et inspecter ce que le système considère comme durable sans modifier manuellement MEMORY.md.

Lorsque vous utilisez :

Fenêtre de terminal
openclaw memory rem-backfill --path ./memory --stage-short-term

les candidats durables ancrés ne sont pas promus directement. Ils sont mis en attente dans le même magasin de rêverie à court terme que la phase profonde normale utilise déjà. Cela signifie :

  • DREAMS.md reste la surface de révision humaine.
  • le stockage à court terme reste la surface de classement orientée machine.
  • MEMORY.md n’est toujours écrit que par la promotion profonde.

Si vous décidez que la relecture n’était pas utile, vous pouvez supprimer les artefacts mis en scène sans toucher aux entrées de journal ordinaires ou à l’état de rappel normal :

Fenêtre de terminal
openclaw memory rem-backfill --rollback
openclaw memory rem-backfill --rollback-short-term
Fenêtre de terminal
openclaw memory status # Check index status and provider
openclaw memory search "query" # Search from the command line
openclaw memory index --force # Rebuild the index