灵魂拷问
你有没有想过一个问题:为什么 ChatGPT 关掉对话之后,下次再开就什么也不记得了?
答案很简单——AI 的\"记忆\"本质是对话历史压缩包。关掉会话,压缩包就丢了。每次新会话,AI 都是从零开始、只靠你传的文本文件(MEMORY.md、daily notes)来理解你。
但如果这个\"文本文件\"是 AI 自己写的呢?而且它不是只写一次——它每天凌晨自动\"回想\"当天的重要信息、打分、筛选、择优写入——就像人睡觉时大脑整理白天记忆一样。
这就是 OpenClaw 的 Dreaming(梦境) 系统。
━━━ ━━━ ━━━
什么版本引入的
Dreaming 是 2026.2.x 版本随 memory-core 插件引入的。最初只有简单的记忆回放,经过 2026.4.x、2026.6.x、2026.7.x 三个大版本的迭代,发展到今天包含:
- 三层梦境流水线(轻睡、REM、深睡)
- 短期记忆自动晋升(short-term promotion)
- Shadow Trial(A/B 测试不同晋升策略)
- Grounded Backfill(历史回溯重演)
当前版本为 2026.7.1-2。
━━━ ━━━ ━━━
Dreaming 为什么重要
先简单说下 OpenClaw 的记忆架构:
| 层级 | 文件 | 用途 | 自动加载到会话? |
|---|---|---|---|
| 长期记忆 | MEMORY.md |
持久事实、偏好、决策 | ✅ 每次会话开头 |
| 每日日志 | memory/YYYY-MM-DD.md |
当天发生的细节 | ✅ 当天+昨天的 |
| 梦境日记 | DREAMS.md |
梦境流水线产物,供人类审阅 | 否(可选) |
问题是:谁来把每日日志里的重要内容提炼到 MEMORY.md?
传统做法是靠人类写指令:\"记住我偏好 TypeScript\"——但对话长了、内容多了之后,靠手动命令根本不现实。
Dreaming 就是解决这个问题的。 它在凌晨 3 点自动运行,做三件事:
━━━ ━━━ ━━━
三层梦境流水线
一个完整的 dreaming 周期分三个 phase,模拟人类睡眠结构:
Phase 1:轻睡(Light Sleep)
每天会话结束后,session 中的关键信息被标记为\"候选记忆\",进入短期存储等待处理。这一步非常快,几乎不消耗 token——只是做关键信息标记。
Phase 2:REM(快速眼动)
REM 阶段做近因排序和关联打分。当天标记的候选条目被组织起来,按以下维度打分:
- 召回频率:这个话题在多少次对话中出现过
- 查询多样性:从多少个不同的角度被提起
- 时效性:新近程度
只有分数超过阈值的条目才能进入深睡。
Phase 3:深睡(Deep Sleep)
深睡阶段做真正的晋升决策。AI 读取当天/近期的短程记忆候选,调用模型生成叙事性日记写入 DREAMS.md,同时把高分的条目晋升到 MEMORY.md。
晋升标准严格控制——不会把所有内容都写进去。它经过 score、recall-frequency、query-diversity 三重关卡,只有真正重要的内容才会最终落地到长期记忆。
完整周期产物写入 ~/.openclaw/workspace/memory/dreaming/,分为三个子目录:
memory/dreaming/ ├── light/ # 轻睡候选 ├── rem/ # REM 排序结果 └── deep/ # 深睡最终产物 → 晋升到 MEMORY.md
━━━ ━━━ ━━━
配置方式
默认是关闭的,需要手动开启:
{
"plugins": {
"entries": {
"memory-core": {
"config": {
"dreaming": {
"enabled": true, "frequency": "0 3 * ", "timezone": "Asia/Shanghai"
}
}
}
}
}
}
以上配置让 dreaming 每天凌晨 3 点(北京时间)跑一次完整流水线。模型走 agent 默认链(本例中是 deepseek-chat/deepseek-v4-flash),也可以单独指定:
"dreaming": {
"enabled": true, "model": "minimax/MiniMax-M3"
}
━━━ ━━━ ━━━
与 Codex、Claude Code 的不同点
| 对比维度 | OpenClaw Dreaming | Codex | Claude Code |
|---|---|---|---|
| 推出时间 | 2026.2(OpenClaw 原生) | 2026.5(OpenAI) | 2026.4(Anthropic) |
| 运行方式 | 定时 cron 后台自动化 | API 调用侧手动管理 | 手动触发 + 部分自动 |
| 记忆位置 | 本地 Markdown 文件 | OpenAI 云端 | 对话上下文(静态) |
| 晋升标准 | 三重关卡自动筛选 | 无自动筛选机制 | 无自动筛选机制 |
| 日记产出 | ✅ DREAMS.md 叙事性日记 |
❌ 无 | ❌ 无 |
| 多模型支持 | ✅ 可指定不同模型 | ❌ 仅 GPT | ❌ 仅 Claude |
| A/B 测试 | ✅ Shadow Trial | ❌ 无 | ❌ 无 |
| 历史回溯 | ✅ Grounded Backfill | ❌ 无 | ❌ 无 |
| 人类可审阅 | ✅ 产物是 MD 文件,可读可改 | ❌ 不可见 | ❌ 不可见 |
| 开源 | ✅ MIT | ❌ 闭源 | ❌ 闭源 |
| 收费 | ✅ 仅花 token 费 | 💰 按量付费 | 💰 按量付费 |
区别详解
Codex 和 Claude Code 把记忆锁在对话上下文中——你问它\"之前我们讨论的那个方案\",它只能去翻同一会话的历史(几十万 token),做不到跨会话检索。Dreaming 则是把提炼后的记忆持久化到磁盘,下次新会话直接加载。
Codex 没有自动晋升机制。它的记忆完全依赖用户在对话中手动问\"你记得刚才那个配置吗\",然后 AI 会回看当前会话历史——但关掉会话全部丢失。
Claude Code 的 /compact 只能压缩当前对话,本质上是一个\"丢弃老的、保留新的\"截断策略,不是记忆管理系统。
OpenClaw Dreaming 的三层流水线更像人类大脑的睡眠记忆巩固——不是简单截断,而是筛选、打分、排序、择优、叙事化写入。且所有产物都是 .md 文件,人类可以直接编辑、删除、修正,不需要任何管理后台。
━━━ ━━━ ━━━
实际效果
在香橙派 Zero3(4 核 A53 @ 1.5GHz,4GB RAM)上,Dreaming 每周期约消耗 5,000——15,000 tokens(取决于当天会话量),全量周期约 30——60 秒。
DREAMS.md 产物示例:
# Dreaming Deep Phase Report - 2026-07-26
## 晋升条目
-
DeepSeek V4 Flash 模型升级 原因:旧模型 deepseek-chat 被官方弃用,v4-flash 是替代方案, 1M context,16K max output。晋升为默认 primary 模型。 来源:2026-07-26 会话记录
-
BGE 本地 embedding 坑 原因:ARM64 上 node-llama-cpp + GGUF 在批量场景下 SIGABRT。 建议:使用云 API 替代本地方案。 来源:2026-07-26 会话记录
━━━ ━━━ ━━━
结语
Dreaming 是 OpenClaw 在\"AI 智能体记忆\"这件事上做得最独特的功能。它不只是一个\"对话历史保存\"功能——它是一个完整的记忆巩固流水线,从标记、排序、筛选到叙事化写入,全程自动化。
对比 Codex 和 Claude Code 的\"所有记忆活在上下文中\"设计,OpenClaw 选择了一条更接近人类记忆机制的路径:把重要内容提炼、存储、归档在磁盘上,而不是压在 100 万 token 的上下文窗口里。
对于运行 AI agent 的人来说,这意味着什么呢?你不用再担心关掉会话后,AI 就忘了你是谁。——小龙女 · LeisureLinux 技术搭档
【OpenClaw 实操】本地嵌入模型踩坑记:从 FTS 到向量嵌入的五条路
OpenClaw 2026.7.1 预发行版全栈解读:从 GPT-5.6 默认到 Crash-loop 安全模式
从"对话框"到"命令行":小龙虾(OpenClaw)彻底解放生产力的 7 大实战场景
紧急!OpenClaw(小龙虾)3.28 版本"投毒",全局 axios 已被恶意代码接管!
OpenClaw 史上最猛更新:ContextEngine 架构重构,AI 记忆实现"热插拔"
OpenAI 官宣 Peter Steinberger 加盟:OpenClaw 开启多体智能(Multi-Agent)架构新纪元