memory-core 中的后台记忆巩固系统。它帮助 OpenClaw 将强烈的短期信号转化为持久记忆,同时保持过程可解释、可审查。
做梦默认是可选开启的,并且默认禁用。
做梦会写入什么
做梦保留两类输出:memory/.dreams/中的机器状态(回忆存储、阶段信号、摄取检查点、锁)。DREAMS.md(或现有的dreams.md)中的人类可读输出,以及位于memory/dreaming/<phase>/YYYY-MM-DD.md下的可选阶段报告文件。
MEMORY.md。
阶段模型
做梦使用三个协作阶段:| 阶段 | 目的 | 持久写入 |
|---|---|---|
| Light | 对最近的短期材料进行排序和暂存 | 否 |
| Deep | 评分并提升可长期保留的候选项 | 是(MEMORY.md) |
| REM | 反思主题和重复出现的想法 | 否 |
Light phase
Light phase
轻度阶段会摄取最近的日常记忆信号和回忆轨迹,对它们去重,并暂存候选行。
- 在可用时,从短期回忆状态、最近的日常记忆文件以及已脱敏的会话转录中读取。
- 当存储包含内联输出时,会写入一个受管理的
## Light Sleep区块。 - 为后续深度排序记录强化信号。
- 从不写入
MEMORY.md。
Deep phase
Deep phase
深度阶段决定哪些内容会成为长期记忆。
- 使用加权评分和阈值门槛对候选项进行排序。
- 需要通过
minScore、minRecallCount和minUniqueQueries。 - 在写入前,会从实时日常文件中重新加载片段,因此过期/已删除的片段会被跳过。
- 将提升后的条目追加到
MEMORY.md。 - 将
## Deep Sleep摘要写入DREAMS.md,并可选地写入memory/dreaming/deep/YYYY-MM-DD.md。
REM phase
REM phase
REM 阶段会提取模式和反思信号。
- 基于最近的短期轨迹生成主题和反思摘要。
- 当存储包含内联输出时,会写入一个受管理的
## REM Sleep区块。 - 记录供深度排序使用的 REM 强化信号。
- 从不写入
MEMORY.md。
会话转录摄取
做梦可以将已脱敏的会话转录摄取到做梦语料中。当转录可用时,它们会与日常记忆信号和回忆轨迹一起输入轻度阶段。摄取前会先脱敏个人和敏感内容。梦境日记
做梦还会在DREAMS.md 中保留一份叙事性的 Dream Diary。每个阶段积累到足够材料后,memory-core 会运行一次尽力而为的后台子代理回合,并追加一条简短的日记条目。默认会使用运行时模型,除非配置了 dreaming.model。如果配置的模型不可用,Dream Diary 会使用会话默认模型重试一次。
这份日记供 Dreams UI 中的人类阅读,不是提升来源。做梦生成的日记/报告工件会被排除在短期提升之外。只有有依据的记忆片段才有资格提升到
MEMORY.md。Backfill commands
Backfill commands
memory rem-harness --path ... --grounded会预览来自历史YYYY-MM-DD.md笔记的有依据日记输出。memory rem-backfill --path ...会将可逆的有依据日记条目写入DREAMS.md。memory rem-backfill --path ... --stage-short-term会将有依据的、可持久化的候选项暂存到正常深度阶段已经使用的同一短期证据存储中。memory rem-backfill --rollback和--rollback-short-term会移除这些已暂存的回填工件,而不会影响普通日记条目或实时短期回忆。
深度排序信号
深度排序使用六个加权基础信号以及阶段强化:| 信号 | 权重 | 描述 |
|---|---|---|
| Frequency | 0.24 | 该条目累积了多少短期信号 |
| Relevance | 0.30 | 该条目的平均检索质量 |
| Query diversity | 0.15 | 使其浮现的不同查询/日期上下文数量 |
| Recency | 0.15 | 随时间衰减的新鲜度得分 |
| Consolidation | 0.10 | 多日重复出现的强度 |
| Conceptual richness | 0.06 | 来自片段/路径的概念标签密度 |
memory/.dreams/phase-signals.json 中增加一个小幅、随时间衰减的提升。
Shadow-trial results can be layered on top of that base score as a review
signal before any durable write. A helpful trial gives the candidate a small
bounded boost, a neutral trial keeps it deferred, and a harmful trial marks it
as rejected for that scoring pass. This signal is still report-only: it can
change candidate ordering or review metadata, but it does not write to
MEMORY.md or promote the candidate by itself.
QA shadow trial report coverage
QA 实验室包含一个仅报告的场景,用于探索未来的做梦 shadow trial 如何在提升前审查候选记忆。该场景会要求一个代理比较基线答案与一个可以使用候选记忆的答案,然后写出一份本地报告,包含结论、原因和风险标记。 这部分覆盖范围有意限定在 QA 中。它验证报告工件会与MEMORY.md 分离,并且代理不会声称候选项已被提升。它不会添加生产环境的 shadow-trial 行为,也不会更改深度阶段的提升引擎。
The memory-core shadow-trial runner keeps that same report-only contract for
code paths that need a stable artifact. It accepts the candidate, trial prompt,
baseline outcome, candidate outcome, verdict, reason, risk flags, and evidence
references, then writes a report with promotion action: report-only. Helpful
verdicts map to a promote recommendation, neutral verdicts map to defer, and
harmful verdicts map to reject; none of those recommendations writes to
MEMORY.md or applies deep-phase promotion.
Scheduling
启用后,memory-core 会自动管理一个用于完整做梦扫描的 cron 任务。每次扫描按顺序运行各阶段:light → REM → deep。
扫描会包含主运行时工作区以及任何已配置的代理工作区,并按路径去重,因此子代理工作区的扩散不会排除主代理的 DREAMS.md 和记忆状态。
默认频率行为:
| 设置 | 默认值 |
|---|---|
dreaming.frequency | 0 3 * * * |
dreaming.model | 默认模型 |
快速开始
- 启用做梦
- 自定义扫描频率
Slash 命令
CLI 工作流
- 提升预览 / 应用
- 解释提升
- REM harness 预览
memory promote 会使用深度阶段阈值,除非通过 CLI 标志进行覆盖。关键默认值
所有设置都位于plugins.entries.memory-core.config.dreaming 下。
启用或禁用做梦扫描。
完整做梦扫描的 cron 频率。
可选的 Dream Diary 子代理模型覆盖。若同时设置了子代理
allowedModels 允许列表,请使用规范的 provider/model 值。Maximum estimated token count kept from each short-term recall snippet promoted into
MEMORY.md. Ranking provenance remains visible.Most phase policy, thresholds, and storage behavior are internal implementation details. See Memory configuration reference for the full key list.
Dreams UI
启用后,Gateway 的 Dreams 标签页会显示:- 当前做梦是否启用
- 阶段级状态和受管理扫描是否存在
- 短期、有依据、信号以及今日已提升数量
- 下次计划运行时间
- 一个独立的有依据 Scene 通道,用于暂存历史重放条目
- 一个由
doctor.memory.dreamDiary支持的可展开 Dream Diary 阅读器
做梦从不运行:状态显示被阻止
如果openclaw memory status 报告 Dreaming status: blocked,说明受管理的 cron 已存在,但默认代理的心跳未触发。请检查默认代理是否已启用心跳,以及其目标是否不是 none,然后在下一个心跳间隔后再次运行 openclaw memory status --deep。