Dreaming (experimental)
Dreaming is the background memory consolidation system inmemory-core.
It helps OpenClaw move strong short-term signals into durable memory while
keeping the process explainable and reviewable.
Dreaming is opt-in and disabled by default.
What dreaming writes
Dreaming keeps two kinds of output:- Machine state in
memory/.dreams/(recall store, phase signals, ingestion checkpoints, locks). - Human-readable output in
DREAMS.md(or existingdreams.md) and optional phase report files undermemory/dreaming/<phase>/YYYY-MM-DD.md.
MEMORY.md.
Phase model
Dreaming uses three cooperative phases:| Phase | Purpose | Durable write |
|---|---|---|
| Light | Sort and stage recent short-term material | No |
| Deep | Score and promote durable candidates | Yes (MEMORY.md) |
| REM | Reflect on themes and recurring ideas | No |
Light phase
Light phase ingests recent daily memory signals and recall traces, dedupes them, and stages candidate lines.- Reads from short-term recall state and recent daily memory files.
- Writes a managed
## Light Sleepblock when storage includes inline output. - Records reinforcement signals for later deep ranking.
- Never writes to
MEMORY.md.
Deep phase
Deep phase decides what becomes long-term memory.- Ranks candidates using weighted scoring and threshold gates.
- Requires
minScore,minRecallCount, andminUniqueQueriesto pass. - Rehydrates snippets from live daily files before writing, so stale/deleted snippets are skipped.
- Appends promoted entries to
MEMORY.md. - Writes a
## Deep Sleepsummary intoDREAMS.mdand optionally writesmemory/dreaming/deep/YYYY-MM-DD.md.
REM phase
REM phase extracts patterns and reflective signals.- Builds theme and reflection summaries from recent short-term traces.
- Writes a managed
## REM Sleepblock when storage includes inline output. - Records REM reinforcement signals used by deep ranking.
- Never writes to
MEMORY.md.
Dream Diary
Dreaming also keeps a narrative Dream Diary inDREAMS.md.
After each phase has enough material, memory-core runs a best-effort background
subagent turn (using the default runtime model) and appends a short diary entry.
This diary is for human reading in the Dreams UI, not a promotion source.
Deep ranking signals
Deep ranking uses six weighted base signals plus phase reinforcement:| Signal | Weight | Description |
|---|---|---|
| Frequency | 0.24 | How many short-term signals the entry accumulated |
| Relevance | 0.30 | Average retrieval quality for the entry |
| Query diversity | 0.15 | Distinct query/day contexts that surfaced it |
| Recency | 0.15 | Time-decayed freshness score |
| Consolidation | 0.10 | Multi-day recurrence strength |
| Conceptual richness | 0.06 | Concept-tag density from snippet/path |
memory/.dreams/phase-signals.json.
Scheduling
When enabled,memory-core auto-manages one cron job for a full dreaming
sweep. Each sweep runs phases in order: light -> REM -> deep.
Default cadence behavior:
| Setting | Default |
|---|---|
dreaming.frequency | 0 3 * * * |
Quick start
Enable dreaming:Slash command
CLI workflow
Use CLI promotion for preview or manual apply:memory promote uses deep-phase thresholds by default unless overridden
with CLI flags.
Explain why a specific candidate would or would not promote:
Key defaults
All settings live underplugins.entries.memory-core.config.dreaming.
| Key | Default |
|---|---|
enabled | false |
frequency | 0 3 * * * |
Dreams UI
When enabled, the Gateway Dreams tab shows:- current dreaming enabled state
- phase-level status and managed-sweep presence
- short-term, long-term, and promoted-today counts
- next scheduled run timing
- an expandable Dream Diary reader backed by
doctor.memory.dreamDiary