* refactor(memory-core): remove orphaned shadow trials * refactor(qqbot): migrate direct voice upload formats Release note: QQBot configs using voiceDirectUploadFormats now migrate through openclaw doctor --fix to audioFormatPolicy.uploadDirectFormats at root and account scope. Existing nested uploadDirectFormats values win conflicts, and runtime reads only the nested policy. * refactor(feishu): migrate tools base alias Release note: Feishu configs using tools.base now migrate through openclaw doctor --fix to tools.bitable at root and account scope. Existing bitable values win conflicts, and runtime accepts only the canonical key. * refactor(extensions): remove dead runtime state * chore(config): refresh bundled channel metadata * refactor(codex): keep realtime fallback type private * test(ci): align QA compatibility scenario count
9.5 KiB
summary, title, sidebarTitle, read_when
| summary | title | sidebarTitle | read_when | |||
|---|---|---|---|---|---|---|
| Background memory consolidation with light, deep, and REM phases plus a Dream Diary | Dreaming | Dreaming |
|
Dreaming is the background memory consolidation system in memory-core. It moves strong short-term signals into durable memory while keeping the process explainable and reviewable.
What dreaming writes
- Machine state in
memory/.dreams/(recall store, phase signals, ingestion checkpoints, locks). - Human-readable output in
DREAMS.md(or an existingdreams.md) and optional phase report files undermemory/dreaming/<phase>/YYYY-MM-DD.md.
Long-term promotion still writes only to MEMORY.md.
Phase model
Dreaming runs three cooperative phases per sweep, in order: light -> REM -> deep. These are internal implementation phases, not separate user-configured modes.
| Phase | Purpose | Durable write |
|---|---|---|
| Light | Sort and stage recent short-term material | No |
| REM | Reflect on themes and recurring ideas | No |
| Deep | Score and promote durable candidates | Yes (MEMORY.md) |
Session transcript ingestion
Dreaming can ingest redacted session transcripts into the dreaming corpus. When available, transcripts feed the light phase alongside daily memory signals and recall traces. Personal and sensitive content is redacted before ingestion.
Dream Diary
Dreaming keeps a narrative Dream Diary in DREAMS.md. After each phase has enough material, memory-core runs a best-effort background subagent turn and appends a short diary entry, using the default runtime model unless dreaming.model is configured. If the configured model is unavailable, the diary run retries once with the session default model; trust or allowlist failures are not retried and stay visible in logs instead of silently falling back to a generic diary entry.
There is also a grounded historical backfill lane for review and recovery work:
- `memory rem-harness --path ... --grounded` previews grounded diary output from historical `YYYY-MM-DD.md` notes. - `memory rem-backfill --path ...` writes reversible grounded diary entries into `DREAMS.md`. - `memory rem-backfill --path ... --stage-short-term` stages grounded durable candidates into the same short-term evidence store the normal deep phase uses. - `memory rem-backfill --rollback` and `--rollback-short-term` remove those staged backfill artifacts without touching ordinary diary entries or live short-term recall.The Control UI exposes the same diary backfill/reset flow on the agent's Memory tab (Agents page) so you can inspect results in the dream scene before deciding whether grounded candidates deserve promotion. A distinct grounded Scene lane shows which staged short-term entries came from historical replay, which promoted items were grounded-led, and lets you clear only grounded-only staged entries without touching live short-term state.
Deep ranking signals
Deep ranking uses six weighted base signals plus phase reinforcement:
| Signal | Weight | Description |
|---|---|---|
| Relevance | 0.30 | Average retrieval quality for the entry |
| Frequency | 0.24 | How many short-term signals the entry accumulated |
| 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 |
Light and REM phase hits add a small recency-decayed boost from memory/.dreams/phase-signals.json.
Scheduling
When enabled, memory-core auto-manages one cron job for a full dreaming sweep, deduped across the primary runtime workspace and any configured agent workspaces so subagent workspace fan-out does not exclude the main agent's DREAMS.md and memory state.
| Setting | Default |
|---|---|
dreaming.frequency |
0 3 * * * |
dreaming.model |
default model |
Quick start
```json { "plugins": { "entries": { "memory-core": { "config": { "dreaming": { "enabled": true } } } } } } ``` ```json { "plugins": { "entries": { "memory-core": { "config": { "dreaming": { "enabled": true, "timezone": "America/Los_Angeles", "frequency": "0 */6 * * *" } } } } } } ```Slash command
/dreaming status
/dreaming on
/dreaming off
/dreaming help
/dreaming on and /dreaming off require owner status for channel callers or operator.admin for Gateway clients. /dreaming status and /dreaming help are read-only.
CLI workflow
```bash openclaw memory promote openclaw memory promote --apply openclaw memory promote --limit 5 openclaw memory status --deep ```Manual `memory promote` uses deep-phase thresholds by default unless overridden with CLI flags.
Explain why a specific candidate would or would not promote:
```bash
openclaw memory promote-explain "router vlan"
openclaw memory promote-explain "router vlan" --json
```
Preview REM reflections, candidate truths, and deep promotion output without writing anything:
```bash
openclaw memory rem-harness
openclaw memory rem-harness --json
```
Key defaults
All settings live under plugins.entries.memory-core.config.dreaming.
Dreams UI
When enabled, the Gateway Dreams tab shows:
- current dreaming enabled state
- phase-level status and managed-sweep presence
- short-term, grounded, signal, and promoted-today counts
- next scheduled run timing
- a distinct grounded Scene lane for staged historical replay entries
- an expandable Dream Diary reader backed by
doctor.memory.dreamDiary