Mémoire active
La mémoire active est un sous-agent de mémoire bloquant optionnel appartenant au plugin, qui s’exécute avant la réponse principale pour les sessions conversationnelles admissibles. Elle existe parce que la plupart des systèmes de mémoire sont capables mais réactifs. Ils s’appuient sur l’agent principal pour décider quand rechercher dans la mémoire, ou sur l’utilisateur pour dire des choses comme « souviens-toi de ceci » ou « recherche dans la mémoire ». À ce moment-là, l’instant où la mémoire aurait rendu la réponse naturelle est déjà passé. La mémoire active donne au système une occasion limitée de faire remonter une mémoire pertinente avant que la réponse principale ne soit générée.Collez ceci dans votre agent
Collez ceci dans votre agent si vous voulez activer la mémoire active avec une configuration autonome et sûre par défaut :main, le limite par défaut aux sessions de
type message direct, lui permet d’hériter d’abord du modèle de la session en cours, et
autorise toujours le repli distant intégré si aucun modèle explicite ou hérité n’est disponible.
Ensuite, redémarrez la passerelle :
Activer la mémoire active
La configuration la plus sûre consiste à :- activer le plugin
- cibler un agent conversationnel
- garder la journalisation activée uniquement pendant l’ajustement
openclaw.json :
plugins.entries.active-memory.enabled: trueactive le pluginconfig.agents: ["main"]active la mémoire active uniquement pour l’agentmainconfig.allowedChatTypes: ["direct"]limite par défaut la mémoire active aux sessions de type message direct- si
config.modeln’est pas défini, la mémoire active hérite d’abord du modèle de la session en cours config.modelFallbackPolicy: "default-remote"conserve le repli distant intégré par défaut lorsqu’aucun modèle explicite ou hérité n’est disponibleconfig.promptStyle: "balanced"utilise le style d’invite généraliste par défaut pour le moderecent- la mémoire active ne s’exécute toujours que sur les sessions de chat persistantes interactives admissibles
Comment l’afficher
La mémoire active injecte un contexte système caché pour le modèle. Elle n’expose pas les balises brutes<active_memory_plugin>...</active_memory_plugin> au client.
Bascule de session
Utilisez la commande du plugin si vous souhaitez suspendre ou reprendre la mémoire active pour la session de chat en cours sans modifier la configuration :plugins.entries.active-memory.enabled, le ciblage des agents, ni les autres
paramètres globaux.
Si vous voulez que la commande écrive dans la configuration et suspendre ou reprendre la mémoire active pour
toutes les sessions, utilisez la forme globale explicite :
plugins.entries.active-memory.config.enabled. Elle laisse
plugins.entries.active-memory.enabled activé afin que la commande reste disponible pour
réactiver la mémoire active plus tard.
Si vous voulez voir ce que fait la mémoire active dans une session en direct, activez le mode verbeux
pour cette session :
- une ligne d’état de la mémoire active telle que
Active Memory: ok 842ms recent 34 chars - un résumé de débogage lisible tel que
Active Memory Debug: Lemon pepper wings with blue cheese.
Quand elle s’exécute
La mémoire active utilise deux portes de contrôle :- Activation par configuration
Le plugin doit être activé, et l’identifiant de l’agent courant doit apparaître dans
plugins.entries.active-memory.config.agents. - Admissibilité stricte à l’exécution Même lorsqu’elle est activée et ciblée, la mémoire active ne s’exécute que pour les sessions de chat persistantes interactives admissibles.
Types de session
config.allowedChatTypes contrôle quels types de conversations peuvent exécuter la mémoire active.
La valeur par défaut est :
Où elle s’exécute
La mémoire active est une fonctionnalité d’enrichissement conversationnel, pas une fonctionnalité d’inférence à l’échelle de la plateforme.| Surface | Exécute la mémoire active ? |
|---|---|
| Sessions persistantes de chat dans l’interface de contrôle / chat web | Oui, si le plugin est activé et que l’agent est ciblé |
| Autres sessions de canal interactives sur le même chemin de chat persistant | Oui, si le plugin est activé et que l’agent est ciblé |
| Exécutions sans interface en une seule fois | Non |
| Exécutions de pulsation / en arrière-plan | Non |
Chemins internes génériques agent-command | Non |
| Exécution de sous-agents / d’assistants internes | Non |
Pourquoi l’utiliser
Utilisez la mémoire active lorsque :- la session est persistante et destinée à l’utilisateur
- l’agent dispose d’une mémoire à long terme pertinente à interroger
- la continuité et la personnalisation comptent plus que le déterminisme brut de l’invite
- les préférences stables
- les habitudes récurrentes
- le contexte utilisateur à long terme qui devrait remonter naturellement
- l’automatisation
- les workers internes
- les tâches d’API en une seule fois
- les endroits où une personnalisation cachée serait surprenante
Comment cela fonctionne
La structure à l’exécution est la suivante : Le sous-agent de mémoire bloquant peut utiliser uniquement :memory_searchmemory_get
NONE.
Modes de requête
config.queryMode contrôle la quantité de conversation que voit le sous-agent de mémoire bloquant.
Styles d’invite
config.promptStyle contrôle à quel point le sous-agent de mémoire bloquant est
prompt ou strict lorsqu’il décide de renvoyer de la mémoire.
Styles disponibles :
balanced: valeur par défaut généraliste pour le moderecentstrict: le moins prompt ; idéal lorsque vous voulez très peu de contamination par le contexte prochecontextual: le plus favorable à la continuité ; idéal lorsque l’historique de la conversation doit davantage compterrecall-heavy: plus enclin à faire remonter de la mémoire sur des correspondances plus faibles mais encore plausiblesprecision-heavy: privilégie fortementNONEsauf si la correspondance est évidentepreference-only: optimisé pour les favoris, les habitudes, les routines, les goûts et les faits personnels récurrents
config.promptStyle n’est pas défini :
config.promptStyle explicitement, cette valeur remplace la correspondance par défaut.
Exemple :
Politique de repli du modèle
Siconfig.model n’est pas défini, la mémoire active essaie de résoudre un modèle dans cet ordre :
config.modelFallbackPolicy contrôle la dernière étape.
Valeur par défaut :
resolved-only si vous voulez que la mémoire active ignore le rappel plutôt que de
revenir au comportement distant intégré par défaut lorsqu’aucun modèle explicite ou hérité n’est
disponible.
Mécanismes d’échappement avancés
Ces options ne font intentionnellement pas partie de la configuration recommandée.config.thinking peut remplacer le niveau de réflexion du sous-agent de mémoire bloquant :
config.promptAppend ajoute des instructions opérateur supplémentaires après l’invite par défaut de la mémoire active
et avant le contexte de conversation :
config.promptOverride remplace l’invite par défaut de la mémoire active. OpenClaw
ajoute toujours ensuite le contexte de conversation :
NONE,
soit un contexte compact de faits utilisateur pour le modèle principal.
message
Seul le dernier message utilisateur est envoyé.
- vous voulez le comportement le plus rapide
- vous voulez le biais le plus fort vers le rappel de préférences stables
- les tours de suivi n’ont pas besoin de contexte conversationnel
- commencez autour de
3000à5000ms
recent
Le dernier message utilisateur plus une petite portion récente de la conversation sont envoyés.
- vous voulez un meilleur équilibre entre vitesse et ancrage conversationnel
- les questions de suivi dépendent souvent des derniers tours
- commencez autour de
15000ms
full
La conversation complète est envoyée au sous-agent de mémoire bloquant.
- la meilleure qualité de rappel compte plus que la latence
- la conversation contient une mise en contexte importante loin plus haut dans le fil
- augmentez-le sensiblement par rapport à
messageourecent - commencez autour de
15000ms ou plus selon la taille du fil
Persistance de la transcription
Les exécutions du sous-agent de mémoire bloquant de la mémoire active créent une véritable transcriptionsession.jsonl
pendant l’appel du sous-agent de mémoire bloquant.
Par défaut, cette transcription est temporaire :
- elle est écrite dans un répertoire temporaire
- elle est utilisée uniquement pour l’exécution du sous-agent de mémoire bloquant
- elle est supprimée immédiatement après la fin de l’exécution
config.transcriptDir.
À utiliser avec précaution :
- les transcriptions du sous-agent de mémoire bloquant peuvent s’accumuler rapidement sur les sessions très actives
- le mode de requête
fullpeut dupliquer une grande quantité de contexte de conversation - ces transcriptions contiennent un contexte d’invite caché et des mémoires rappelées
Configuration
Toute la configuration de la mémoire active se trouve sous :| Key | Type | Meaning |
|---|---|---|
enabled | boolean | Active le plugin lui-même |
config.agents | string[] | Identifiants d’agent pouvant utiliser la mémoire active |
config.model | string | Référence de modèle optionnelle pour le sous-agent de mémoire bloquant ; lorsqu’elle n’est pas définie, la mémoire active utilise le modèle de la session en cours |
config.queryMode | "message" | "recent" | "full" | Contrôle la quantité de conversation que voit le sous-agent de mémoire bloquant |
config.promptStyle | "balanced" | "strict" | "contextual" | "recall-heavy" | "precision-heavy" | "preference-only" | Contrôle à quel point le sous-agent de mémoire bloquant est prompt ou strict lorsqu’il décide de renvoyer de la mémoire |
config.thinking | "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | Remplacement avancé du niveau de réflexion pour le sous-agent de mémoire bloquant ; off par défaut pour la vitesse |
config.promptOverride | string | Remplacement avancé complet de l’invite ; non recommandé pour un usage normal |
config.promptAppend | string | Instructions supplémentaires avancées ajoutées à l’invite par défaut ou remplacée |
config.timeoutMs | number | Délai d’attente maximal strict pour le sous-agent de mémoire bloquant |
config.maxSummaryChars | number | Nombre maximal total de caractères autorisés dans le résumé de la mémoire active |
config.logging | boolean | Émet des journaux de la mémoire active pendant l’ajustement |
config.persistTranscripts | boolean | Conserve sur disque les transcriptions du sous-agent de mémoire bloquant au lieu de supprimer les fichiers temporaires |
config.transcriptDir | string | Répertoire relatif des transcriptions du sous-agent de mémoire bloquant sous le dossier des sessions de l’agent |
| Key | Type | Meaning |
|---|---|---|
config.maxSummaryChars | number | Nombre maximal total de caractères autorisés dans le résumé de la mémoire active |
config.recentUserTurns | number | Tours utilisateur précédents à inclure lorsque queryMode vaut recent |
config.recentAssistantTurns | number | Tours d’assistant précédents à inclure lorsque queryMode vaut recent |
config.recentUserChars | number | Nombre maximal de caractères par tour utilisateur récent |
config.recentAssistantChars | number | Nombre maximal de caractères par tour d’assistant récent |
config.cacheTtlMs | number | Réutilisation du cache pour les requêtes identiques répétées |
Configuration recommandée
Commencez avecrecent.
/verbose on dans la
session au lieu de chercher une commande de débogage active-memory distincte.
Passez ensuite à :
messagesi vous voulez une latence plus faiblefullsi vous décidez qu’un contexte supplémentaire vaut un sous-agent de mémoire bloquant plus lent
Débogage
Si la mémoire active n’apparaît pas là où vous l’attendez :- Vérifiez que le plugin est activé dans
plugins.entries.active-memory.enabled. - Vérifiez que l’identifiant de l’agent courant figure dans
config.agents. - Vérifiez que vous testez via une session de chat persistante interactive.
- Activez
config.logging: trueet observez les journaux de la passerelle. - Vérifiez que la recherche de mémoire fonctionne elle-même avec
openclaw memory status --deep.
maxSummaryChars
- réduisez
queryMode - réduisez
timeoutMs - réduisez le nombre de tours récents
- réduisez les plafonds de caractères par tour