OpenClaw 梦境功能 (Dreaming)

0 阅读6分钟

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.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.frequency0 3 * * *Cron 表达式 — 每天凌晨 3:00
dreaming.lookbackDays7REM 阶段回溯天数

你可以自定义 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。