为何智能体需要 Dreaming 来优化记忆?
摘要: 人类睡觉时大脑在整理记忆,AI Agent 也需要。OpenClaw Dreaming 是一个后台记忆巩固系统,解决的是 Agent 的"失忆症"问题。
问题的根源:AI 的"失忆症"
用过 ChatGPT、Claude 的人都有这个体验:
每次新对话,都要重新介绍自己。
昨天聊的项目,今天从零开始。
上周调好的配置,这周重新解释。
这不是用户的问题,是架构问题。
传统 Agent 的记忆模型
用户输入 → 上下文窗口 → AI 响应 → 会话结束 → 一切归零
这个模型有三个致命缺陷:
- 上下文窗口有限:再大的模型也有 token 上限
- 会话隔离:每次对话都是独立实例
- 无持久化层:离开对话,记忆消失
后果是什么?
- 用户重复劳动(每次都重新介绍背景)
- Agent 无法积累长期知识
- 跨 session 的洞察丢失
- 用户体验割裂
Dreaming 的设计哲学
OpenClaw Dreaming 的核心思路来自神经科学:
人类不是 24 小时持续学习的。我们白天收集信息,晚上睡觉时大脑整理记忆。
人类睡眠周期 vs AI Dreaming
| 阶段 | 人类睡眠 | OpenClaw Dreaming |
|---|---|---|
| 浅睡 | 轻度睡眠,信息回放 | Ingestion - 收集当天对话/日志/决策 |
| REM | 快速眼动,模式识别 | Pattern Recognition - 识别关联和模式 |
| 深睡 | 深度睡眠,记忆巩固 | Memory Promotion - 写入长期记忆 |
这个类比不是营销噱头,是工程上的同构:
- 白天(用户活跃期)→ 快速响应,不阻塞
- 夜晚(用户离线期)→ 后台处理,整理记忆
Dreaming 解决什么问题?
1. 记忆碎片化 → 结构化归档
问题:一天的对话散落在多个 session 里,没有组织。
Dreaming 的做法:
原始对话 A + 原始对话 B + 原始对话 C
↓
识别共同主题
↓
生成结构化笔记 → 写入 memory/主题.md
2. 信号噪声混杂 → 信号提升
问题:不是所有对话都值得长期保存。
Dreaming 的做法:
- 追踪每个记忆片段的召回次数(recallCount)
- 记录查询哈希(queryHashes)------哪些查询触发了它
- 计算总分(totalScore)------综合相关性 + 使用频率
- 高分片段 → 提升到
MEMORY.md - 低分片段 → 保留在短期缓存,定期清理
3. 知识孤岛 → 关联发现
问题:用户今天聊 A 项目,明天聊 B 项目,但两者有隐性关联。
Dreaming 的做法:
- 提取概念标签(conceptTags)
- 跨 session 比对标签重叠
- 发现关联后生成"知识图谱更新"笔记
技术实现:Dreaming 如何工作?
配置方式
在 OpenClaw 配置中启用:
json
{
"plugins": {
"entries": {
"memory-core": {
"enabled": true,
"config": {
"dreaming": {
"enabled": true
}
}
}
}
}
}
运行时机
- 默认:每天凌晨(用户离线时段)
- 触发条件:距离上次运行 > 24 小时
- 执行位置:后台进程,不阻塞用户交互
输出产物
Dreaming 运行后,会在 memory/.dreams/ 目录下生成:
memory/.dreams/
├── events.jsonl # 事件日志(每次记忆召回记录)
└── short-term-recall.json # 短期记忆追踪(高分片段候选)
short-term-recall.json 结构示例
json
{
"version": 1,
"updatedAt": "2026-04-10T00:58:51.660Z",
"entries": {
"memory:memory/2026-03-25.md:1:7": {
"key": "memory:memory/2026-03-25.md:1:7",
"path": "memory/2026-03-25.md",
"recallCount": 2,
"totalScore": 0.789,
"conceptTags": ["jensen", "AGI", "商业叙事"],
"recallDays": ["2026-04-08", "2026-04-10"]
}
}
}
每个字段的含义:
recallCount:被召回次数(越高越重要)totalScore:综合得分(召回次数 × 相关性)conceptTags:提取的概念标签recallDays:在哪些天被召回过
实际效果:Dreaming 前后的对比
没有 Dreaming
| 场景 | 体验 |
|---|---|
| 第 1 天聊项目 A | Agent 记住 |
| 第 3 天聊项目 A | 从零开始,用户重新介绍 |
| 第 7 天聊项目 A | 再次从零开始 |
| 第 30 天回顾 | 无历史记录,除非用户手动整理 |
有 Dreaming
| 场景 | 体验 |
|---|---|
| 第 1 天聊项目 A | Agent 记住 |
| 第 3 天聊项目 A | Agent 自动加载项目 A 背景 |
| 第 7 天聊项目 A | Agent 关联到第 1 天的决策 |
| 第 30 天回顾 | memory/项目 A.md 已自动生成 |
Dreaming 的边界:它不是什么
❌ Dreaming 不是"AI 做梦"
没有诗意,没有隐喻。就是一个定时批处理任务:
- 输入:当天的记忆召回日志
- 处理:评分、排序、提取
- 输出:结构化记忆文件
❌ Dreaming 不是"自动写日记"
它不生成散文,不写感悟。输出是机器可读的结构化数据:
- JSON 文件
- Markdown 笔记
- 事件日志
❌ Dreaming 不是"替代用户思考"
它不决定什么重要,只是放大用户已经频繁访问的内容。决策权仍在用户。
为什么这个设计重要?
1. 解决 Agent 的"短期主义"
没有 Dreaming,Agent 的行为模式是:
响应当前请求 → 会话结束 → 遗忘
有了 Dreaming:
响应当前请求 → 记录信号 → 夜间整理 → 长期积累
2. 降低用户维护成本
手动维护 MEMORY.md 很耗时。Dreaming 自动化了 80% 的整理工作,用户只需:
- 定期审查(每周/每月)
- 手动补充(特殊洞察)
- 删除噪声(误分类)
3. 为多 Agent 协作打基础
当系统中有多个 Agent(main、writer、research、bigcommontask)时:
- 每个 Agent 的 session 是隔离的
- Dreaming 提供共享记忆层
- 跨 Agent 的知识传递成为可能
如何启用 Dreaming?
检查当前状态
bash
ls -la /home/water/.openclaw/workspace/memory/.dreams/
如果目录存在且有 short-term-recall.json,说明已在运行。
查看最近一次运行时间
bash
cat /home/water/.openclaw/workspace/memory/.dreams/short-term-recall.json | \
python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('updatedAt'))"
手动触发(可选)
目前 OpenClaw 没有提供手动触发命令,Dreaming 是自动调度的。如果需要立即运行,可以:
- 修改系统时间(不推荐)
- 等待下次自动执行(推荐)
结语:Dreaming 是 Agent 成熟的标志
早期的 AI Agent 像"金鱼"------记忆只有 7 秒。
Dreaming 的出现,标志着 Agent 系统从会话级智能 迈向生命周期级智能:
- 不再是"每次对话从零开始"
- 而是"每次对话站在之前的肩膀上"
这不是炫技,是工程上的必然演进。
就像人需要睡觉来巩固记忆,Agent 也需要 Dreaming 来优化记忆。
参考:OpenClaw Dreaming Guide 2026 | Turing Post - Can your OpenClaw dream?