Dreaming — 后台记忆整合系统,灵感源自人类睡眠的记忆巩固过程
🧪 EXPERIMENTAL · 实验性功能
功能概述
Dreaming(梦境) 是 OpenClaw memory-core 中的后台记忆整合系统,灵感来源于人类睡眠的记忆巩固过程。它帮助 OpenClaw 将强烈的短期信号转化为持久记忆,同时保持整个过程可解释、可审查。
💡 关键特性
• 默认关闭,需手动启用
• 三阶段协作:Light → REM → Deep
• 加权评分机制,仅高质量内容升级
• 同时输出机器状态与人类可读内容
梦境功能于 OpenClaw v2026.04.05 正式上线,标志着记忆系统从简单启发式规则向自动化、多阶段、带强化信号的评分机制的进化。
为什么需要梦境?
OpenClaw 代理每天都在积累记忆:每日笔记、会话记录、搜索召回痕迹。大多数内容当下有用,但不适合长期存储。没有整合步骤,你会面临两种糟糕的结果:
- ❌ 过于激进:每个短暂的细节都进入
MEMORY.md,被噪音撑大,上下文臃肿。 - ❌ 过于保守:什么都不升级,真正重要的模式丢失,长期记忆形同虚设。
Dreaming 通过三阶段后台扫描解决这个问题:对短期信号持续评分,只将超过证据阈值的信号升级。把这个过程想象成策展管道:摄入 → 反思 → 谨慎升级。
三阶段模型
梦境系统将记忆整合过程精妙地划分为三个协作阶段,在代码层面复刻了人类大脑巩固记忆的生理过程。这三个阶段是内部实现细节,而非用户可配置的“模式”,每次扫描按顺序执行:Light → REM → Deep。
💤 Light Sleep (浅睡阶段)
- 目的:排序和暂存近期短期内容
- 行为:
- 读取近期每日记忆文件
- 摄入会话记录到语料库
- 使用 Jaccard 相似度(阈值 0.9)去重
- 暂存候选,记录强化信号
- 写入
## Light Sleep块
- 写入 MEMORY.md:❌ 否
🌀 REM Sleep (快速眼动阶段)
- 目的:反思主题和反复出现的想法
- 行为:
- 在回溯窗口内读取短期召回条目
- 分析概念标签频率提取主题
- 识别“候选真理”
- 写入
## REM Sleep块 - 记录 REM 强化信号
- 写入 MEMORY.md:❌ 否
😴 Deep Sleep (深睡阶段)
- 目的:评分并提升高质量内容为长期记忆
- 行为:
- 对所有候选进行加权评分
- 应用阶段强化加成
- 过滤未通过阈值的候选
- 重新水化存活片段
- 追加到
MEMORY.md
- 写入 MEMORY.md:✅ 是
| 阶段 | 目的 | 持久化写入 |
|---|---|---|
| Light | 排序和暂存近期短期内容 | ❌ 否 |
| REM | 反思主题和反复出现的想法 | ❌ 否 |
| Deep | 评分并提升候选内容 | ✅ 是 (MEMORY.md) |
⚠️ 重要:只有 Deep 阶段写入
MEMORY.md。这种分离确保噪音数据永远不会污染长期记忆。
深度排名评分机制
Deep 阶段使用六个加权基础信号对每个候选进行评分,并加上来自 Light 和 REM 阶段的强化加成(来自 memory/.dreams/phase-signals.json)。
📋 六个核心信号
| 信号 | 权重 | 描述 |
|---|---|---|
| 相关性 (Relevance) | 0.30 | 平均检索质量——衡量该信息被检索时的质量 |
| 频率 (Frequency) | 0.24 | 条目积累的短期信号数量 |
| 查询多样性 (Query diversity) | 0.15 | 不同查询/日上下文中出现该条目的数量 |
| 时效性 (Recency) | 0.15 | 时间衰减的新鲜度分数 |
| 整合度 (Consolidation) | 0.10 | 多日重复出现的强度 |
| 概念丰富度 (Conceptual richness) | 0.06 | 片段/路径中的概念标签密度 |
🚪 阈值门槛
候选必须同时满足以下三个条件才能升级为长期记忆:
minScore:≥ 0.8minRecallCount:≥ 3minUniqueQueries:≥ 3
(阈值可在配置中调整)
输出文件详解
梦境功能同时生成机器状态和人类可读输出,确保过程完全透明、可审查、可追溯。
🤖 机器状态 (Machine State)
memory/.dreams/
├── recall-store/ # 召回存储
├── phase-signals.json # 阶段信号记录
├── ingestion-checkpoints/ # 摄入检查点
├── locks/ # 锁文件,确保数据安全
└── session-corpus/ # 会话语料库(脱敏后)
📖 人类可读输出 (Human‑Readable Output)
DREAMS.md— 主梦境日记文件memory/dreaming/deep/YYYY-MM-DD.md— Deep 阶段详细报告MEMORY.md— 长期记忆文件(仅 Deep 阶段写入)
📔 梦境日记 (Dream Diary)
每当阶段素材积累达标,memory-core 会运行一个尽力而为的后台子代理轮次(使用默认运行时模型),并追加一篇简短的日记条目到 DREAMS.md。这个日记是供人类在 Dreams UI 中阅读的叙事性内容,而非升级来源。
调度机制
启用后,memory-core 自动管理一个 cron 作业,用于执行完整的 dreaming 扫描。每次扫描按顺序运行三个阶段:Light → REM → Deep。
| 设置项 | 默认值 | 描述 |
|---|---|---|
dreaming.frequency | 0 3 * * * | Cron 表达式 — 每天凌晨 3:00 |
dreaming.lookbackDays | 7 | REM 阶段回溯天数 |
你可以自定义 cron 表达式来调整扫描频率。例如,改为每小时运行:"0 * * * *"。
配置与启用
Dreaming 是可选开启的功能,默认关闭。你可以通过配置文件或命令启用。
方式一:配置文件
{
"plugins": {
"entries": {
"memory-core": {
"config": {
"dreaming": {
"enabled": true,
"frequency": "0 3 * * *"
}
}
}
}
}
}
方式二:命令行
openclaw dream enable
# 或
/dreaming on
💡 提示:配置后需要重启 Gateway 或重新加载配置才能生效。
常见问题
Dreaming 与旧的记忆系统有何区别?
旧的记忆系统依赖于手动干预或简单的启发式规则。Dreaming 引入自动化、异步、多阶段、带强化信号的评分机制,让记忆巩固过程智能、可追踪、少出错。
可以手动触发 Dreaming 扫描吗?
可以。使用命令 openclaw dream run 或 /dreaming run 手动触发一次完整的扫描。
会话记录如何被处理?
Dreaming 可以摄入脱敏后的会话记录。当记录可用时,它们会与每日记忆信号和召回痕迹一起被送入 Light 阶段。个人和敏感内容在摄入前会被脱敏处理。
如何查看梦境输出?
人类可读内容在 DREAMS.md 中,机器状态在 memory/.dreams/ 目录下。你也可以通过 Dreams UI 界面查看。
可以调整阈值吗?
可以。在配置中设置 dreaming.thresholds.minScore、minRecallCount、minUniqueQueries。