Dreaming — 后台记忆整合系统,灵感源自人类睡眠的记忆巩固过程

🧪 EXPERIMENTAL · 实验性功能
• 📖 功能概述[1] • 🤔 为什么需要梦境?[2] • 🔄 三阶段模型[3] • 📊 深度排名评分机制[4] • 📁 输出文件详解[5] • ⏰ 调度机制[6] • ⚙️ 配置与启用[7] • ❓ 常见问题[8]
功能概述
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 |
⚠️ 重要:只有 Deep 阶段写入
MEMORY.md。这种分离确保噪音数据永远不会污染长期记忆。
深度排名评分机制
Deep 阶段使用六个加权基础信号对每个候选进行评分,并加上来自 Light 和 REM 阶段的强化加成(来自 memory/.dreams/phase-signals.json)。
📋 六个核心信号
| 相关性 (Relevance) | ||
| 频率 (Frequency) | ||
| 查询多样性 (Query diversity) | ||
| 时效性 (Recency) | ||
| 整合度 (Consolidation) | ||
| 概念丰富度 (Conceptual richness) |
🚪 阈值门槛
候选必须同时满足以下三个条件才能升级为长期记忆:
• minScore:≥ 0.8• minRecallCount:≥ 3• minUniqueQueries:≥ 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 * * * | |
dreaming.lookbackDays | 7 |
你可以自定义 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。
夜雨聆风