Active Memory is een optionele, door de plugin beheerde blokkerende geheugen-subagent die wordt uitgevoerd vóór het hoofdantwoord voor in aanmerking komende gesprekssessies. Het bestaat omdat de meeste geheugensystemen krachtig maar reactief zijn. Ze vertrouwen erop dat de hoofdagent beslist wanneer geheugen moet worden doorzocht, of dat de gebruiker dingen zegt zoals “remember this” of “search memory.” Tegen die tijd is het moment waarop geheugen het antwoord natuurlijk had laten aanvoelen al voorbij. Active Memory geeft het systeem één begrensde kans om relevant geheugen naar voren te brengen voordat het hoofdantwoord wordt gegenereerd.Documentation Index
Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Snel aan de slag
Plak dit inopenclaw.json voor een veilige standaardconfiguratie — plugin aan, beperkt tot
de main-agent, alleen direct-message-sessies, neemt waar mogelijk het sessiemodel over:
plugins.entries.active-memory.enabled: truezet de plugin aanconfig.agents: ["main"]schakelt Active Memory alleen in voor demain-agentconfig.allowedChatTypes: ["direct"]beperkt dit tot direct-message-sessies (meld groepen/kanalen expliciet aan)config.model(optioneel) zet een specifiek recall-model vast; niet ingesteld neemt het huidige sessiemodel overconfig.modelFallbackwordt alleen gebruikt wanneer er geen expliciet of overgenomen model wordt gevondenconfig.promptStyle: "balanced"is de standaard voor derecent-modus- Active Memory wordt nog steeds alleen uitgevoerd voor in aanmerking komende interactieve persistente chatsessies
Snelheidsaanbevelingen
De eenvoudigste configuratie is omconfig.model niet in te stellen en Active Memory
hetzelfde model te laten gebruiken dat je al gebruikt voor normale antwoorden. Dat is de veiligste standaard
omdat het je bestaande provider-, authenticatie- en modelvoorkeuren volgt.
Als je Active Memory sneller wilt laten aanvoelen, gebruik dan een specifiek inferentiemodel
in plaats van het hoofdchatmodel te lenen. Recall-kwaliteit is belangrijk, maar latency
is belangrijker dan voor het pad van het hoofdantwoord, en het tooloppervlak van Active Memory
is smal (het roept alleen beschikbare geheugen-recall-tools aan).
Goede opties voor snelle modellen:
cerebras/gpt-oss-120bvoor een specifiek recall-model met lage latencygoogle/gemini-3-flashals fallback met lage latency zonder je primaire chatmodel te wijzigen- je normale sessiemodel, door
config.modelniet in te stellen
Cerebras-configuratie
Voeg een Cerebras-provider toe en wijs Active Memory daarnaar:chat/completions-toegang heeft voor het
gekozen model — zichtbaarheid in /v1/models alleen garandeert dit niet.
Hoe je het ziet
Active Memory injecteert een verborgen, niet-vertrouwde promptprefix voor het model. Het toont geen ruwe<active_memory_plugin>...</active_memory_plugin>-tags in het normale, voor de client zichtbare antwoord.
Sessieschakelaar
Gebruik de pluginopdracht wanneer je Active Memory voor de huidige chatsessie wilt pauzeren of hervatten zonder de configuratie te bewerken:plugins.entries.active-memory.enabled, agenttargeting of andere globale
configuratie niet.
Als je wilt dat de opdracht configuratie schrijft en Active Memory voor
alle sessies pauzeert of hervat, gebruik dan de expliciete globale vorm:
plugins.entries.active-memory.config.enabled. Het laat
plugins.entries.active-memory.enabled aan zodat de opdracht beschikbaar blijft om
Active Memory later weer aan te zetten.
Als je wilt zien wat Active Memory in een live sessie doet, zet dan de
sessieschakelaars aan die overeenkomen met de gewenste uitvoer:
- een Active Memory-statusregel zoals
Active Memory: status=ok elapsed=842ms query=recent summary=34 charswanneer/verbose on - een leesbare debugsamenvatting zoals
Active Memory Debug: Lemon pepper wings with blue cheese.wanneer/trace on
/trace raw inschakelt, toont het getraceerde blok Model Input (User Role)
de verborgen Active Memory-prefix als:
Wanneer het wordt uitgevoerd
Active Memory gebruikt twee poorten:- Configuratie-opt-in
De plugin moet ingeschakeld zijn en de huidige agent-id moet voorkomen in
plugins.entries.active-memory.config.agents. - Strikte runtime-geschiktheid Zelfs wanneer ingeschakeld en getarget, wordt Active Memory alleen uitgevoerd voor in aanmerking komende interactieve persistente chatsessies.
Sessietypen
config.allowedChatTypes bepaalt welke soorten gesprekken Active
Memory überhaupt mogen uitvoeren.
De standaard is:
config.allowedChatIds en
config.deniedChatIds nadat je de toegestane sessietypen hebt gekozen.
allowedChatIds is een expliciete allowlist van opgeloste gespreks-id’s. Wanneer deze
niet leeg is, wordt Active Memory alleen uitgevoerd wanneer de gespreks-id van de sessie in
die lijst staat. Dit vernauwt elk toegestaan chattype tegelijk, inclusief directe
berichten. Als je alle directe berichten plus alleen specifieke groepen wilt, neem dan
de directe peer-id’s op in allowedChatIds of houd allowedChatTypes gericht op
de groep-/kanaaluitrol die je test.
deniedChatIds is een expliciete denylist. Die wint altijd van
allowedChatTypes en allowedChatIds, dus een overeenkomend gesprek wordt overgeslagen,
zelfs wanneer het sessietype anders wel toegestaan is.
De id’s komen uit de persistente kanaalsessiesleutel: bijvoorbeeld Feishu
chat_id / open_id, Telegram-chat-id of Slack-kanaal-id. Matching is
hoofdletterongevoelig. Als allowedChatIds niet leeg is en OpenClaw geen
gespreks-id voor de sessie kan oplossen, slaat Active Memory de beurt over in plaats van
te gokken.
Voorbeeld:
Waar het wordt uitgevoerd
Active Memory is een functie voor conversatieverrijking, geen platformbrede inferentiefunctie.| Oppervlak | Voert Active Memory uit? |
|---|---|
| Persistente sessies in Control UI / webchat | Ja, als de plugin is ingeschakeld en de agent is getarget |
| Andere interactieve kanaalsessies op hetzelfde persistente chatpad | Ja, als de plugin is ingeschakeld en de agent is getarget |
| Headless eenmalige runs | Nee |
| Heartbeat-/achtergrondruns | Nee |
Generieke interne agent-command-paden | Nee |
| Subagent-/interne helperuitvoering | Nee |
Waarom het gebruiken
Gebruik Active Memory wanneer:- de sessie persistent en gebruikersgericht is
- de agent betekenisvol langetermijngeheugen heeft om te doorzoeken
- continuïteit en personalisatie belangrijker zijn dan ruwe promptdeterminisme
- stabiele voorkeuren
- terugkerende gewoonten
- langetermijngebruikerscontext die natuurlijk naar voren moet komen
- automatisering
- interne workers
- eenmalige API-taken
- plaatsen waar verborgen personalisatie verrassend zou zijn
Hoe het werkt
De runtime-vorm is: De blokkerende geheugen-subagent kan alleen de geconfigureerde geheugen-recall-tools gebruiken. Standaard zijn dat:memory_searchmemory_get
plugins.slots.memory memory-lancedb is, is de standaard in plaats daarvan memory_recall.
Stel config.toolsAllow in wanneer een andere geheugenprovider een
ander recall-toolcontract aanbiedt.
Als de verbinding zwak is, moet deze NONE retourneren.
Querymodi
config.queryMode bepaalt hoeveel gesprek de blokkerende geheugen-subagent
ziet. Kies de kleinste modus die vervolgvragen nog goed beantwoordt;
timeoutbudgetten moeten groeien met de contextgrootte (message < recent < full).
- message
- recent
- full
Alleen het nieuwste gebruikersbericht wordt verzonden.Gebruik dit wanneer:
- je het snelste gedrag wilt
- je de sterkste voorkeur voor recall van stabiele voorkeuren wilt
- vervolgbeurten geen gesprekscontext nodig hebben
3000 tot 5000 ms voor config.timeoutMs.Promptstijlen
config.promptStyle bepaalt hoe gretig of strikt de blokkerende geheugen-subagent is
bij het bepalen of geheugen moet worden geretourneerd.
Beschikbare stijlen:
balanced: algemene standaardinstelling voorrecent-modusstrict: het minst gretig; het beste wanneer je heel weinig doorsijpeling uit nabije context wiltcontextual: het meest continuiteitsvriendelijk; het beste wanneer gespreksgeschiedenis belangrijker moet zijnrecall-heavy: eerder bereid om geheugen te tonen bij zachtere maar nog steeds plausibele overeenkomstenprecision-heavy: geeft agressief de voorkeur aanNONE, tenzij de overeenkomst duidelijk ispreference-only: geoptimaliseerd voor favorieten, gewoonten, routines, smaak en terugkerende persoonlijke feiten
config.promptStyle niet is ingesteld:
config.promptStyle expliciet instelt, heeft die overschrijving voorrang.
Voorbeeld:
Beleid voor modelterugval
Alsconfig.model niet is ingesteld, probeert Active Memory een model in deze volgorde te bepalen:
config.modelFallback bepaalt de geconfigureerde terugvalstap.
Optionele aangepaste terugval:
config.modelFallbackPolicy blijft alleen behouden als verouderd compatibiliteitsveld
voor oudere configuraties. Het verandert het runtimegedrag niet meer.
Geheugentools
Standaard laat Active Memory de blokkerende recall-subagentmemory_search en memory_get aanroepen. Dat komt overeen met het ingebouwde memory-core-
contract. Wanneer plugins.slots.memory memory-lancedb selecteert en
config.toolsAllow niet is ingesteld, behoudt Active Memory het bestaande LanceDB-gedrag
en gebruikt in plaats daarvan memory_recall.
Als je een andere geheugenplugin gebruikt, stel config.toolsAllow dan in op de exacte tool-
namen die die plugin registreert. Active Memory vermeldt die tools in de recall-
prompt en geeft dezelfde lijst door aan de ingebedde subagent. Als geen van de
geconfigureerde tools beschikbaar is, of als de geheugen-subagent faalt, slaat Active Memory
recall over voor die beurt en gaat het hoofdantwoord verder zonder geheugencontext.
toolsAllow accepteert alleen concrete namen van geheugentools. Jokertekens, group:*-
items en kernagenttools zoals read, exec, message en
web_search worden genegeerd voordat de verborgen geheugen-subagent start.
Opmerking over standaardgedrag: Active Memory neemt memory_recall niet langer op in de
standaard-toestaanlijst van memory-core. Bestaande memory-lancedb-set-ups blijven werken
wanneer plugins.slots.memory is ingesteld op memory-lancedb. Expliciete toolsAllow
overschrijft altijd de automatische standaardinstelling.
Ingebouwde memory-core
De standaardconfiguratie heeft geen explicietetoolsAllow nodig:
LanceDB-geheugen
De gebundeldememory-lancedb-plugin biedt memory_recall. Het selecteren van de
geheugensleuf is genoeg om Active Memory die recall-tool te laten gebruiken:
Lossless Claw
Lossless Claw is een context-engine-plugin met eigen recall-tools. Installeer en configureer deze eerst als context-engine; zie Context-engine. Laat Active Memory daarna de recall-tools van Lossless Claw gebruiken:lcm_expand niet op in toolsAllow voor de hoofd-subagent van Active Memory.
Lossless Claw gebruikt dat als een gedelegeerde uitbreidings-tool op lager niveau.
Geavanceerde nooduitgangen
Deze opties maken bewust geen deel uit van de aanbevolen configuratie.config.thinking kan het denkniveau van de blokkerende geheugen-subagent overschrijven:
config.promptAppend voegt extra operatorinstructies toe na de standaardprompt van Active
Memory en voor de gesprekscontext:
promptAppend met aangepaste toolsAllow wanneer een niet-kerngeheugenplugin
providerspecifieke toolvolgorde of instructies voor queryvorming nodig heeft.
config.promptOverride vervangt de standaardprompt van Active Memory. OpenClaw
voegt de gesprekscontext daarna nog steeds toe:
NONE
of compacte gebruikersfeitcontext voor het hoofdmodel te retourneren.
Transcriptpersistentie
Runs van de blokkerende geheugen-subagent van Active Memory maken een echtsession.jsonl-
transcript aan tijdens de aanroep van de blokkerende geheugen-subagent.
Standaard is dat transcript tijdelijk:
- het wordt naar een tijdelijke map geschreven
- het wordt alleen gebruikt voor de run van de blokkerende geheugen-subagent
- het wordt direct verwijderd nadat de run is voltooid
config.transcriptDir.
Gebruik dit zorgvuldig:
- transcripten van blokkerende geheugen-subagents kunnen zich snel ophopen in drukke sessies
- de querymodus
fullkan veel gesprekscontext dupliceren - deze transcripten bevatten verborgen promptcontext en opgehaalde herinneringen
Configuratie
Alle configuratie van Active Memory staat onder:| Sleutel | Type | Betekenis |
|---|---|---|
enabled | boolean | Schakelt de plugin zelf in |
config.agents | string[] | Agent-id’s die Active Memory mogen gebruiken |
config.model | string | Optionele modelreferentie voor de blokkerende geheugensubagent; wanneer niet ingesteld, gebruikt Active Memory het huidige sessiemodel |
config.allowedChatTypes | ("direct" | "group" | "channel")[] | Sessietypen die Active Memory mogen uitvoeren; standaard ingesteld op sessies in directe-berichtenstijl |
config.allowedChatIds | string[] | Optionele allowlist per gesprek, toegepast na allowedChatTypes; niet-lege lijsten falen gesloten |
config.deniedChatIds | string[] | Optionele denylist per gesprek die toegestane sessietypen en toegestane id’s overschrijft |
config.queryMode | "message" | "recent" | "full" | Bepaalt hoeveel van het gesprek de blokkerende geheugensubagent ziet |
config.promptStyle | "balanced" | "strict" | "contextual" | "recall-heavy" | "precision-heavy" | "preference-only" | Bepaalt hoe gretig of strikt de blokkerende geheugensubagent is bij het bepalen of geheugen moet worden geretourneerd |
config.toolsAllow | string[] | Concrete namen van geheugentools die de blokkerende geheugensubagent mag aanroepen; standaard ["memory_search", "memory_get"], of ["memory_recall"] wanneer plugins.slots.memory memory-lancedb is; jokertekens, group:*-items en kernagenttools worden genegeerd |
config.thinking | "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | "max" | Geavanceerde thinking-overschrijving voor de blokkerende geheugensubagent; standaard off voor snelheid |
config.promptOverride | string | Geavanceerde volledige promptvervanging; niet aanbevolen voor normaal gebruik |
config.promptAppend | string | Geavanceerde extra instructies die aan de standaardprompt of overschreven prompt worden toegevoegd |
config.timeoutMs | number | Harde timeout voor de blokkerende geheugensubagent, begrensd op 120000 ms |
config.setupGraceTimeoutMs | number | Geavanceerd extra instelbudget voordat de recall-timeout verloopt; standaard 0 en begrensd op 30000 ms. Zie Cold-start-respijt voor upgradeadvies voor v2026.4.x |
config.maxSummaryChars | number | Maximumaantal totale tekens toegestaan in de Active Memory-samenvatting |
config.logging | boolean | Geeft Active Memory-logboeken weer tijdens het afstemmen |
config.persistTranscripts | boolean | Bewaart transcripties van de blokkerende geheugensubagent op schijf in plaats van tijdelijke bestanden te verwijderen |
config.transcriptDir | string | Relatieve transcriptiemap voor de blokkerende geheugensubagent onder de map met agentsessies |
| Sleutel | Type | Betekenis |
|---|---|---|
config.maxSummaryChars | number | Maximumaantal totale tekens toegestaan in de Active Memory-samenvatting |
config.recentUserTurns | number | Eerdere gebruikersbeurten om op te nemen wanneer queryMode recent is |
config.recentAssistantTurns | number | Eerdere assistentbeurten om op te nemen wanneer queryMode recent is |
config.recentUserChars | number | Maximumaantal tekens per recente gebruikersbeurt |
config.recentAssistantChars | number | Maximumaantal tekens per recente assistentbeurt |
config.cacheTtlMs | number | Cachehergebruik voor herhaalde identieke query’s (bereik: 1000-120000 ms; standaard: 15000) |
config.circuitBreakerMaxTimeouts | number | Sla recall over na dit aantal opeenvolgende timeouts voor dezelfde agent/hetzelfde model. Wordt gereset bij een succesvolle recall of nadat de cooldown verloopt (bereik: 1-20; standaard: 3). |
config.circuitBreakerCooldownMs | number | Hoelang recall moet worden overgeslagen nadat de circuit breaker is geactiveerd, in ms (bereik: 5000-600000; standaard: 60000). |
Aanbevolen configuratie
Begin metrecent.
/verbose on voor de
normale statusregel en /trace on voor de Active Memory-debugsamenvatting in plaats
van te zoeken naar een aparte Active Memory-debugopdracht. In chatkanalen worden die
diagnostische regels na het hoofdantwoord van de assistent verzonden in plaats van ervoor.
Ga daarna naar:
messageals je lagere latentie wiltfullals je besluit dat extra context de tragere blokkerende geheugensubagent waard is
Cold-start-respijt
Vóór v2026.5.2 verlengde de plugin stilzwijgend je geconfigureerdetimeoutMs met een
extra 30000 ms tijdens cold-start, zodat modelopwarming, het laden van de embedding-index en
de eerste recall één groter budget konden delen. In v2026.5.2 is dat respijt
achter een expliciete setupGraceTimeoutMs-configuratie geplaatst — je geconfigureerde timeoutMs
is nu standaard het budget, tenzij je je hiervoor aanmeldt.
Als je hebt geüpgraded vanaf v2026.4.x en je timeoutMs hebt ingesteld op een waarde die is afgestemd op de
oude wereld met impliciet respijt (de aanbevolen startwaarde timeoutMs: 15000 is één
voorbeeld), stel dan setupGraceTimeoutMs: 30000 in om de prompt-build-hook en
buitenste watchdog-budgetten terug te verlengen naar de effectieve waarden van vóór v5.2:
setupGraceTimeoutMs-configuratie, zodat de plugin niet langer stilzwijgend
configuraties van 15000 ms verlengt naar 45000 ms op de main-lane.”
De ingebouwde recall-runner gebruikt hetzelfde effectieve time-outbudget, dus
setupGraceTimeoutMs dekt zowel de buitenste watchdog voor het bouwen van prompts als de binnenste
blokkerende recall-run.
Voor Gateways met beperkte resources, waar cold-startlatentie een bekende afweging is,
werken lagere waarden (5000–15000 ms) ook — de afweging is een hogere kans dat
de allereerste recall na een herstart van de Gateway leeg terugkomt terwijl de warm-up
wordt voltooid.
Debuggen
Als Active Memory niet verschijnt waar je het verwacht:- Controleer of de Plugin is ingeschakeld onder
plugins.entries.active-memory.enabled. - Controleer of de huidige agent-id in
config.agentsstaat. - Controleer of je test via een interactieve permanente chatsessie.
- Schakel
config.logging: truein en bekijk de Gateway-logboeken. - Controleer of geheugenzoekopdrachten zelf werken met
openclaw memory status --deep.
maxSummaryChars
- verlaag
queryMode - verlaag
timeoutMs - verminder het aantal recente beurten
- verlaag de tekenlimieten per beurt
Veelvoorkomende problemen
Active Memory draait op de recall-pipeline van de geconfigureerde geheugen-Plugin, dus de meeste recall-verrassingen zijn problemen met de embedding-provider, geen bugs in Active Memory. Het standaardpadmemory-core gebruikt memory_search en memory_get; de
memory-lancedb-slot gebruikt memory_recall. Als je een andere geheugen-Plugin gebruikt,
controleer dan of config.toolsAllow de tools noemt die die Plugin daadwerkelijk registreert.
Embedding-provider gewijzigd of werkt niet meer
Embedding-provider gewijzigd of werkt niet meer
Als
memorySearch.provider niet is ingesteld, detecteert OpenClaw automatisch de eerste
beschikbare embedding-provider. Een nieuwe API-sleutel, uitgeput quotum of een
rate-limited gehoste provider kan wijzigen welke provider tussen
runs wordt gevonden. Als er geen provider wordt gevonden, kan memory_search degraderen naar
alleen lexicale retrieval; runtimefouten nadat een provider al is geselecteerd vallen niet
automatisch terug.Zet de provider (en een optionele fallback) expliciet vast om selectie
deterministisch te maken. Zie Geheugen zoeken voor de volledige
lijst met providers en voorbeelden voor vastzetten.Recall voelt traag, leeg of inconsistent
Recall voelt traag, leeg of inconsistent
- Schakel
/trace onin om de door de Plugin beheerde debug-samenvatting van Active Memory in de sessie zichtbaar te maken. - Schakel
/verbose onin om ook de statusregel🧩 Active Memory: ...na elk antwoord te zien. - Bekijk Gateway-logboeken voor
active-memory: ... start|done,memory sync failed (search-bootstrap)of embeddingfouten van providers. - Voer
openclaw memory status --deepuit om de geheugenzoek-backend en indexstatus te inspecteren. - Als je
ollamagebruikt, controleer dan of het embeddingmodel is geïnstalleerd (ollama list).
Eerste recall na herstart van de Gateway retourneert `status=timeout`
Eerste recall na herstart van de Gateway retourneert `status=timeout`
Op v2026.5.2 en later kan de run, als cold-startsetup (model-warm-up + laden van embeddingindex)
nog niet klaar is tegen de tijd dat de eerste recall start, het geconfigureerde
timeoutMs-budget raken en status=timeout retourneren
met lege output. Gateway-logboeken tonen active-memory timeout after Nms
rond het eerste in aanmerking komende antwoord na een herstart.Zie Cold-start-grace onder Aanbevolen installatie voor de
aanbevolen waarde voor setupGraceTimeoutMs.