Appearance
本页介绍 OpenClaw 实验性的 Dreaming(后台记忆巩固)功能。Dreaming 包含三个协作阶段:Light(整理短期素材)、Deep(晋升持久记忆到 MEMORY.md)、REM(提炼主题与反思信号)。默认关闭,通过 memory-core 插件配置启用,每天凌晨 3 点自动运行一次 sweep。
Dreaming(实验性)
Dreaming 是 memory-core 中的后台记忆巩固系统。它帮助 OpenClaw 将短期信号中强度高的内容沉淀到持久记忆,整个过程可追溯、可审查。
Dreaming 默认关闭,需要显式启用。
写入位置
Dreaming 产生两类输出:
- 机器状态:
memory/.dreams/(recall store、阶段信号、导入 checkpoint、锁文件) - 人类可读输出:
DREAMS.md(或已有的dreams.md),以及可选的memory/dreaming/<phase>/YYYY-MM-DD.md
长期晋升始终只写入 MEMORY.md。
三阶段模型
| 阶段 | 作用 | 写入持久存储 |
|---|---|---|
| Light(轻眠) | 整理最近短期素材并暂存候选 | 否 |
| Deep(深眠) | 评分并晋升高质量候选 | 是(写入 MEMORY.md) |
| REM | 提炼主题与反思信号 | 否 |
这三个阶段是内部实现细节,不是用户可单独配置的"模式"。
Light 阶段
- 从短期 recall 状态和近期日记文件摄取信号,去重后暂存候选
- 当存储包含内联输出时,在
DREAMS.md写入## Light Sleep块 - 为 Deep 阶段记录强化信号
- 不写入
MEMORY.md
Deep 阶段
- 使用加权评分和阈值过滤决定哪些内容进入长期记忆
- 晋升条件:
minScore、minRecallCount、minUniqueQueries同时满足 - 晋升前从实时日记文件重新读取片段,跳过已被编辑/删除的内容
- 将晋升条目追加到
MEMORY.md - 在
DREAMS.md写入## Deep Sleep摘要,可选写memory/dreaming/deep/YYYY-MM-DD.md
REM 阶段
- 从近期短期 trace 提取模式和反思摘要
- 当存储包含内联输出时,写入
## REM Sleep块 - 为 Deep 排名记录 REM 强化信号
- 不写入
MEMORY.md
Dream Diary
Dreaming 在 DREAMS.md 中维护一份叙事Dream Diary。每次阶段运行产生足够素材后,memory-core 会在后台启动一个子代理轮次(使用默认运行时模型),追加一段简短日记。
这份日记供 Dreams UI 阅读,不作为晋升来源。
Deep 排名信号
| 信号 | 权重 | 描述 |
|---|---|---|
| 频率(Frequency) | 0.24 | 条目累积的短期信号数 |
| 相关性(Relevance) | 0.30 | 检索质量的平均分 |
| 查询多样性(Query diversity) | 0.15 | 触发该条目的不同查询数/天 |
| 时效性(Recency) | 0.15 | 时间衰减的新鲜度分 |
| 巩固度(Consolidation) | 0.10 | 跨天重现强度 |
| 概念丰富度(Conceptual richness) | 0.06 | 片段/路径的概念标签密度 |
Light 和 REM 阶段命中还会从 memory/.dreams/phase-signals.json 加小幅时间衰减加成。
调度
启用时,memory-core 自动管理一个 cron job,运行完整 sweep(顺序:light → REM → deep)。
| 配置项 | 默认值 |
|---|---|
dreaming.frequency | 0 3 * * *(每天凌晨 3 点) |
enabled | false |
快速启用
json
{
"plugins": {
"entries": {
"memory-core": {
"config": {
"dreaming": {
"enabled": true
}
}
}
}
}
}自定义 sweep 时间(例如每 6 小时,上海时区):
json
{
"plugins": {
"entries": {
"memory-core": {
"config": {
"dreaming": {
"enabled": true,
"timezone": "Asia/Shanghai",
"frequency": "0 */6 * * *"
}
}
}
}
}
}Chat 内开关
/dreaming on # 启用
/dreaming off # 禁用
/dreaming status # 查看当前状态
/dreaming help # 帮助CLI 工作流
bash
openclaw memory promote # 预览待晋升候选
openclaw memory promote --apply # 应用晋升
openclaw memory promote --limit 5
openclaw memory status --deep # 检查向量与 embedding 可用性
# 解释特定候选的评分详情
openclaw memory promote-explain "路由器 vlan"
openclaw memory promote-explain "路由器 vlan" --json
# 预览 REM 反思结果(不写入)
openclaw memory rem-harness
openclaw memory rem-harness --jsonDreams UI
启用后,Gateway 的 Dreams 标签页展示:
- 当前 Dreaming 启用状态
- 各阶段状态及 managed sweep 是否存在
- 短期/长期/今日已晋升条数
- 下次运行时间
- 可展开的 Dream Diary 阅读器(由
doctor.memory.dreamDiary驱动)
相关
常见问题
Q: Dreaming 启用后,MEMORY.md 会被自动改写吗,内容安全吗?
A: Deep 阶段只追加(append),不删除现有内容。晋升前会从实时文件重新读取片段,已删除的内容不会被晋升。可以随时查看 DREAMS.md 了解每次 sweep 写入了什么。
Q: 如何知道 Dreaming 上次什么时候运行、运行了什么?
A: 检查 DREAMS.md 的 Deep Sleep / REM Sleep 块,或 Gateway 控制台的 Dreams 标签页。openclaw memory status --deep 也会显示相关状态。
Q: Dreaming 会消耗 API 额度吗?
A: Deep 阶段在晋升条目时会调用 embedding 接口(少量),Dream Diary 的叙事生成会消耗一次模型调用。默认每天一次,影响微小,但如果使用付费 embedding provider 需注意频率设置。