Onthouden in verschillende gesprekken
Schakel voor een persoonlijke of volledig vertrouwde agent begrensd ophalen uit diens andere privégesprekken in met één instelling per agent:session.dmScope moet
niet ingesteld zijn of "main", en geen binding mag session.dmScope overschrijven. Geconfigureerde
DM-isolatie schakelt deze standaard uit. Een expliciete true of false heeft altijd voorrang. Wanneer
ingeschakeld, indexeert OpenClaw de sessietranscripten van die agent en voert het vóór geschikte privéantwoorden
een ophaalronde van Active Memory uit. De ronde kan relevante
transcriptfragmenten uit andere privégesprekken van dezelfde agent lezen.
Het gesprek dat al wordt beantwoord, wordt uitgesloten.
De privacygrens ligt vast:
- privé-, directe en permanente expliciete UI-gesprekken kunnen herinneringen uit elkaar ophalen
- groepen en kanalen zijn geen ophaalbronnen en ook geen ophaaldoelen
- transcripten van een andere agent komen nooit in aanmerking
- onbekende of gearchiveerde transcripten zonder voldoende gespreksmetadata worden geweigerd
tools.sessions.visibility niet en verleent geen bredere toegang tot de tool sessions_*. Gedeeld
werkruimtegeheugen (MEMORY.md en memory/*.md) behoudt het bestaande gedrag.
Active Memory moet ingeschakeld blijven. Het ophalen voegt een begrensde blokkerende stap toe aan
geschikte antwoorden; bij een time-out, niet-beschikbare zoekfunctie of lege resultaten wordt het
antwoord voortgezet zonder opgehaalde transcriptcontext. De ingebouwde geheugenprovider van OpenClaw
ondersteunt dit beveiligde pad voor het ophalen van transcripten met zowel de ingebouwde
als de QMD-backend. Andere geheugenproviders behouden hun eigen ophaalgedrag, maar
krijgen niet automatisch autorisatie voor privétranscripten. openclaw doctor
meldt een niet-ondersteunde provider of ontbrekende tool memory_search.
Geavanceerde snelstart voor Active Memory
Plak dit inopenclaw.json voor een geavanceerde veilige standaardinstelling: Plugin ingeschakeld, beperkt tot
main, alleen direct-message-sessies, model overgenomen van de sessie.
plugins.entries.* (inclusief active-memory.config) valt in de configuratiecategorie
zonder herstart:
de Gateway laadt de Plugin-runtime automatisch opnieuw en er is geen handmatige herstart
nodig. Als je toch een volledige herstart wilt forceren, voer je dit uit:
plugins.entries.active-memory.enabled: trueschakelt de Plugin inconfig.agents: ["main"]meldt alleen de agentmainaanconfig.allowedChatTypes: ["direct"]beperkt dit tot direct-message-sessies (meld groepen/kanalen expliciet aan)config.model(optioneel) legt een specifiek ophaalmodel vast; indien niet ingesteld, wordt het huidige sessiemodel overgenomenconfig.modelFallbackwordt alleen gebruikt wanneer geen expliciet of overgenomen model kan worden bepaaldconfig.fastModeoverschrijft optioneel de snelle modus voor het ophalen zonder de hoofdagent te wijzigenconfig.promptStyle: "balanced"is de standaard voor de modusrecent- Active Memory wordt nog steeds alleen uitgevoerd voor geschikte interactieve permanente chatsessies (zie Wanneer het wordt uitgevoerd)
Hoe het werkt
De blokkerende subagent kan alleen de geconfigureerde tools voor het ophalen uit het geheugen aanroepen (zie Geheugentools). Als het verband tussen de query en het beschikbare geheugen zwak is, retourneert dezeNONE en gaat het hoofdantwoord verder
zonder extra context.
Active Memory is een functie voor gespreksverrijking, geen platformbrede
inferentiefunctie:
Gebruik dit wanneer de sessie permanent en gebruikersgericht is, de agent
zinvol langetermijngeheugen heeft om te doorzoeken en continuïteit/personalisatie
belangrijker is dan pure promptdeterminisme: stabiele voorkeuren, terugkerende gewoonten,
langetermijncontext die natuurlijk naar voren moet komen. Het is niet geschikt voor
automatisering, interne workers, eenmalige API-taken of situaties waarin verborgen
personalisatie verrassend zou zijn.
Wanneer het wordt uitgevoerd
Active Memory heeft twee activeringspaden:- Onthouden in verschillende gesprekken richt zich automatisch op agents waarvan
de effectieve instelling
memory.search.rememberAcrossConversationsis ingeschakeld, maar alleen voor privé-, directe of permanente expliciete UI-gesprekken. - Geavanceerde Active Memory richt zich op agent-ID’s die worden vermeld in
plugins.entries.active-memory.config.agentsen past de chat- type- en chat-ID-instellingen van de Plugin toe.
/active-memory off pauzeert beide
paden voor dat gesprek. Als niet aan een van de voorwaarden wordt voldaan, wordt Active Memory
voor die beurt niet uitgevoerd en blijft het hoofdantwoord ongewijzigd.
Sessietypen
config.allowedChatTypes bepaalt welke soorten gesprekken het
geavanceerde Active Memory-pad mogen uitvoeren. Dit kan Onthouden in verschillende gesprekken niet verruimen:
die productinstelling blijft beperkt tot privégesprekken, zelfs wanneer geavanceerde Active Memory
in groepen of kanalen is toegestaan. Standaard:
direct, group, channel, explicit (portaalachtige sessies
met een ondoorzichtige sessie-ID, bijvoorbeeld agent:main:explicit:portal-123).
Direct-message-sessies worden standaard uitgevoerd; groepen, kanalen en expliciete sessies
moeten worden aangemeld:
config.allowedChatIds en config.deniedChatIds toe:
allowedChatIdsis een toelatingslijst met bepaalde gespreks-ID’s. Wanneer deze niet leeg is, wordt Active Memory alleen uitgevoerd voor sessies waarvan de gespreks-ID in de lijst staat — dit beperkt elk toegestaan chattype tegelijk, inclusief directe berichten. Om alle directe berichten te behouden en alleen groepen te beperken, voeg je ook de directe peer-ID’s toe aanallowedChatIds, of houd jeallowedChatTypesbeperkt tot de uitrol voor groepen/kanalen die je test.deniedChatIdsis een blokkeerlijst die altijd voorrang heeft opallowedChatTypesenallowedChatIds.
chat_id/open_id, Telegram-chat-ID, Slack-kanaal-ID). Vergelijking is
niet hoofdlettergevoelig. Als allowedChatIds niet leeg is en OpenClaw
geen gespreks-ID voor de sessie kan bepalen, slaat Active Memory de beurt over
in plaats van te gokken.
Sessieschakelaar
Pauzeer of hervat Active Memory voor de huidige chatsessie zonder de configuratie te bewerken:plugins.entries.active-memory.config.enabled, de instelling
memory.search.rememberAcrossConversations van een agent of andere globale
configuratie niet.
Gebruik in plaats daarvan de globale vorm om dit voor alle sessies te pauzeren/hervatten (vereist
eigenaar of operator.admin):
plugins.entries.active-memory.config.enabled, maar
laat plugins.entries.active-memory.enabled ingeschakeld, zodat de opdracht
beschikbaar blijft om Active Memory later weer in te schakelen.
Hoe je het kunt zien
Standaard injecteert Active Memory een verborgen, niet-vertrouwd promptvoorvoegsel dat niet in het normale antwoord wordt weergegeven. Schakel de sessieschakelaars in die overeenkomen met de gewenste uitvoer:/verbose onvoegt een statusregel toe:🧩 Active Memory: status=ok elapsed=842ms query=recent summary=34 chars/trace onvoegt een foutopsporingssamenvatting toe:🔎 Active Memory Debug: Lemon pepper wings with blue cheese.
/trace raw toont het getraceerde blok Model Input (User Role) het onbewerkte
verborgen voorvoegsel:
Querymodi
config.queryMode bepaalt hoeveel van het gesprek de blokkerende subagent
ziet. Kies de kleinste modus die vervolgvragen nog goed beantwoordt; verhoog
timeoutMs naarmate de context groter wordt, van message naar recent naar full.
- message
- recent
- volledig
Alleen het laatste gebruikersbericht wordt verzonden.Gebruik dit wanneer je het snelste gedrag wilt, de sterkste voorkeur voor het ophalen van stabiele
voorkeuren en vervolgbeurten geen gesprekscontext
nodig hebben. Begin rond
3000-5000 ms voor config.timeoutMs.Promptstijlen
config.promptStyle bepaalt hoe gretig of strikt de sub-agent is bij het
teruggeven van herinneringen:
Standaardtoewijzing wanneer
config.promptStyle niet is ingesteld:
config.promptStyle overschrijft de toewijzing altijd.
Beleid voor modelfallback
Alsconfig.model niet is ingesteld, kiest Active Memory een model in deze volgorde:
config.modelFallbackPolicy is een verouderd compatibiliteitsveld dat behouden blijft voor
oudere configuraties; het verandert het runtimegedrag niet meer — modelFallback is
uitsluitend de laatste optie in de bovenstaande keten, en geen runtimefallback die
een ander model inschakelt wanneer het gekozen model een fout geeft.
Snelheidsaanbevelingen
config.model niet instellen (het sessiemodel overnemen) is de veiligste
standaard: hierdoor worden je bestaande voorkeuren voor provider, authenticatie en model gevolgd. Gebruik
voor een lagere latentie in plaats daarvan een specifiek snel model — de kwaliteit van
herinneringen is belangrijk, maar latentie weegt hier zwaarder dan in het hoofdantwoordpad, en het
tooloppervlak is beperkt (alleen tools voor het ophalen van herinneringen).
Goede opties voor snelle modellen:
cerebras/gpt-oss-120b, een specifiek recallmodel met lage latentiegoogle/gemini-3-flash, een fallback met lage latentie zonder je primaire chatmodel te wijzigen- je normale sessiemodel, door
config.modelniet in te stellen
Cerebras-configuratie
chat/completions-toegang heeft voor het gekozen
model — alleen zichtbaarheid van /v1/models garandeert dat niet.
Geheugentools
config.toolsAllow stelt de concrete toolnamen in die de blokkerende sub-agent mag
aanroepen voor geavanceerde Active Memory. De standaardwaarden hangen af van de huidige geheugenprovider:
Als geen van de geconfigureerde tools beschikbaar is, of het uitvoeren van de sub-agent mislukt,
slaat Active Memory het ophalen van herinneringen voor die beurt over en gaat het hoofdantwoord verder
zonder geheugencontext. Voor aangepaste recalltools geldt niet-lege, voor het model zichtbare
tooluitvoer als bewijs voor een herinnering, tenzij gestructureerde resultaatvelden
expliciet een leeg resultaat of een mislukking melden.
toolsAllow accepteert alleen concrete namen van geheugentools: jokertekens, group:*-
items en kerntools van de agent (read, exec, message, web_search en
vergelijkbare tools) worden stilzwijgend uitgefilterd voordat de verborgen sub-agent wordt gestart.
Ingebouwd geheugen
Geen explicietetoolsAllow nodig:
LanceDB-geheugen
Na het installeren en configureren van LanceDB gebruikt Active Memory automatischmemory_recall; er is geen expliciete toolsAllow nodig:
memory.search.rememberAcrossConversations stelt privétranscripten van sessies niet beschikbaar
via memory_recall. Gebruik de automatische recall van LanceDB of de geavanceerde
configuratie hierboven wanneer LanceDB de actieve geheugenprovider is.
Lossless Claw
Lossless Claw is een externe context-engine-Plugin (openclaw plugins install @martian-engineering/lossless-claw) met eigen recalltools. Stel deze eerst in als
context-engine; zie Context-engine. Wijs Active Memory vervolgens
naar de bijbehorende tools:
lcm_expand toe aan toolsAllow; Lossless Claw gebruikt dit als
tool op lager niveau voor gedelegeerde uitbreiding en het is niet bedoeld voor de Active Memory-sub-agent
op het hoogste niveau. Lossless Claw wijzigt de contextopbouw zonder
de huidige geheugenprovider te vervangen. Behoud memory_search in toolsAllow
wanneer je ook rememberAcrossConversations gebruikt; een toollijst met alleen LCM-tools blijft
geldig voor geavanceerde Active Memory, maar schakelt het productpad voor het ophalen van transcripten
uit.
Geavanceerde uitwegen
Geen onderdeel van de aanbevolen configuratie.config.thinking overschrijft het denkniveau van de sub-agent (standaard "off",
omdat Active Memory in het antwoordpad wordt uitgevoerd en extra denktijd direct
zichtbare latentie voor de gebruiker toevoegt):
config.fastMode overschrijft de snelle modus alleen voor de blokkerende geheugen-sub-agent.
Gebruik true, false of "auto"; laat dit oningesteld om de normale
standaardwaarden van de agent, sessie en het model over te nemen. "auto" gebruikt de geconfigureerde
fastAutoOnSeconds-grenswaarde van het recallmodel:
config.promptAppend voegt operatorinstructies toe na de standaardprompt
en vóór de gesprekscontext — combineer dit met een aangepaste toolsAllow wanneer
een geheugen-Plugin die niet tot de kern behoort een specifieke toolvolgorde of queryvorm nodig heeft:
config.promptOverride vervangt de standaardprompt volledig (de gesprekscontext
wordt daarna nog steeds toegevoegd). Dit wordt niet aanbevolen, tenzij je bewust
een ander recallcontract test — de standaardprompt is afgestemd om
ofwel NONE ofwel compacte context met gebruikersfeiten voor het hoofdmodel terug te geven:
Transcriptopslag
Het uitvoeren van blokkerende sub-agents maakt tijdens de aanroep een echtsession.jsonl-transcript.
Standaard wordt dit naar een tijdelijke map geschreven en onmiddellijk verwijderd
nadat de uitvoering is voltooid.
Om deze transcripten op schijf te bewaren voor foutopsporing:
config.transcriptDir. Gebruik dit
voorzichtig: transcripten kunnen zich snel ophopen in drukke sessies, de querymodus
full dupliceert veel gesprekscontext, en deze transcripten bevatten
verborgen promptcontext en opgehaalde herinneringen.
Configuratie
Alle configuratie voor Active Memory staat onderplugins.entries.active-memory.
Nuttige afstelvelden:
Aanbevolen configuratie
Begin metrecent:
/verbose on voor de statusregel en /trace on voor de foutopsporingssamenvatting
— beide worden als vervolgbericht na het hoofdantwoord verzonden, niet
ervoor. Schakel vervolgens over op message voor een lagere latentie, of op full als extra context
de tragere uitvoering van de subagent waard is.
Respijtperiode voor koude start
Vóór v2026.5.2 verlengde de PlugintimeoutMs tijdens een koude start stilzwijgend met 30000
ms extra, zodat het opwarmen van het model, het laden van de insluitingsindex en de eerste
ophaalactie één groter budget konden delen. In v2026.5.2 is die respijtperiode achter een
expliciete setupGraceTimeoutMs-configuratie geplaatst: timeoutMs is nu standaard het budget
voor het ophalen, tenzij je dit expliciet inschakelt. De blokkerende hook omhult dat budget met
twee vaste fasen: maximaal 1500 ms voor de sessie-/configuratiecontrole voordat het ophalen
begint, gevolgd door afzonderlijk 1500 ms voor de afhandeling van de afbreking en het herstel van het transcript
nadat het ophalen stopt. Geen van beide marges verlengt de uitvoering van modellen of tools.
Als je een upgrade hebt uitgevoerd vanaf v2026.4.x en timeoutMs hebt afgestemd op de oude
wereld met impliciete respijtperiode (de aanbevolen beginwaarde timeoutMs: 15000 is daar een
voorbeeld van), stel je setupGraceTimeoutMs: 30000 in om het effectieve budget
van vóór v5.2 te herstellen:
timeoutMs + setupGraceTimeoutMs + 3000 ms (het
geconfigureerde budget voor recall-werk, plus maximaal 1500 ms voor de preflight, plus een vaste
toeslag van 1500 ms voor voltooiing na de recall). De ingebouwde recall-runner gebruikt
hetzelfde effectieve time-outbudget, dus setupGraceTimeoutMs geldt zowel voor de
buitenste watchdog voor het opbouwen van de prompt als voor de binnenste blokkerende recall-run.
Voor gateways met beperkte resources waarbij een langere cold-start als
afweging wordt geaccepteerd, werken lagere waarden (5000-15000 ms) ook — de afweging is een grotere
kans dat de allereerste recall na een herstart van de gateway leeg wordt geretourneerd
terwijl het opwarmen wordt voltooid.
Foutopsporing
Als Active Memory niet verschijnt waar je het verwacht:- Controleer of de plugin is ingeschakeld onder
plugins.entries.active-memory.enabled. - Controleer voor onthouden tussen gesprekken of de effectieve
instelling
memory.search.rememberAcrossConversationsvan de agent is ingeschakeld, voeropenclaw doctoruit om te verifiëren dat de huidige geheugenprovider beveiligde transcript-recall ondersteunt en controleer ofconfig.toolsAllowmemory_searchbevat wanneer dit expliciet is geconfigureerd. Controleer voor geavanceerd Active Memory of de agent-ID inconfig.agentsstaat. - Controleer of je test via een geschikt interactief blijvend gesprek.
- Onthoud dat groepen en kanalen nooit transcript-recall tussen gesprekken gebruiken.
- Schakel
config.logging: truein en houd de gatewaylogboeken in de gaten. - Controleer met
openclaw status --deepof het zoeken in het geheugen zelf werkt.
maxSummaryChars strenger. Als Active Memory te
traag is, verlaag je queryMode, verlaag je timeoutMs of verminder je het aantal recente beurten en
de tekenlimieten per beurt.
Veelvoorkomende problemen
Geavanceerd Active Memory maakt gebruik van de recall-pijplijn van de geconfigureerde geheugenplugin, dus de meeste onverwachte recall-resultaten zijn problemen met de embeddingprovider, geen bugs in Active Memory. Het standaardpadmemory-core gebruikt memory_search en
memory_get; het slot memory-lancedb gebruikt memory_recall. Als je een andere
geheugenplugin gebruikt, controleer je of config.toolsAllow de tools vermeldt die die plugin daadwerkelijk
registreert. Onthouden tussen gesprekken is beperkter: de huidige geheugenprovider
moet het beveiligde recall-pad van OpenClaw voor dezelfde agent en privésessies ondersteunen.
Embeddingprovider gewijzigd of werkt niet meer
Embeddingprovider gewijzigd of werkt niet meer
Als
memory.search.provider niet is ingesteld, gebruikt OpenClaw embeddings van OpenAI. Stel
memory.search.provider expliciet in voor embeddings van Bedrock, DeepInfra, Gemini, GitHub
Copilot, LM Studio, local, Mistral, Ollama, Voyage of OpenAI-compatible.
Als de geconfigureerde provider niet kan worden uitgevoerd, kan memory_search
terugvallen op uitsluitend lexicale zoekresultaten; runtimefouten nadat een provider
al is geselecteerd, activeren niet automatisch een fallback.Stel een optionele memory.search.fallback alleen in als je bewust één
fallback wilt. Zie Zoeken in het geheugen voor de volledige
lijst met providers en voorbeelden.Recall voelt traag, leeg of inconsistent aan
Recall voelt traag, leeg of inconsistent aan
- Schakel
/trace onin om de door de plugin beheerde foutopsporingssamenvatting van Active Memory in de sessie weer te geven. - Schakel
/verbose onin om na elk antwoord ook de statusregel🧩 Active Memory: ...te zien. - Controleer de gatewaylogboeken op
active-memory: ... start|done,memory sync failed (search-bootstrap)of embeddingfouten van de provider. - Voer
openclaw status --deepuit om de backend voor het zoeken in het geheugen en de status van de index te inspecteren. - Als je
ollamagebruikt, controleer je of het embeddingmodel is geïnstalleerd (ollama list).
De eerste recall na een herstart van de gateway retourneert `status=timeout`
De eerste recall na een herstart van de gateway retourneert `status=timeout`
Als bij v2026.5.2 en later de cold-start-configuratie (opwarmen van het model + laden van de embeddingindex)
nog niet is voltooid op het moment dat de eerste recall wordt geactiveerd, kan de uitvoering
het geconfigureerde budget
timeoutMs bereiken en status=timeout
met lege uitvoer retourneren. De gatewaylogboeken tonen active-memory timeout after Nms
rond het eerste geschikte antwoord na een herstart.Zie Respijtperiode voor cold-start onder Aanbevolen configuratie voor de
aanbevolen waarde setupGraceTimeoutMs.