diff --git a/docs/cli/memory.md b/docs/cli/memory.md index e9521b2437e..c3a4de33266 100644 --- a/docs/cli/memory.md +++ b/docs/cli/memory.md @@ -93,13 +93,14 @@ Full options: ## Dreaming (experimental) Dreaming is the background memory consolidation system with three cooperative -phases: **light** (organize into daily note), **deep** (promote into -`MEMORY.md`), and **REM** (reflect and find patterns in the daily note). +phases: **light** (organize into `dreams.md` in inline mode), **deep** +(promote into `MEMORY.md`), and **REM** (reflect and find patterns in +`dreams.md` in inline mode). - Enable with `plugins.entries.memory-core.config.dreaming.enabled: true`. - Toggle from chat with `/dreaming on|off` or `/dreaming enable|disable light|deep|rem`. - Each phase runs on its own cron schedule, managed automatically by `memory-core`. -- Only the deep phase writes to `MEMORY.md`. Light and REM write to the daily note only. +- Only the deep phase writes durable memory to `MEMORY.md`. With default inline storage, Light and REM write to `dreams.md`. - Ranking uses weighted signals: recall frequency, retrieval relevance, query diversity, temporal recency, cross-day consolidation, and derived concept richness. - Promotion re-reads the live daily note before writing to `MEMORY.md`, so edited or deleted short-term snippets do not get promoted from stale recall-store snapshots. - Scheduled and manual `memory promote` runs share the same deep phase defaults unless you pass CLI threshold overrides. diff --git a/docs/concepts/dreaming.md b/docs/concepts/dreaming.md index 14341a9bdcc..6bb51cf3689 100644 --- a/docs/concepts/dreaming.md +++ b/docs/concepts/dreaming.md @@ -22,7 +22,8 @@ a distinct job, writes to a distinct target, and runs on its own schedule. Light dreaming sorts the recent mess. It scans recent memory traces, dedupes them by Jaccard similarity, clusters related entries, and stages candidate -memories into the daily memory note (`memory/YYYY-MM-DD.md`). +memories into the shared dreaming trail file (`dreams.md`) when inline storage +is enabled. Light does **not** write anything into `MEMORY.md`. It only organizes and stages. Think: "what from today might matter later?" @@ -41,18 +42,19 @@ threshold). Think: "what is true enough to keep?" REM dreaming looks for patterns and reflection. It examines recent material, identifies recurring themes through concept tag clustering, and writes -higher-order notes and reflections into the daily note. +higher-order notes and reflections into `dreams.md` when inline storage is +enabled. -REM writes to the daily note (`memory/YYYY-MM-DD.md`), **not** `MEMORY.md`. +REM writes to `dreams.md` in inline mode, **not** `MEMORY.md`. Its output is interpretive, not canonical. Think: "what pattern am I noticing?" ## Hard boundaries -| Phase | Job | Writes to | Does NOT write to | -| ----- | --------- | -------------------------- | ----------------- | -| Light | Organize | Daily note (YYYY-MM-DD.md) | MEMORY.md | -| Deep | Preserve | MEMORY.md | -- | -| REM | Interpret | Daily note (YYYY-MM-DD.md) | MEMORY.md | +| Phase | Job | Writes to | Does NOT write to | +| ----- | --------- | ------------------------- | ----------------- | +| Light | Organize | `dreams.md` (inline mode) | MEMORY.md | +| Deep | Preserve | MEMORY.md | -- | +| REM | Interpret | `dreams.md` (inline mode) | MEMORY.md | ## Quick start @@ -105,12 +107,12 @@ for the full key list. ### Global settings -| Key | Type | Default | Description | -| ---------------- | --------- | ---------- | ------------------------------------------------ | -| `enabled` | `boolean` | `true` | Master switch for all phases | -| `timezone` | `string` | unset | Timezone for schedule evaluation and daily notes | -| `verboseLogging` | `boolean` | `false` | Emit detailed per-run dreaming logs | -| `storage.mode` | `string` | `"inline"` | `inline`, `separate`, or `both` | +| Key | Type | Default | Description | +| ---------------- | --------- | ---------- | ------------------------------------------------------------ | +| `enabled` | `boolean` | `true` | Master switch for all phases | +| `timezone` | `string` | unset | Timezone for schedule evaluation and dreaming date bucketing | +| `verboseLogging` | `boolean` | `false` | Emit detailed per-run dreaming logs | +| `storage.mode` | `string` | `"inline"` | Inline `dreams.md`, separate reports, or both | ### Light phase config @@ -231,7 +233,8 @@ See [memory CLI](/cli/memory) for the full flag reference. 2. Filter entries within `lookbackDays` of the current time. 3. Deduplicate by Jaccard similarity (configurable threshold). 4. Sort by average recall score, take up to `limit` entries. -5. Write staged candidates into the daily note under a `## Light Sleep` block. +5. Write staged candidates into `dreams.md` under a `## Light Sleep` block when + inline storage is enabled. ### Deep phase pipeline @@ -249,7 +252,8 @@ See [memory CLI](/cli/memory) for the full flag reference. 1. Read recent memory traces within `lookbackDays`. 2. Cluster concept tags by co-occurrence. 3. Filter patterns by `minPatternStrength`. -4. Write themes and reflections into the daily note under a `## REM Sleep` block. +4. Write themes and reflections into `dreams.md` under a `## REM Sleep` block + when inline storage is enabled. ## Scheduling diff --git a/docs/reference/memory-config.md b/docs/reference/memory-config.md index 09f6296dc31..f6dcd4de467 100644 --- a/docs/reference/memory-config.md +++ b/docs/reference/memory-config.md @@ -382,17 +382,18 @@ conceptual details and chat commands, see [Dreaming](/concepts/dreaming). ### Global settings -| Key | Type | Default | Description | -| ------------------------- | --------- | ---------- | ------------------------------------------------ | -| `enabled` | `boolean` | `true` | Master switch for all phases | -| `timezone` | `string` | unset | Timezone for schedule evaluation and daily notes | -| `verboseLogging` | `boolean` | `false` | Emit detailed per-run dreaming logs | -| `storage.mode` | `string` | `"inline"` | `inline`, `separate`, or `both` | -| `storage.separateReports` | `boolean` | `false` | Write separate report files per phase | +| Key | Type | Default | Description | +| ------------------------- | --------- | ---------- | ------------------------------------------------------------ | +| `enabled` | `boolean` | `true` | Master switch for all phases | +| `timezone` | `string` | unset | Timezone for schedule evaluation and dreaming date bucketing | +| `verboseLogging` | `boolean` | `false` | Emit detailed per-run dreaming logs | +| `storage.mode` | `string` | `"inline"` | Inline `dreams.md`, separate reports, or both | +| `storage.separateReports` | `boolean` | `false` | Write separate report files per phase | ### Light phase (`phases.light`) -Scans recent traces, dedupes, and stages candidates into the daily note. +Scans recent traces, dedupes, and stages candidates into `dreams.md` when +inline storage is enabled. Does **not** write to `MEMORY.md`. | Key | Type | Default | Description | @@ -434,7 +435,8 @@ writes durable facts. Also owns recovery when memory is thin. ### REM phase (`phases.rem`) -Writes themes, reflections, and pattern notes into the daily note. +Writes themes, reflections, and pattern notes into `dreams.md` when inline +storage is enabled. Does **not** write to `MEMORY.md`. | Key | Type | Default | Description | diff --git a/extensions/memory-core/openclaw.plugin.json b/extensions/memory-core/openclaw.plugin.json index 3bf3146a513..29880bebc0b 100644 --- a/extensions/memory-core/openclaw.plugin.json +++ b/extensions/memory-core/openclaw.plugin.json @@ -15,7 +15,7 @@ "dreaming.storage.mode": { "label": "Dreaming Storage Mode", "placeholder": "inline", - "help": "Write inline to MEMORY.md and daily notes, to separate reports, or both." + "help": "Write inline to dreams.md, to separate reports, or both." }, "dreaming.phases.light.cron": { "label": "Light Sleep Cron",