Skip to main content
Cette page répertorie tous les paramètres de configuration de la recherche en mémoire d’OpenClaw. Pour une présentation conceptuelle, consultez :

Présentation de la mémoire

Fonctionnement de la mémoire.

Moteur intégré

Backend SQLite par défaut.

Moteur QMD

Processus auxiliaire privilégiant le fonctionnement local.

Recherche en mémoire

Pipeline de recherche et réglages.

Active Memory

Sous-agent de mémoire pour les sessions interactives.
Tous les paramètres de recherche en mémoire se trouvent sous agents.defaults.memorySearch dans openclaw.json (ou dans une substitution agents.list[].memorySearch propre à chaque agent), sauf indication contraire.
Si vous recherchez l’option d’activation de la fonctionnalité Active Memory et la configuration du sous-agent, celles-ci se trouvent sous plugins.entries.active-memory plutôt que sous memorySearch.Active Memory utilise un modèle à deux conditions :
  1. le Plugin doit être activé et cibler l’identifiant de l’agent actuel
  2. la requête doit correspondre à une session de discussion interactive persistante admissible
Consultez Active Memory pour en savoir plus sur le modèle d’activation, la configuration détenue par le Plugin, la persistance des transcriptions et la procédure de déploiement sécurisé.

Sélection du fournisseur

Lorsque provider n’est pas défini, OpenClaw utilise les embeddings OpenAI. Définissez explicitement provider pour utiliser Bedrock, DeepInfra, Gemini, GitHub Copilot, Mistral, Ollama, Voyage, un modèle GGUF local ou un point de terminaison /v1/embeddings compatible avec OpenAI. Les anciennes configurations qui indiquent encore provider: "auto" sont résolues en openai.
La modification du fournisseur d’embeddings, du modèle, des paramètres du fournisseur, des sources, de la portée, du découpage ou du tokenizer peut rendre l’index vectoriel SQLite existant incompatible. OpenClaw suspend la recherche vectorielle et signale un avertissement relatif à l’identité de l’index au lieu de recalculer automatiquement tous les embeddings. Lorsque vous êtes prêt, reconstruisez-le avec openclaw memory status --index --agent <id> ou openclaw memory index --force --agent <id>.
Lorsque provider n’est pas défini, que l’ancien paramètre provider: "auto" est présent ou que provider: "none" sélectionne intentionnellement le mode FTS uniquement, le rappel en mémoire peut toujours utiliser le classement lexical FTS lorsque les embeddings sont indisponibles. Les fournisseurs non locaux explicitement définis échouent de manière restrictive. Si vous définissez memorySearch.provider sur un fournisseur distant précis tel que Bedrock, DeepInfra, Gemini, GitHub Copilot, LM Studio, Mistral, Ollama, OpenAI, Voyage ou un fournisseur personnalisé compatible avec OpenAI, et que celui-ci est indisponible lors de l’exécution, memory_search renvoie un résultat d’indisponibilité au lieu d’utiliser silencieusement un rappel FTS uniquement. Corrigez la configuration du fournisseur ou de l’authentification, choisissez un fournisseur accessible ou définissez provider: "none" si vous souhaitez utiliser délibérément un rappel FTS uniquement.

Identifiants de fournisseurs personnalisés

memorySearch.provider peut pointer vers une entrée models.providers.<id> personnalisée pour des adaptateurs propres aux fournisseurs de mémoire, tels que ollama, ou pour des API de modèles compatibles avec OpenAI, telles que openai-responses / openai-completions. OpenClaw résout le propriétaire api de ce fournisseur pour l’adaptateur d’embeddings, tout en conservant l’identifiant du fournisseur personnalisé pour la gestion du point de terminaison, de l’authentification et du préfixe du modèle. Les configurations à plusieurs GPU ou plusieurs hôtes peuvent ainsi réserver les embeddings de mémoire à un point de terminaison local précis :

Résolution de la clé d’API

Les embeddings distants nécessitent une clé d’API. Bedrock utilise à la place la chaîne d’identifiants par défaut du SDK AWS (rôles d’instance, SSO, clés d’accès ou clé d’API Bedrock).
L’OAuth Codex couvre uniquement les discussions et les complétions, et ne satisfait pas les requêtes d’embeddings.

Configuration du point de terminaison distant

Utilisez provider: "openai-compatible" pour un serveur générique /v1/embeddings compatible avec OpenAI qui ne doit pas hériter des identifiants globaux de discussion OpenAI.
string
URL de base personnalisée de l’API.
string
Clé d’API de substitution.
object
En-têtes HTTP supplémentaires (fusionnés avec les valeurs par défaut du fournisseur).

Configuration propre à chaque fournisseur

La modification du modèle ou de outputDimensionality modifie l’identité de l’index. OpenClaw suspend la recherche vectorielle jusqu’à ce que vous reconstruisiez explicitement l’index de mémoire.
Les points de terminaison d’embeddings compatibles avec OpenAI peuvent activer des champs de requête input_type propres au fournisseur. Cela est utile pour les modèles d’embeddings asymétriques qui nécessitent des libellés différents pour les embeddings des requêtes et des documents.
La modification de ces valeurs affecte l’identité du cache d’embeddings lors de l’indexation par lots du fournisseur et doit être suivie d’une réindexation de la mémoire lorsque le modèle en amont traite les libellés différemment.

Configuration des embeddings Bedrock

Bedrock utilise la chaîne d’identifiants par défaut du SDK AWS ainsi qu’un jeton Bearer vérifié par OpenClaw ; aucune clé d’API n’est donc stockée dans la configuration. Si OpenClaw s’exécute sur EC2 avec un rôle d’instance autorisé à utiliser Bedrock, il suffit de définir le fournisseur et le modèle :
Modèles pris en charge (avec détection de la famille et dimensions par défaut) :Les variantes suffixées par le débit (par exemple, amazon.titan-embed-text-v1:2:8k) et les ID de profil d’inférence préfixés par la région (par exemple, us.amazon.titan-embed-text-v2:0) héritent de la configuration du modèle de base.Région : résolue dans cet ordre : le remplacement memorySearch.remote.baseUrl, la configuration models.providers.amazon-bedrock.baseUrl, AWS_REGION, AWS_DEFAULT_REGION, puis la valeur par défaut us-east-1.Authentification : OpenClaw recherche d’abord AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY ou AWS_BEARER_TOKEN_BEDROCK, puis utilise la chaîne standard de fournisseurs d’identifiants par défaut du SDK AWS :
  1. Variables d’environnement (AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY), sauf si AWS_PROFILE est également défini
  2. SSO (uniquement lorsque les champs SSO sont configurés)
  3. Fichiers partagés d’identifiants et de configuration (fromIni, inclut AWS_PROFILE)
  4. Processus d’identification (credential_process dans le fichier de configuration AWS)
  5. Identifiants par jeton d’identité Web
  6. Identifiants issus des métadonnées d’instance ECS ou EC2
Autorisations IAM : le rôle ou l’utilisateur IAM nécessite :
Pour appliquer le principe du moindre privilège, limitez InvokeModel au modèle concerné :
Installez d’abord le fournisseur officiel llama.cpp : openclaw plugins install @openclaw/llama-cpp-provider. Modèle par défaut : embeddinggemma-300m-qat-Q8_0.gguf (environ 0,6 Go, téléchargé automatiquement). Les extractions du code source nécessitent toujours l’approbation de la compilation native : pnpm approve-builds puis pnpm rebuild node-llama-cpp.Utilisez la CLI autonome pour vérifier le même chemin de fournisseur que celui utilisé par le Gateway :
Les valeurs numériques de local.contextSize renseignent également le placement automatique des couches GPU de node-llama-cpp, afin que les poids du modèle et le contexte d’embedding demandé puissent être chargés ensemble. openclaw memory status --deep indique le dernier backend llama.cpp connu, le périphérique, le déchargement, le contexte demandé et les informations de mémoire horodatées après le chargement par l’environnement d’exécution ; l’état passif ne charge aucun modèle.Définissez explicitement provider: "local" pour les embeddings GGUF locaux. hf: et les références de modèle HTTP(S) sont pris en charge pour les configurations locales explicites (via la résolution de modèle de node-llama-cpp), mais ne modifient pas le fournisseur par défaut.

Délai d’expiration des embeddings en ligne

number
Remplacez le délai d’expiration des lots d’embeddings en ligne lors de l’indexation de la mémoire.Lorsqu’aucune valeur n’est définie, la valeur par défaut du fournisseur est utilisée : 600 secondes pour les fournisseurs locaux ou auto-hébergés tels que local, ollama et lmstudio, et 120 secondes pour les fournisseurs hébergés. Augmentez cette valeur lorsque les lots d’embeddings locaux dépendant du processeur fonctionnent correctement, mais lentement.

Comportement d’indexation

Toutes les options se trouvent sous memorySearch.sync, sauf indication contraire :
number
Taille, en jetons, des segments utilisés pour diviser les sources de mémoire avant l’embedding (valeur par défaut : 400).
number
Chevauchement en jetons entre les segments adjacents afin de préserver le contexte près des limites de découpage (valeur par défaut : 80).
La modification de chunking.tokens ou chunking.overlap change les limites des segments et invalide l’identité de l’index existant (voir l’avertissement sous Sélection du fournisseur).

Configuration de la recherche hybride

Toutes les options se trouvent sous memorySearch.query : Et sous memorySearch.query.hybrid :

Exemple complet


Chemins de mémoire supplémentaires

Les chemins peuvent être absolus ou relatifs à l’espace de travail. Les répertoires sont analysés récursivement à la recherche de fichiers .md. La gestion des liens symboliques dépend du backend actif : le moteur intégré ignore les liens symboliques, tandis que QMD suit le comportement de l’analyseur QMD sous-jacent. Pour effectuer une recherche inter-agents dans les transcriptions à l’échelle d’un agent, utilisez agents.list[].memorySearch.qmd.extraCollections au lieu de memory.qmd.paths. Ces collections supplémentaires suivent la même structure { path, name, pattern? }, mais elles sont fusionnées par agent et peuvent conserver des noms partagés explicites lorsque le chemin pointe hors de l’espace de travail actuel. Si le même chemin résolu apparaît à la fois dans memory.qmd.paths et memorySearch.qmd.extraCollections, QMD conserve la première entrée et ignore le doublon.

Mémoire multimodale (Gemini)

Indexez les images et les fichiers audio avec Markdown à l’aide de Gemini Embedding 2 :
S’applique uniquement aux fichiers dans extraPaths. Les racines de mémoire par défaut restent limitées à Markdown. Nécessite gemini-embedding-2-preview. fallback doit être "none".
Formats pris en charge : .jpg, .jpeg, .png, .webp, .gif, .heic, .heif (images) ; .mp3, .wav, .ogg, .opus, .m4a, .aac, .flac (audio).

Cache des embeddings

Évite de recalculer les embeddings du texte inchangé lors d’une réindexation ou de la mise à jour d’une transcription. Laissez maxEntries non défini pour un cache sans limite ; définissez-le lorsque la croissance de l’espace disque importe davantage que la vitesse maximale de réindexation. Lorsqu’il est défini, les entrées les plus anciennes (selon leur dernière date de mise à jour) sont supprimées en premier dès que le cache dépasse la limite.

Indexation par lots

Disponible pour gemini, openai et voyage. Le traitement par lots d’OpenAI est généralement le plus rapide et le moins coûteux pour les remplissages rétrospectifs volumineux. remote.nonBatchConcurrency contrôle les appels d’embedding en ligne utilisés par les fournisseurs locaux/autohébergés et par les fournisseurs hébergés lorsque leurs API de traitement par lots ne sont pas actives. Ollama utilise par défaut 1 pour l’indexation hors lot afin d’éviter de surcharger les petits hôtes locaux ; définissez une valeur supérieure sur les machines plus puissantes. Ce paramètre est distinct de sync.embeddingBatchTimeoutSeconds, qui contrôle le délai d’expiration des appels d’embedding en ligne.

Recherche dans la mémoire des sessions (expérimentale)

Indexez les transcriptions de sessions et rendez-les accessibles via memory_search :
L’indexation des sessions est facultative et s’exécute de manière asynchrone. Les résultats peuvent être légèrement obsolètes. Les journaux de session résident sur le disque ; considérez donc l’accès au système de fichiers comme la limite de confiance.
Les résultats provenant des transcriptions de sessions respectent également tools.sessions.visibility. La visibilité par défaut tree n’expose que la session actuelle et les sessions qu’elle a créées. Pour rappeler, depuis une autre session telle qu’un message privé, une session sans lien direct distribuée par le Gateway au même agent, élargissez délibérément la visibilité à agent (ou à all uniquement si le rappel inter-agents est également requis et que la politique d’agent à agent l’autorise). Les exemples ci-dessous placent ces paramètres sous agents.defaults. Vous pouvez également appliquer des paramètres memorySearch équivalents dans une substitution propre à un agent si un seul agent doit indexer et rechercher les transcriptions de sessions. Pour le rappel d’un Gateway vers un message privé au sein d’un même agent :
Lors de l’utilisation de QMD, agents.defaults.memorySearch.experimental.sessionMemory et sources: ["sessions"] n’exportent pas à eux seuls les transcriptions vers QMD. Définissez également memory.qmd.sessions.enabled: true.

Accélération vectorielle SQLite (sqlite-vec)

Lorsque sqlite-vec est indisponible, OpenClaw se rabat automatiquement sur la similarité cosinus calculée dans le processus.

Stockage de l’index

Les index de mémoire intégrés résident dans la base de données SQLite OpenClaw de chaque agent à l’emplacement agents/<agentId>/agent/openclaw-agent.sqlite.

Configuration du backend QMD

Définissez memory.backend = "qmd" pour l’activer. Tous les paramètres QMD se trouvent sous memory.qmd : searchMode: "search" utilise uniquement la recherche lexicale/BM25. OpenClaw n’exécute ni sondes de disponibilité vectorielle sémantique ni maintenance des embeddings QMD pour ce mode, y compris pendant memory status --deep ; vsearch et query continuent de nécessiter la disponibilité vectorielle et les embeddings de QMD. rerank: false ne modifie que le mode query de QMD et nécessite QMD 2.1 ou une version ultérieure. En mode CLI direct, OpenClaw transmet --no-rerank ; en mode MCP reposant sur mcporter, il transmet rerank: false à l’outil de requête unifié de QMD. Laissez-le non défini pour utiliser le comportement de reclassement des requêtes par défaut de QMD. OpenClaw privilégie les formats actuels des collections QMD et des requêtes MCP, mais maintient la compatibilité avec les anciennes versions de QMD en essayant, si nécessaire, des indicateurs compatibles de motif de collection et les anciens noms d’outils MCP. Lorsque QMD annonce la prise en charge de plusieurs filtres de collection, les collections de même source sont interrogées par un seul processus QMD ; les anciennes versions de QMD conservent le chemin de compatibilité par collection. « Même source » signifie que les collections de mémoire durable (fichiers de mémoire par défaut et chemins personnalisés) sont regroupées, tandis que les collections de transcriptions de sessions restent dans un groupe distinct afin que la diversification des sources conserve bien les deux entrées.
Les substitutions de modèles QMD restent du côté de QMD, et non dans la configuration d’OpenClaw. Pour remplacer globalement les modèles de QMD, définissez des variables d’environnement telles que QMD_EMBED_MODEL, QMD_RERANK_MODEL et QMD_GENERATE_MODEL dans l’environnement d’exécution du Gateway.

Intégration de mcporter

Tous les paramètres se trouvent sous memory.qmd.mcporter. Achemine les recherches QMD par l’intermédiaire d’un démon MCP mcporter de longue durée au lieu de lancer qmd pour chaque requête, ce qui réduit le surcoût du démarrage à froid pour les modèles plus volumineux. Nécessite que mcporter soit installé et présent dans PATH, ainsi qu’un serveur mcporter configuré qui exécute qmd mcp. Laissez cette option désactivée pour les configurations locales simples où le coût du lancement d’un processus par requête est acceptable.
Contrôle quelles sessions peuvent recevoir les résultats de recherche QMD. Même schéma que session.sendPolicy :
La valeur par défaut livrée est limitée aux messages privés/directs et refuse les groupes ainsi que les autres types de canaux. match.keyPrefix correspond à la clé de session normalisée ; match.rawKeyPrefix correspond à la clé brute, y compris agent:<id>:.
memory.citations s’applique à tous les backends :
Lorsque l’initialisation de QMD au démarrage du Gateway est activée, OpenClaw démarre QMD uniquement pour les agents admissibles. Si update.onBoot vaut true et qu’aucune maintenance par intervalle ou intégration n’est configurée, le démarrage utilise un gestionnaire ponctuel pour l’actualisation initiale, puis le ferme. Si un intervalle de mise à jour ou d’intégration est configuré, le démarrage ouvre le gestionnaire QMD de longue durée afin qu’il puisse gérer l’observateur et les minuteurs d’intervalle ; update.onBoot: false ignore uniquement l’actualisation immédiate au démarrage.

Exemple QMD complet


Dreaming

Dreaming est configuré sous plugins.entries.memory-core.config.dreaming, et non sous agents.defaults.memorySearch. Dreaming s’exécute sous la forme d’un balayage planifié unique et utilise des phases internes légère/profonde/REM comme détail d’implémentation. Pour le comportement conceptuel et les commandes slash, consultez Dreaming.

Paramètres utilisateur

Exemple

  • Dreaming écrit l’état machine dans memory/.dreams/.
  • Dreaming écrit la sortie narrative lisible par l’humain dans DREAMS.md (ou dans le fichier dreams.md existant).
  • dreaming.model utilise le contrôle de confiance existant du sous-agent du Plugin ; définissez plugins.entries.memory-core.subagent.allowModelOverride: true avant de l’activer.
  • Dream Diary réessaie une fois avec le modèle par défaut de la session lorsque le modèle configuré n’est pas disponible. Les échecs liés à la confiance ou à la liste d’autorisation sont journalisés et ne font pas l’objet d’une nouvelle tentative silencieuse.
  • La stratégie et les seuils des phases légère/profonde/REM relèvent du comportement interne et non de la configuration destinée à l’utilisateur.

Voir aussi