背景 链接到标题
OpenClaw 的默认记忆插件 memory-core 提供 memory_search / memory_get 工具,但仅加载插件是不够的。核心记忆能力依赖 dreaming —— 一个定期执行的三阶段后台记忆固化流程。
dreaming 默认关闭,需在 openclaw.json 中显式启用。启用后由插件内部自调度(cron),无需额外配置 commands.cron。
整体链路 链接到标题
flowchart TD
S[原始 session 对话数据] --> L[Light: 去重/分拣/staging]
L --> R[REM: 跨 session 提炼主题/模式]
R --> D1[DREAMS.md: 人类阅读]
R --> S2[REM reinforcement signals]
S2 --> D2[Deep: 打分排序 + 门槛过滤]
D2 --> M[MEMORY.md: 对话时注入 system prompt]
三阶段详解 链接到标题
Light — 材料整理 链接到标题
这是第一道工序,对原始 session 数据进行处理:
- 输入:原始 session transcript、daily memory 文件
- 操作:去重、去敏、分拣 candidate 行
- 输出:short-term recall store(staged candidates)
- 特点:只做 staging,不做质量筛选
Light 阶段不做打分或筛选,目标是尽可能全地收集候选信息存入 recall store。
REM — 反思提炼 链接到标题
REM 阶段读取 light 整理后的 short-term recall store,进行跨 session 模式识别:
- 输入:short-term recall store 中的 staged candidates
- 操作:跨 session 扫描,识别重复出现的模式、行为规律、主题
- 输出:
DREAMS.md—— 人类可读的日记/反思,供 Dreams UI 审查REM reinforcement signals—— 内部评分加分数据,传给 Deep 阶段
关键约束:DREAMS.md 的内容不会被任何 LLM 上下文引用,纯粹供人类阅读。
Deep — 提升决策 链接到标题
这是最后一个阶段,决定什么能进入长期记忆:
- 输入:recall store candidates + REM reinforcement signals
- 操作:6 维加权打分,通过默认门槛方可 promote
- 默认门槛:
minScore >= 0.8、minRecallCount >= 3、minUniqueQueries >= 3 - 输出:
MEMORY.md—— 长期事实记忆文件
六个加权信号及权重:
| 信号 | 权重 | 含义 |
|---|---|---|
| Relevance | 0.30 | 检索质量 |
| Frequency | 0.24 | 累计短时信号频次 |
| Query diversity | 0.15 | 被不同查询命中的次数 |
| Recency | 0.15 | 时间衰减新鲜度 |
| Consolidation | 0.10 | 跨日重复强度 |
| Conceptual richness | 0.06 | 概念标签密度 |
Deep 阶段不是全量 promote,有严格门槛,且会从 live daily file 中重新读取最新内容,避免 stale 数据被提升。
三文件定位 链接到标题
memory-core 涉及三个记忆文件,各自的角色差异很大:
| 文件 | 阶段来源 | memory_search 索引 | 注入对话上下文 |
|---|---|---|---|
MEMORY.md |
Deep phase promote | ✅ | ✅ 每个 session 开头加载 |
memory/YYYY-MM-DD.md |
Session + agent 主动写入 | ✅ | ❌ 仅近 2 天自动加载 |
DREAMS.md |
REM phase Dream Diary | ❌ | ❌ 纯人类可读 |
DREAMS.md 不参与任何 LLM 处理链路,不注入 system prompt,也不被 memory_search 召回。
REM 的间接影响力 链接到标题
虽然 DREAMS.md 内容不参与后续流程,但 REM 阶段并非没有价值。它产生两类输出:
REM reinforcement signals— 传给 Deep 阶段的排名算法,作为 candidates 的加分信号DREAMS.md— 人类阅读的 Dreams UI 展示
第 1 项会间接影响 Deep 阶段的 promote 排序,第 2 项仅用于人工审查和调试。
配置要点 链接到标题
要让 dreaming + memory-core 实际生效,需要做两件事:
plugins.entries.memory-core.config.dreaming中启用并配置:enabled: truefrequency: "0 3 * * *"(默认凌晨 3 点)timezone: "Asia/Shanghai"- 三个 phase 全部开启
- 每个 agent 的
tools.allow中加入memory_get和memory_search
embedding provider 也需提前配置(如 Ollama + bge-m3)。
总结 链接到标题
- Light 做量:全量提取、去重 staging
- REM 做质:跨 session 模式识别、产生加分信号
- Deep 做决策:6 维打分 + 门槛过滤 → promote 到 MEMORY.md
DREAMS.md纯人类可读,不影响任何 LLM 流程- 真正影响日常对话的是
MEMORY.md - REM 通过 reinforcement signals 间接影响 deep 打分