Skip to content

本页介绍 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 阶段

  • 使用加权评分和阈值过滤决定哪些内容进入长期记忆
  • 晋升条件:minScoreminRecallCountminUniqueQueries 同时满足
  • 晋升前从实时日记文件重新读取片段,跳过已被编辑/删除的内容
  • 将晋升条目追加到 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.frequency0 3 * * *(每天凌晨 3 点)
enabledfalse

快速启用

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 --json

Dreams 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 需注意频率设置。