diff --git a/.openclaw-sync/source.json b/.openclaw-sync/source.json index 12100d4fa..0984f2a93 100644 --- a/.openclaw-sync/source.json +++ b/.openclaw-sync/source.json @@ -1,5 +1,5 @@ { "repository": "openclaw/openclaw", - "sha": "9408f682f6ec7321cdc72c037ab3f880631d7293", - "syncedAt": "2026-04-05T14:48:05.312Z" + "sha": "6e3155ca841ae248c97c3f20c50b2fa3246c25e8", + "syncedAt": "2026-04-05T14:59:44.196Z" } diff --git a/docs/.generated/config-baseline.sha256 b/docs/.generated/config-baseline.sha256 index 102f28f6b..d1b83809f 100644 --- a/docs/.generated/config-baseline.sha256 +++ b/docs/.generated/config-baseline.sha256 @@ -1,4 +1,4 @@ -ea126fa950fe65c4f7be68c92ff06f3a2256dfe1e770c8643c93b132528bb217 config-baseline.json +87def4cf58f22dcadb02e7963cda1722e77519e2532a501a2e40145967477401 config-baseline.json 587eb0dde83443aa49d743010d224cdc2d7bb6c9d21c3c4effae44f5a06913c5 config-baseline.core.json 3c999707b167138de34f6255e3488b99e404c5132d3fc5879a1fa12d815c31f5 config-baseline.channel.json -31a7d5fd79cb3591a6469c13e5ab42010f8c54e9c1f74da0aad4a1629969085d config-baseline.plugin.json +c2650b75c4bd7cbaf5f3735193671b4c48cbdc61c2bdc465be913c6eb1c09b24 config-baseline.plugin.json diff --git a/docs/cli/memory.md b/docs/cli/memory.md index 3dc6c8d01..ce820db15 100644 --- a/docs/cli/memory.md +++ b/docs/cli/memory.md @@ -103,12 +103,13 @@ Dreaming is the overnight reflection pass for memory. It is called "dreaming" be - Promotion into `MEMORY.md` only happens when quality thresholds are met, so long-term memory stays high signal instead of collecting one-off details. - Automatic runs fan out across configured memory workspaces, so one agent's sessions consolidate into that agent's memory workspace instead of only the default session. - 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 dreaming defaults unless you pass CLI threshold overrides. Default mode presets: -- `core`: daily at `0 3 * * *`, `minScore=0.75`, `minRecallCount=3`, `minUniqueQueries=2` -- `deep`: every 12 hours (`0 */12 * * *`), `minScore=0.8`, `minRecallCount=3`, `minUniqueQueries=3` -- `rem`: every 6 hours (`0 */6 * * *`), `minScore=0.85`, `minRecallCount=4`, `minUniqueQueries=3` +- `core`: daily at `0 3 * * *`, `minScore=0.75`, `minRecallCount=3`, `minUniqueQueries=2`, `recencyHalfLifeDays=14` +- `deep`: every 12 hours (`0 */12 * * *`), `minScore=0.8`, `minRecallCount=3`, `minUniqueQueries=3`, `recencyHalfLifeDays=14` +- `rem`: every 6 hours (`0 */6 * * *`), `minScore=0.85`, `minRecallCount=4`, `minUniqueQueries=3`, `recencyHalfLifeDays=14` Example: @@ -134,5 +135,5 @@ Notes: - `memory status` includes any extra paths configured via `memorySearch.extraPaths`. - If effectively active memory remote API key fields are configured as SecretRefs, the command resolves those values from the active gateway snapshot. If gateway is unavailable, the command fails fast. - Gateway version skew note: this command path requires a gateway that supports `secrets.resolve`; older gateways return an unknown-method error. -- Dreaming cadence defaults to each mode's preset schedule. Override cadence with `plugins.entries.memory-core.config.dreaming.cron` as a cron expression (for example `0 3 * * *`) and fine-tune with `timezone`, `limit`, `minScore`, `minRecallCount`, and `minUniqueQueries`. +- Dreaming cadence defaults to each mode's preset schedule. Override cadence with `plugins.entries.memory-core.config.dreaming.cron` as a cron expression (for example `0 3 * * *`) and fine-tune with `timezone`, `limit`, `minScore`, `minRecallCount`, `minUniqueQueries`, `recencyHalfLifeDays`, and `maxAgeDays`. - Set `plugins.entries.memory-core.config.dreaming.verboseLogging` to `true` to emit per-run candidate and apply details into the normal gateway logs while tuning the feature. diff --git a/docs/concepts/memory-dreaming.md b/docs/concepts/dreaming.md similarity index 85% rename from docs/concepts/memory-dreaming.md rename to docs/concepts/dreaming.md index 8d70d639f..ac232833d 100644 --- a/docs/concepts/memory-dreaming.md +++ b/docs/concepts/dreaming.md @@ -41,14 +41,14 @@ Promotion requires all configured threshold gates to pass, not just one signal. ### Signal weights -| Signal | Weight | Description | -| ------------------- | ------ | ------------------------------------------------ | -| Frequency | 0.24 | How often the same entry was recalled | -| Relevance | 0.30 | Average recall scores when retrieved | -| Query diversity | 0.15 | Count of distinct query intents that surfaced it | -| Recency | 0.15 | Temporal decay (14-day half-life) | -| Consolidation | 0.10 | Reward recalls repeated across multiple days | -| Conceptual richness | 0.06 | Reward entries with richer derived concept tags | +| Signal | Weight | Description | +| ------------------- | ------ | -------------------------------------------------- | +| Frequency | 0.24 | How often the same entry was recalled | +| Relevance | 0.30 | Average recall scores when retrieved | +| Query diversity | 0.15 | Count of distinct query intents that surfaced it | +| Recency | 0.15 | Temporal decay (`recencyHalfLifeDays`, default 14) | +| Consolidation | 0.10 | Reward recalls repeated across multiple days | +| Conceptual richness | 0.06 | Reward entries with richer derived concept tags | ## How it works @@ -71,12 +71,12 @@ Promotion requires all configured threshold gates to pass, not just one signal. `dreaming.mode` controls cadence and default thresholds: -| Mode | Cadence | minScore | minRecallCount | minUniqueQueries | -| ------ | -------------- | -------- | -------------- | ---------------- | -| `off` | Disabled | -- | -- | -- | -| `core` | Daily 3 AM | 0.75 | 3 | 2 | -| `rem` | Every 6 hours | 0.85 | 4 | 3 | -| `deep` | Every 12 hours | 0.80 | 3 | 3 | +| Mode | Cadence | minScore | minRecallCount | minUniqueQueries | recencyHalfLifeDays | +| ------ | -------------- | -------- | -------------- | ---------------- | ------------------- | +| `off` | Disabled | -- | -- | -- | -- | +| `core` | Daily 3 AM | 0.75 | 3 | 2 | 14 | +| `rem` | Every 6 hours | 0.85 | 4 | 3 | 14 | +| `deep` | Every 12 hours | 0.80 | 3 | 3 | 14 | ## Scheduling model @@ -91,6 +91,8 @@ You can still tune behavior with explicit overrides such as: - `dreaming.minScore` - `dreaming.minRecallCount` - `dreaming.minUniqueQueries` +- `dreaming.recencyHalfLifeDays` +- `dreaming.maxAgeDays` - `dreaming.verboseLogging` ## Configure @@ -102,7 +104,9 @@ You can still tune behavior with explicit overrides such as: "memory-core": { "config": { "dreaming": { - "mode": "core" + "mode": "core", + "recencyHalfLifeDays": 21, + "maxAgeDays": 30 } } } @@ -141,6 +145,9 @@ openclaw memory promote --limit 5 # Include already-promoted entries openclaw memory promote --include-promoted +# Manual runs inherit dreaming thresholds unless you override them +openclaw memory promote --apply + # Check dreaming status openclaw memory status --deep ``` @@ -154,6 +161,10 @@ memory stats (short-term count, long-term count, promoted count) and the next scheduled cycle time. Daily counters honor `dreaming.timezone` when set and otherwise fall back to the configured user timezone. +Manual `openclaw memory promote` runs use the same dreaming thresholds by +default, so scheduled and on-demand promotion stay aligned unless you pass CLI +overrides. + ## Further reading - [Memory](/concepts/memory) diff --git a/docs/concepts/memory.md b/docs/concepts/memory.md index 9969cc300..f77fa5631 100644 --- a/docs/concepts/memory.md +++ b/docs/concepts/memory.md @@ -98,7 +98,7 @@ It is designed to keep long-term memory high signal: diversity gates. For mode behavior (`off`, `core`, `rem`, `deep`), scoring signals, and tuning -knobs, see [Dreaming (experimental)](/concepts/memory-dreaming). +knobs, see [Dreaming (experimental)](/concepts/dreaming). ## CLI @@ -115,7 +115,7 @@ openclaw memory index --force # Rebuild the index - [Honcho Memory](/concepts/memory-honcho) -- AI-native cross-session memory - [Memory Search](/concepts/memory-search) -- search pipeline, providers, and tuning -- [Dreaming (experimental)](/concepts/memory-dreaming) -- background promotion +- [Dreaming (experimental)](/concepts/dreaming) -- background promotion from short-term recall to long-term memory - [Memory configuration reference](/reference/memory-config) -- all config knobs - [Compaction](/concepts/compaction) -- how compaction interacts with memory diff --git a/docs/docs.json b/docs/docs.json index 55ebc3df3..2ee245bd4 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -1088,7 +1088,7 @@ "concepts/memory-qmd", "concepts/memory-honcho", "concepts/memory-search", - "concepts/memory-dreaming" + "concepts/dreaming" ] }, "concepts/compaction" @@ -2447,7 +2447,7 @@ "ja-JP/concepts/memory-qmd", "ja-JP/concepts/memory-honcho", "ja-JP/concepts/memory-search", - "ja-JP/concepts/memory-dreaming" + "ja-JP/concepts/dreaming" ] }, "ja-JP/concepts/compaction" @@ -3191,7 +3191,7 @@ "es/concepts/memory-qmd", "es/concepts/memory-honcho", "es/concepts/memory-search", - "es/concepts/memory-dreaming" + "es/concepts/dreaming" ] }, "es/concepts/compaction" @@ -3935,7 +3935,7 @@ "pt-BR/concepts/memory-qmd", "pt-BR/concepts/memory-honcho", "pt-BR/concepts/memory-search", - "pt-BR/concepts/memory-dreaming" + "pt-BR/concepts/dreaming" ] }, "pt-BR/concepts/compaction" @@ -4679,7 +4679,7 @@ "ko/concepts/memory-qmd", "ko/concepts/memory-honcho", "ko/concepts/memory-search", - "ko/concepts/memory-dreaming" + "ko/concepts/dreaming" ] }, "ko/concepts/compaction" @@ -5423,7 +5423,7 @@ "de/concepts/memory-qmd", "de/concepts/memory-honcho", "de/concepts/memory-search", - "de/concepts/memory-dreaming" + "de/concepts/dreaming" ] }, "de/concepts/compaction" @@ -6167,7 +6167,7 @@ "fr/concepts/memory-qmd", "fr/concepts/memory-honcho", "fr/concepts/memory-search", - "fr/concepts/memory-dreaming" + "fr/concepts/dreaming" ] }, "fr/concepts/compaction" @@ -6911,7 +6911,7 @@ "ar/concepts/memory-qmd", "ar/concepts/memory-honcho", "ar/concepts/memory-search", - "ar/concepts/memory-dreaming" + "ar/concepts/dreaming" ] }, "ar/concepts/compaction" @@ -7655,7 +7655,7 @@ "it/concepts/memory-qmd", "it/concepts/memory-honcho", "it/concepts/memory-search", - "it/concepts/memory-dreaming" + "it/concepts/dreaming" ] }, "it/concepts/compaction" @@ -8399,7 +8399,7 @@ "tr/concepts/memory-qmd", "tr/concepts/memory-honcho", "tr/concepts/memory-search", - "tr/concepts/memory-dreaming" + "tr/concepts/dreaming" ] }, "tr/concepts/compaction" @@ -9143,7 +9143,7 @@ "id/concepts/memory-qmd", "id/concepts/memory-honcho", "id/concepts/memory-search", - "id/concepts/memory-dreaming" + "id/concepts/dreaming" ] }, "id/concepts/compaction" @@ -9887,7 +9887,7 @@ "pl/concepts/memory-qmd", "pl/concepts/memory-honcho", "pl/concepts/memory-search", - "pl/concepts/memory-dreaming" + "pl/concepts/dreaming" ] }, "pl/concepts/compaction" diff --git a/docs/gateway/configuration-reference.md b/docs/gateway/configuration-reference.md index b64655632..af790734d 100644 --- a/docs/gateway/configuration-reference.md +++ b/docs/gateway/configuration-reference.md @@ -2641,7 +2641,7 @@ See [Local Models](/gateway/local-models). TL;DR: run a large local model via LM - `plugins.entries.xai.config.xSearch`: xAI X Search (Grok web search) settings. - `enabled`: enable the X Search provider. - `model`: Grok model to use for search (e.g. `"grok-4-1-fast"`). -- `plugins.entries.memory-core.config.dreaming`: memory dreaming (experimental) settings. See [Dreaming](/concepts/memory-dreaming) for modes and thresholds. +- `plugins.entries.memory-core.config.dreaming`: memory dreaming (experimental) settings. See [Dreaming](/concepts/dreaming) for modes and thresholds. - `mode`: dreaming cadence preset (`"off"`, `"core"`, `"rem"`, `"deep"`). Default: `"off"`. - `cron`: optional cron expression override for the dreaming schedule. - `timezone`: timezone for schedule evaluation (falls back to `agents.defaults.userTimezone`). @@ -2649,6 +2649,8 @@ See [Local Models](/gateway/local-models). TL;DR: run a large local model via LM - `minScore`: minimum weighted score threshold for promotion. - `minRecallCount`: minimum recall count threshold. - `minUniqueQueries`: minimum distinct query count threshold. + - `recencyHalfLifeDays`: days for the recency score to decay by half. Default: `14`. + - `maxAgeDays`: optional maximum daily-note age in days allowed for promotion. - `verboseLogging`: emit detailed per-run dreaming logs into the normal gateway log stream. - Enabled Claude bundle plugins can also contribute embedded Pi defaults from `settings.json`; OpenClaw applies those as sanitized agent settings, not as raw OpenClaw config patches. - `plugins.slots.memory`: pick the active memory plugin id, or `"none"` to disable memory plugins. diff --git a/docs/reference/memory-config.md b/docs/reference/memory-config.md index 8a7b5a5e5..918bf59bb 100644 --- a/docs/reference/memory-config.md +++ b/docs/reference/memory-config.md @@ -377,27 +377,29 @@ Default is DM-only. `match.keyPrefix` matches the normalized session key; Dreaming is configured under `plugins.entries.memory-core.config.dreaming`, not under `agents.defaults.memorySearch`. For conceptual details and chat -commands, see [Dreaming](/concepts/memory-dreaming). +commands, see [Dreaming](/concepts/dreaming). -| Key | Type | Default | Description | -| ------------------ | --------- | -------------- | ----------------------------------------- | -| `mode` | `string` | `"off"` | Preset: `off`, `core`, `rem`, or `deep` | -| `cron` | `string` | preset default | Cron expression override for the schedule | -| `timezone` | `string` | user timezone | Timezone for schedule evaluation | -| `limit` | `number` | preset default | Max candidates to promote per cycle | -| `minScore` | `number` | preset default | Minimum weighted score for promotion | -| `minRecallCount` | `number` | preset default | Minimum recall count threshold | -| `minUniqueQueries` | `number` | preset default | Minimum distinct query count threshold | -| `verboseLogging` | `boolean` | `false` | Emit detailed per-run dreaming logs | +| Key | Type | Default | Description | +| --------------------- | --------- | -------------- | ----------------------------------------- | +| `mode` | `string` | `"off"` | Preset: `off`, `core`, `rem`, or `deep` | +| `cron` | `string` | preset default | Cron expression override for the schedule | +| `timezone` | `string` | user timezone | Timezone for schedule evaluation | +| `limit` | `number` | preset default | Max candidates to promote per cycle | +| `minScore` | `number` | preset default | Minimum weighted score for promotion | +| `minRecallCount` | `number` | preset default | Minimum recall count threshold | +| `minUniqueQueries` | `number` | preset default | Minimum distinct query count threshold | +| `recencyHalfLifeDays` | `number` | `14` | Days for recency score to decay by half | +| `maxAgeDays` | `number` | unset | Optional max daily-note age for promotion | +| `verboseLogging` | `boolean` | `false` | Emit detailed per-run dreaming logs | ### Preset defaults -| Mode | Cadence | minScore | minRecallCount | minUniqueQueries | -| ------ | -------------- | -------- | -------------- | ---------------- | -| `off` | Disabled | -- | -- | -- | -| `core` | Daily 3 AM | 0.75 | 3 | 2 | -| `rem` | Every 6 hours | 0.85 | 4 | 3 | -| `deep` | Every 12 hours | 0.80 | 3 | 3 | +| Mode | Cadence | minScore | minRecallCount | minUniqueQueries | recencyHalfLifeDays | +| ------ | -------------- | -------- | -------------- | ---------------- | ------------------- | +| `off` | Disabled | -- | -- | -- | -- | +| `core` | Daily 3 AM | 0.75 | 3 | 2 | 14 | +| `rem` | Every 6 hours | 0.85 | 4 | 3 | 14 | +| `deep` | Every 12 hours | 0.80 | 3 | 3 | 14 | ### Example diff --git a/docs/tools/slash-commands.md b/docs/tools/slash-commands.md index d430a5eb8..a71b630b9 100644 --- a/docs/tools/slash-commands.md +++ b/docs/tools/slash-commands.md @@ -122,7 +122,7 @@ Text + native (when enabled): - `/model ` (alias: `/models`; or `/` from `agents.defaults.models.*.alias`) - `/queue ` (plus options like `debounce:2s cap:25 drop:summarize`; send `/queue` to see current settings) - `/bash ` (host-only; alias for `! `; requires `commands.bash: true` + `tools.elevated` allowlists) -- `/dreaming [off|core|rem|deep|status|help]` (toggle dreaming mode or show status; see [Dreaming](/concepts/memory-dreaming)) +- `/dreaming [off|core|rem|deep|status|help]` (toggle dreaming mode or show status; see [Dreaming](/concepts/dreaming)) Text-only: