Démarrage rapide
Collez ceci dansopenclaw.json pour une configuration par défaut sûre : plugin activé, limité à main,
sessions de messages directs uniquement, modèle hérité de la session.
plugins.entries.* (y compris active-memory.config) appartient à la catégorie de configuration
sans redémarrage :
le Gateway recharge automatiquement l’environnement d’exécution du plugin et aucun redémarrage manuel n’est
nécessaire. Si vous souhaitez malgré tout forcer un redémarrage complet, exécutez :
plugins.entries.active-memory.enabled: trueactive le pluginconfig.agents: ["main"]active uniquement l’agentmainconfig.allowedChatTypes: ["direct"]le limite aux sessions de messages directs (activez explicitement les groupes/canaux)config.model(facultatif) impose un modèle de rappel dédié ; s’il n’est pas défini, le modèle de la session actuelle est héritéconfig.modelFallbackn’est utilisé que lorsqu’aucun modèle explicite ou hérité ne peut être résoluconfig.fastModeremplace facultativement le mode rapide pour le rappel sans modifier l’agent principalconfig.promptStyle: "balanced"est la valeur par défaut du moderecent- Active Memory ne s’exécute toujours que pour les sessions de discussion interactives persistantes admissibles (voir Quand il s’exécute)
Fonctionnement
Le sous-agent bloquant ne peut appeler que les outils de rappel de mémoire configurés (voir Outils de mémoire). Si le lien entre la requête et la mémoire disponible est faible, il renvoieNONE et la réponse principale se poursuit
sans contexte supplémentaire.
Active Memory est une fonctionnalité d’enrichissement conversationnel, et non une fonctionnalité
d’inférence à l’échelle de la plateforme :
Utilisez-le lorsque la session est persistante et destinée à l’utilisateur, que l’agent dispose
d’une mémoire à long terme significative à rechercher, et que la continuité/personnalisation compte
davantage que le déterminisme brut du prompt : préférences stables, habitudes récurrentes,
contexte à long terme devant remonter naturellement. Il convient mal à
l’automatisation, aux processus internes, aux tâches API ponctuelles ou à tout contexte où une
personnalisation masquée serait surprenante.
Quand il s’exécute
Deux contrôles doivent tous deux réussir :- Activation dans la configuration — le plugin est activé et l’identifiant de l’agent actuel figure dans
config.agents. - Admissibilité à l’exécution — la session est une session de discussion interactive persistante admissible, son type de discussion est autorisé et son identifiant de conversation n’est pas filtré.
Types de sessions
config.allowedChatTypes contrôle les types de conversations pouvant exécuter
Active Memory. Valeur par défaut :
direct, group, channel, explicit (sessions de type portail
avec un identifiant de session opaque, par exemple agent:main:explicit:portal-123).
Les sessions de messages directs s’exécutent par défaut ; les sessions de groupe, de canal et explicites
doivent être activées :
config.allowedChatIds et config.deniedChatIds :
allowedChatIdsest une liste d’identifiants de conversation résolus autorisés. Lorsqu’elle n’est pas vide, Active Memory ne s’exécute que pour les sessions dont l’identifiant de conversation figure dans la liste — cela restreint tous les types de discussion autorisés simultanément, y compris les messages directs. Pour conserver tous les messages directs tout en limitant uniquement les groupes, ajoutez également les identifiants des correspondants directs àallowedChatIds, ou gardezallowedChatTypeslimité au déploiement de groupe/canal que vous testez.deniedChatIdsest une liste de refus qui prévaut toujours surallowedChatTypesetallowedChatIds.
chat_id/open_id, l’identifiant de discussion Telegram, l’identifiant de canal Slack). La correspondance
n’est pas sensible à la casse. Si allowedChatIds n’est pas vide et qu’OpenClaw ne peut pas
résoudre d’identifiant de conversation pour la session, Active Memory ignore le tour
au lieu de faire une supposition.
Bascule de session
Suspendez ou reprenez Active Memory pour la session de discussion actuelle sans modifier la configuration :plugins.entries.active-memory.config.enabled ni les autres paramètres globaux.
Pour suspendre/reprendre toutes les sessions à la place, utilisez la forme globale (nécessite
le propriétaire ou operator.admin) :
plugins.entries.active-memory.config.enabled, mais
laisse plugins.entries.active-memory.enabled activé, afin que la commande reste
disponible pour réactiver Active Memory ultérieurement.
Comment l’afficher
Par défaut, Active Memory injecte un préfixe de prompt masqué et non fiable qui n’apparaît pas dans la réponse normale. Activez les bascules de session correspondant à la sortie souhaitée :/verbose onajoute une ligne d’état :🧩 Active Memory: status=ok elapsed=842ms query=recent summary=34 chars/trace onajoute un résumé de débogage :🔎 Active Memory Debug: Lemon pepper wings with blue cheese.
/trace raw, le bloc Model Input (User Role) tracé affiche le
préfixe masqué brut :
Modes de requête
config.queryMode contrôle la quantité de conversation visible par le sous-agent bloquant.
Choisissez le mode le plus restreint qui répond toujours correctement aux demandes de suivi ; augmentez
timeoutMs à mesure que la taille du contexte augmente, de message à recent, puis à full.
- message
- recent
- full
Seul le dernier message de l’utilisateur est envoyé.À utiliser pour obtenir le comportement le plus rapide, favoriser au maximum le rappel de préférences
stables, et lorsque les tours de suivi n’ont pas besoin du contexte
conversationnel. Commencez autour de
3000-5000 ms pour config.timeoutMs.Styles de prompt
config.promptStyle contrôle le degré d’empressement ou de rigueur du sous-agent lors du
renvoi de souvenirs :
Correspondance par défaut lorsque
config.promptStyle n’est pas défini :
config.promptStyle explicite remplace toujours cette correspondance.
Politique de modèle de secours
Siconfig.model n’est pas défini, Active Memory résout un modèle dans cet ordre :
config.modelFallbackPolicy est un champ de compatibilité obsolète conservé pour les
anciennes configurations ; il ne modifie plus le comportement à l’exécution — modelFallback est
strictement le dernier recours dans la chaîne ci-dessus, et non un mécanisme de basculement à l’exécution qui
utilise un autre modèle lorsque celui qui a été résolu rencontre une erreur.
Recommandations de vitesse
Laisserconfig.model non défini (pour hériter du modèle de la session) constitue le choix par défaut le plus sûr : cela respecte vos préférences existantes de fournisseur, d’authentification et de modèle. Pour réduire la latence, utilisez plutôt un modèle rapide dédié — la qualité du rappel est importante, mais la latence l’est davantage ici que dans le chemin de réponse principal, et l’éventail d’outils est restreint (uniquement les outils de rappel de mémoire).
Bonnes options de modèles rapides :
cerebras/gpt-oss-120b, un modèle de rappel dédié à faible latencegoogle/gemini-3-flash, une solution de secours à faible latence sans modifier votre modèle de conversation principal- votre modèle de session habituel, en laissant
config.modelnon défini
Configuration de Cerebras
chat/completions pour le modèle choisi — la seule visibilité /v1/models ne le garantit pas.
Outils de mémoire
config.toolsAllow définit les noms concrets des outils que le sous-agent bloquant peut appeler. Les valeurs par défaut dépendent du fournisseur de mémoire actif :
Si aucun des outils configurés n’est disponible ou si l’exécution du sous-agent échoue, Active Memory ignore le rappel pour ce tour et la réponse principale se poursuit sans contexte mémoriel. Pour les outils de rappel personnalisés, toute sortie d’outil non vide et visible par le modèle constitue une preuve de rappel, sauf si des champs de résultat structurés signalent explicitement un résultat vide ou un échec.
toolsAllow accepte uniquement des noms concrets d’outils de mémoire : les caractères génériques, les entrées group:* et les outils principaux de l’agent (read, exec, message, web_search et similaires) sont filtrés silencieusement avant le démarrage du sous-agent masqué.
memory-core intégré
AucuntoolsAllow explicite n’est nécessaire :
Mémoire LanceDB
Il suffit de sélectionner l’emplacement de mémoire pour qu’Active Memory utilisememory_recall :
Lossless Claw
Lossless Claw est un Plugin externe de moteur de contexte (openclaw plugins install @martian-engineering/lossless-claw) doté de ses propres outils de rappel. Configurez-le d’abord comme moteur de contexte ; consultez Moteur de contexte. Orientez ensuite Active Memory vers ses outils :
lcm_expand à toolsAllow ici ; Lossless Claw l’utilise comme outil de plus bas niveau pour l’expansion déléguée, et il n’est pas destiné au sous-agent Active Memory de premier niveau.
Échappatoires avancées
Elles ne font pas partie de la configuration recommandée.config.thinking remplace le niveau de réflexion du sous-agent ("off" par défaut, car Active Memory s’exécute dans le chemin de réponse et tout temps de réflexion supplémentaire augmente directement la latence visible par l’utilisateur) :
config.fastMode remplace le mode rapide uniquement pour le sous-agent de mémoire bloquant. Utilisez true, false ou "auto" ; laissez-le non défini pour hériter des valeurs par défaut normales de l’agent, de la session et du modèle. "auto" utilise le seuil fastAutoOnSeconds configuré du modèle de rappel :
config.promptAppend ajoute les instructions de l’opérateur après le prompt par défaut et avant le contexte de la conversation — associez-le à un toolsAllow personnalisé lorsqu’un Plugin de mémoire non principal nécessite un ordre d’outils ou une formulation de requête spécifiques :
config.promptOverride remplace entièrement le prompt par défaut (le contexte de la conversation reste ajouté ensuite). Cette option est déconseillée, sauf pour tester délibérément un autre contrat de rappel — le prompt par défaut est optimisé pour renvoyer soit NONE, soit un contexte compact de faits sur l’utilisateur destiné au modèle principal :
Persistance des transcriptions
Les exécutions de sous-agent bloquantes créent une véritable transcriptionsession.jsonl pendant l’appel. Par défaut, elle est écrite dans un répertoire temporaire et supprimée immédiatement après la fin de l’exécution.
Pour conserver ces transcriptions sur le disque à des fins de débogage :
config.transcriptDir. Utilisez cette option avec précaution : les transcriptions peuvent s’accumuler rapidement dans les sessions très actives, le mode de requête full duplique une grande partie du contexte de la conversation, et ces transcriptions contiennent le contexte masqué du prompt ainsi que les souvenirs rappelés.
Configuration
Toute la configuration d’Active Memory se trouve sousplugins.entries.active-memory.
Champs de réglage utiles :
Configuration recommandée
Commencez avecrecent :
/verbose on pour la ligne d’état et /trace on pour le résumé de débogage
pendant le réglage — les deux sont envoyés dans un message de suivi après la réponse principale, et non
avant. Passez ensuite à message pour réduire la latence, ou à full si le contexte supplémentaire
justifie l’exécution plus lente du sous-agent.
Délai de grâce du démarrage à froid
Avant v2026.5.2, le plugin prolongeait silencieusementtimeoutMs de 30000
ms supplémentaires lors du démarrage à froid, afin que le préchauffage du modèle, le chargement de l’index d’incorporations et le premier
rappel puissent partager un même budget plus élevé. v2026.5.2 a placé ce délai de grâce derrière une
configuration setupGraceTimeoutMs explicite : timeoutMs constitue désormais par défaut le budget
du travail de rappel, sauf activation volontaire. Le hook bloquant enveloppe ce budget dans
deux phases fixes : jusqu’à 1500 ms pour les vérifications préalables de la session et de la configuration avant le début du rappel,
puis 1500 ms fixes distinctes pour finaliser l’interruption et récupérer la transcription
après l’arrêt du travail de rappel. Aucune de ces marges ne prolonge l’exécution du modèle ou des outils.
Si vous avez effectué une mise à niveau depuis v2026.4.x et ajusté timeoutMs pour l’ancien
fonctionnement avec délai de grâce implicite (la valeur initiale recommandée timeoutMs: 15000 en est un
exemple), définissez setupGraceTimeoutMs: 30000 pour rétablir le budget
effectif antérieur à la v5.2 :
timeoutMs + setupGraceTimeoutMs + 3000 ms (le
budget configuré pour le travail de rappel, auquel s’ajoutent jusqu’à 1500 ms de vérification préalable, puis une
marge fixe de 1500 ms pour l’achèvement après le rappel). Le moteur de rappel intégré utilise
le même budget de délai d’expiration effectif ; setupGraceTimeoutMs couvre donc à la fois le
chien de garde externe de construction du prompt et l’exécution interne bloquante du rappel.
Pour les Gateways aux ressources limitées où la latence de démarrage à froid constitue un compromis
accepté, des valeurs inférieures (5000-15000 ms) conviennent également — avec, en contrepartie, une probabilité
plus élevée que le tout premier rappel après le redémarrage d’un Gateway renvoie un résultat vide
pendant la fin du préchauffage.
Débogage
Si Active Memory ne s’affiche pas à l’endroit attendu :- Vérifiez que le Plugin est activé sous
plugins.entries.active-memory.enabled. - Vérifiez que l’identifiant de l’agent actuel figure dans
config.agents. - Vérifiez que le test s’effectue dans une session de discussion interactive persistante.
- Activez
config.logging: trueet surveillez les journaux du Gateway. - Vérifiez que la recherche en mémoire elle-même fonctionne avec
openclaw status --deep.
maxSummaryChars plus strict. Si Active Memory est trop
lente, réduisez queryMode, réduisez timeoutMs, ou diminuez le nombre de tours récents et
la limite de caractères par tour.
Problèmes courants
Active Memory repose sur le pipeline de rappel du Plugin de mémoire configuré ; la plupart des résultats de rappel inattendus sont donc dus à des problèmes de fournisseur d’embeddings, et non à des bogues d’Active Memory. Le cheminmemory-core par défaut utilise memory_search et memory_get ;
l’emplacement memory-lancedb utilise memory_recall. Si vous utilisez un autre Plugin de
mémoire, vérifiez que config.toolsAllow désigne les outils que ce Plugin
enregistre réellement.
Le fournisseur d’embeddings a changé ou a cessé de fonctionner
Le fournisseur d’embeddings a changé ou a cessé de fonctionner
Si
memorySearch.provider n’est pas défini, OpenClaw utilise les embeddings OpenAI. Définissez
explicitement memorySearch.provider pour les embeddings Bedrock, DeepInfra, Gemini, GitHub
Copilot, LM Studio, locaux, Mistral, Ollama, Voyage ou compatibles avec
OpenAI. Si le fournisseur configuré ne peut pas fonctionner, memory_search peut
se limiter à une récupération lexicale ; les échecs d’exécution survenant après la
sélection d’un fournisseur ne déclenchent pas automatiquement de solution de repli.Définissez un éventuel memorySearch.fallback uniquement si vous souhaitez une
solution de repli unique et délibérée. Consultez Recherche en mémoire pour obtenir la
liste complète des fournisseurs et des exemples.Le rappel semble lent, vide ou incohérent
Le rappel semble lent, vide ou incohérent
- Activez
/trace onpour afficher dans la session le résumé de débogage d’Active Memory géré par le Plugin. - Activez
/verbose onpour voir également la ligne d’état🧩 Active Memory: ...après chaque réponse. - Surveillez dans les journaux du Gateway la présence de
active-memory: ... start|done, dememory sync failed (search-bootstrap)ou d’erreurs d’embedding du fournisseur. - Exécutez
openclaw status --deeppour examiner le backend de recherche en mémoire et l’état de l’index. - Si vous utilisez
ollama, vérifiez que le modèle d’embedding est installé (ollama list).
Le premier rappel après le redémarrage du Gateway renvoie `status=timeout`
Le premier rappel après le redémarrage du Gateway renvoie `status=timeout`
À partir de la v2026.5.2, si la configuration de démarrage à froid (préchauffage du modèle + chargement de
l’index d’embeddings) n’est pas terminée au moment du premier rappel, l’exécution
peut atteindre la limite du budget
timeoutMs configuré et renvoyer status=timeout
avec une sortie vide. Les journaux du Gateway affichent active-memory timeout after Nms
aux alentours de la première réponse admissible après un redémarrage.Consultez Délai de grâce au démarrage à froid sous Configuration recommandée pour connaître la
valeur setupGraceTimeoutMs recommandée.