Sessions and memory
Dreaming
Dreaming is het achtergrondsysteem voor geheugenconsolidatie in memory-core. Het helpt OpenClaw sterke kortetermijnsignalen naar duurzaam geheugen te verplaatsen, terwijl het proces uitlegbaar en controleerbaar blijft.
Wat dreaming schrijft
Dreaming houdt twee soorten uitvoer bij:
- Machinestatus in
memory/.dreams/(recall-opslag, fasesignalen, ingestiecheckpoints, locks). - Voor mensen leesbare uitvoer in
DREAMS.md(of bestaandedreams.md) en optionele faserapportbestanden ondermemory/dreaming/<phase>/YYYY-MM-DD.md.
Langetermijnpromotie schrijft nog steeds alleen naar MEMORY.md.
Fasemodel
Dreaming gebruikt drie samenwerkende fasen:
| Fase | Doel | Duurzame schrijfactie |
|---|---|---|
| Light | Recent kortetermijnmateriaal sorteren en faseren | Nee |
| Deep | Duurzame kandidaten scoren en promoveren | Ja (MEMORY.md) |
| REM | Reflecteren op thema's en terugkerende ideeën | Nee |
Deze fasen zijn interne implementatiedetails, geen afzonderlijke door gebruikers geconfigureerde "modi".
Light-fase
De Light-fase neemt recente dagelijkse geheugensignalen en recall-sporen op, dedupliceert ze en faseert kandidaatregels.
- Leest uit kortetermijn-recallstatus, recente dagelijkse geheugenbestanden en geredigeerde sessietranscripten wanneer beschikbaar.
- Schrijft een beheerd
## Light Sleep-blok wanneer opslag inline-uitvoer bevat. - Registreert versterkingssignalen voor latere Deep-rangschikking.
- Schrijft nooit naar
MEMORY.md.
Deep-fase
De Deep-fase bepaalt wat langetermijngeheugen wordt.
- Rangschikt kandidaten met gewogen scores en drempelpoorten.
- Vereist dat
minScore,minRecallCountenminUniqueQueriesslagen. - Hydrateert snippets opnieuw uit live dagelijkse bestanden voordat er wordt geschreven, zodat verouderde/verwijderde snippets worden overgeslagen.
- Voegt gepromoveerde items toe aan
MEMORY.md. - Schrijft een
## Deep Sleep-samenvatting naarDREAMS.mden schrijft optioneelmemory/dreaming/deep/YYYY-MM-DD.md.
REM-fase
De REM-fase extraheert patronen en reflectieve signalen.
- Bouwt thema- en reflectiesamenvattingen uit recente kortetermijnsporen.
- Schrijft een beheerd
## REM Sleep-blok wanneer opslag inline-uitvoer bevat. - Registreert REM-versterkingssignalen die door Deep-rangschikking worden gebruikt.
- Schrijft nooit naar
MEMORY.md.
Ingestie van sessietranscripten
Dreaming kan geredigeerde sessietranscripten opnemen in het dreaming-corpus. Wanneer transcripten beschikbaar zijn, worden ze naast dagelijkse geheugensignalen en recall-sporen aan de Light-fase gevoerd. Persoonlijke en gevoelige inhoud wordt vóór ingestie geredigeerd.
Dream Diary
Dreaming houdt ook een narratief Dream Diary bij in DREAMS.md. Nadat elke fase genoeg materiaal heeft, voert memory-core best-effort een achtergrondbeurt met een subagent uit en voegt een kort dagboekitem toe. Het gebruikt het standaard runtimemodel tenzij dreaming.model is geconfigureerd. Als het geconfigureerde model niet beschikbaar is, probeert Dream Diary het eenmaal opnieuw met het standaardsessiemodel.
Er is ook een onderbouwde historische backfill-lane voor review- en herstelwerk:
Backfill-opdrachten
memory rem-harness --path ... --groundedtoont een preview van onderbouwde dagboekuitvoer uit historischeYYYY-MM-DD.md-notities.memory rem-backfill --path ...schrijft omkeerbare onderbouwde dagboekitems naarDREAMS.md.memory rem-backfill --path ... --stage-short-termfaseert onderbouwde duurzame kandidaten in dezelfde kortetermijn-bewijsopslag die de normale Deep-fase al gebruikt.memory rem-backfill --rollbacken--rollback-short-termverwijderen die gefaseerde backfill-artefacten zonder gewone dagboekitems of live kortetermijn-recall aan te raken.
De Control-UI biedt dezelfde backfill-/resetflow voor het dagboek, zodat je resultaten in de Dreams-scène kunt inspecteren voordat je beslist of de onderbouwde kandidaten promotie verdienen. De Scene toont ook een aparte onderbouwde lane, zodat je kunt zien welke gefaseerde kortetermijnitems uit historische replay kwamen, welke gepromoveerde items door onderbouwing werden geleid, en alleen gefaseerde items kunt wissen die uitsluitend onderbouwd zijn zonder gewone live kortetermijnstatus aan te raken.
Deep-rangschikkingssignalen
Deep-rangschikking gebruikt zes gewogen basissignalen plus faseversterking:
| Signaal | Gewicht | Beschrijving |
|---|---|---|
| Frequentie | 0.24 | Hoeveel kortetermijnsignalen het item heeft verzameld |
| Relevantie | 0.30 | Gemiddelde ophaalkwaliteit voor het item |
| Querydiversiteit | 0.15 | Afzonderlijke query-/dagcontexten waarin het naar voren kwam |
| Recentheid | 0.15 | Tijdvervalste versheidsscore |
| Consolidatie | 0.10 | Sterkte van herhaling over meerdere dagen |
| Conceptuele rijkdom | 0.06 | Dichtheid van concepttags uit snippet/pad |
Hits in de Light- en REM-fase voegen een kleine, door recentheid vervallende boost toe vanuit memory/.dreams/phase-signals.json.
Schaduwproefresultaten kunnen bovenop die basisscore worden gelegd als reviewsignaal vóór een duurzame schrijfactie. Een nuttige proef geeft de kandidaat een kleine begrensde boost, een neutrale proef houdt hem uitgesteld, en een schadelijke proef markeert hem als afgewezen voor die scoreronde. Dit signaal is nog steeds alleen voor rapportage: het kan de volgorde van kandidaten of reviewmetadata wijzigen, maar schrijft niet naar MEMORY.md en promoveert de kandidaat niet zelfstandig.
Rapportdekking voor QA-schaduwproef
QA Lab bevat een scenario dat alleen rapporteert om te verkennen hoe een toekomstige dreaming-schaduwproef een kandidaatgeheugen vóór promotie zou kunnen beoordelen. Het scenario vraagt een agent een basisantwoord te vergelijken met een antwoord dat het kandidaatgeheugen kan gebruiken, en vervolgens een lokaal rapport te schrijven met een oordeel, reden en risicovlaggen.
Deze dekking is bewust beperkt tot QA. Ze verifieert dat het rapportartefact gescheiden blijft van MEMORY.md en dat de agent niet claimt dat de kandidaat is gepromoveerd. Ze voegt geen productiegedrag voor schaduwproeven toe en wijzigt de promotie-engine van de Deep-fase niet.
De schaduwproefrunner van memory-core houdt hetzelfde alleen-rapportagecontract aan voor codepaden die een stabiel artefact nodig hebben. Hij accepteert de kandidaat, proefprompt, basisuitkomst, kandidaatuitkomst, oordeel, reden, risicovlaggen en bewijsreferenties, en schrijft vervolgens een rapport met promotion action: report-only. Nuttige oordelen mappen naar een aanbeveling promote, neutrale oordelen naar defer, en schadelijke oordelen naar reject; geen van die aanbevelingen schrijft naar MEMORY.md of past Deep-fasepromotie toe.
Planning
Wanneer ingeschakeld beheert memory-core automatisch één cronjob voor een volledige dreaming-sweep. Elke sweep voert fasen op volgorde uit: Light → REM → Deep.
De sweep omvat de primaire runtimewerkruimte en alle geconfigureerde agentwerkruimten, gededupliceerd op pad, zodat fan-out naar subagentwerkruimten de DREAMS.md en geheugenstatus van de hoofdagent niet uitsluit.
Standaard cadansgedrag:
| Instelling | Standaard |
|---|---|
dreaming.frequency |
0 3 * * * |
dreaming.model |
standaardmodel |
Snel starten
Dreaming inschakelen
{ "plugins": { "entries": { "memory-core": { "config": { "dreaming": { "enabled": true } } } } }}Aangepaste sweep-cadans
{ "plugins": { "entries": { "memory-core": { "config": { "dreaming": { "enabled": true, "timezone": "America/Los_Angeles", "frequency": "0 */6 * * *" } } } } }}Slash-opdracht
/dreaming status/dreaming on/dreaming off/dreaming help/dreaming on en /dreaming off wijzigen gateway-brede configuratie. Kanaalaanroepers moeten eigenaren zijn, en Gateway-clients moeten operator.admin hebben. /dreaming status en /dreaming help blijven alleen-lezen.
CLI-workflow
Promotiepreview / toepassen
openclaw memory promoteopenclaw memory promote --applyopenclaw memory promote --limit 5openclaw memory status --deepHandmatige memory promote gebruikt standaard Deep-fasedrempels, tenzij overschreven met CLI-vlaggen.
Promotie uitleggen
Leg uit waarom een specifieke kandidaat wel of niet zou promoveren:
openclaw memory promote-explain "router vlan"openclaw memory promote-explain "router vlan" --jsonREM-harnesspreview
Bekijk een preview van REM-reflecties, kandidaatwaarheden en Deep-promotie-uitvoer zonder iets te schrijven:
openclaw memory rem-harnessopenclaw memory rem-harness --jsonBelangrijkste standaardwaarden
Alle instellingen staan onder plugins.entries.memory-core.config.dreaming.
enabledbooleandefault: falseSchakel de dreaming-sweep in of uit.
frequencystringdefault: 0 3 * * *Cron-cadans voor de volledige dreaming-sweep.
modelstringOptionele modeloverride voor de Dream Diary-subagent. Gebruik een canonieke provider/model-waarde wanneer je ook een subagent-allowlist allowedModels instelt.
phases.deep.maxPromotedSnippetTokensnumberdefault: 160Maximaal geschat aantal tokens dat wordt behouden uit elke kortetermijn-recallsnippet die naar MEMORY.md wordt gepromoveerd. Rangschikkingsherkomst blijft zichtbaar.
Dreams-UI
Wanneer ingeschakeld toont het tabblad Dreams van de Gateway:
- huidige ingeschakelde dreaming-status
- status op faseniveau en aanwezigheid van beheerde sweep
- aantallen voor kortetermijn-, onderbouwde, signaal- en vandaag-gepromoveerde items
- timing van de volgende geplande uitvoering
- een aparte onderbouwde Scene-lane voor gefaseerde historische replay-items
- een uitklapbare Dream Diary-lezer ondersteund door
doctor.memory.dreamDiary
Dreaming wordt nooit uitgevoerd: status toont geblokkeerd
Als openclaw memory status Dreaming status: blocked rapporteert, bestaat de beheerde cron, maar vuurt de Heartbeat van de standaardagent niet. Controleer of Heartbeat is ingeschakeld voor de standaardagent en dat het doel niet none is, en voer daarna na het volgende Heartbeat-interval opnieuw openclaw memory status --deep uit.