OpenClaw 记忆机制详解:三层记忆架构与长期记忆管理

OpenClaw 记忆机制详解:三层记忆架构与长期记忆管理

OpenClaw 通过将记忆写入磁盘的纯文本文件来实现持久化——模型本身没有隐藏状态,所有记忆都显式存储在文件中。本文详细介绍其三层记忆架构及各种高级记忆功能。

第一部分:三层记忆架构

OpenClaw 的记忆系统采用三层模型,从近到远分别是:

第一层:会话上下文(Session Context)

当前对话的缓冲区,包含本轮对话的所有消息。这是每次 API 请求都会发送的活跃数据,由 LCM(Long-term Context Manager)管理。当上下文窗口接近满时,会触发自动压缩(compaction)。

关键机制:自动记忆冲刷

当对话接近上下文上限时,OpenClaw 会触发一个静默的 Agent 自主执行,在压缩前自动将重要上下文写入 memory/YYYY-MM-DD.md

1
2
3
4
5
6
7
8
9
对话接近上下文限制

静默记忆冲刷触发

模型将重要上下文写入 memory/ 日志

模型回复 NO_REPLY(用户无感知)

自动压缩继续执行

第二层:工作记忆(Daily Notes)

位于 memory/YYYY-MM-DD.md 文件中,记录每日运行日志和观察。今天和昨天的日志会自动加载,文件会被索引供 memory_search 检索,但不会注入到每次启动的引导提示中。

适用于:详细的每日笔记、观察、对话摘要和将来可能有用的原始上下文。

第三层:长期记忆(MEMORY.md)

位于 ~/.openclaw/workspace/MEMORY.md,是精心提炼的持久层。记录持久的facts、偏好、决策和摘要,在每次主会话启动时自动加载。

适用于:长期facts、用户偏好、既定决策和简短摘要。不是原始对话记录或每日日志。


三层之间的关系:

层级 文件 生命周期 何时加载
第一层 会话上下文 当前对话 每次 API 请求
第二层 memory/YYYY-MM-DD.md 每日 今天+昨天自动加载
第三层 MEMORY.md 长期 每次 DM 会话启动

第二部分:核心记忆文件 MEMORY.md

什么是 MEMORY.md

MEMORY.md 是 OpenClaw 的核心记忆文件,位于工作空间根目录。每次新的主会话(DM)启动时,这个文件的内容会自动加载到模型上下文中,确保 Agent 能够”记住”之前的重要信息。

写入什么内容

  • 用户的持久偏好(如”使用中文回复”)
  • 已做出的重要决策和结论
  • 长期的facts(如用户的姓名、职业、项目信息)
  • 技能和工具的配置说明
  • 协作规则和流程

不要写入的内容

  • 原始对话记录(这是 daily notes 的职责)
  • 临时性的待办(用飞书任务/企业微信待办)
  • 过时信息(定期清理 MEMORY.md)

如何维护

让 Agent 自动维护即可。当你告诉它”记住 XXX”时,它会自动写入合适的位置。定期(建议每隔几天)可以让 Agent 审查 MEMORY.md,删除过时内容,将详细材料提炼为摘要。

提示:如果 MEMORY.md 超过引导预算,OpenClaw 会将文件保留在磁盘上,但截断注入上下文的部分。这时需要将详细内容移回 memory/*.md,或在 MEMORY.md 中只保留精简摘要。


第三部分:上下文管理

上下文中包含的内容

每次 API 请求发送的上下文包含:

  • 当前对话消息列表
  • 引导提示(Bootstrap prompt)
  • 已加载的 MEMORY.md 内容
  • 已加载的 daily notes 内容
  • 工具定义和调用历史
  • 系统指令

默认引擎的处理方式

OpenClaw 默认使用 LCM(Long-term Context Manager) 进行上下文管理。当对话变长、接近上下文窗口上限时,LCM 会触发自动压缩(Auto-compaction)

  1. 评估哪些消息可以安全压缩或移除
  2. 保留关键信息和结论
  3. 用摘要替代原始对话记录
  4. 释放上下文空间继续对话

无损上下文:lossless-claw 插件

默认的压缩方式会丢失部分对话细节。如果你希望无损保留所有对话历史,可以安装 lossless-claw 插件:

1
2
3
4
openclaw plugins install lossless-claw

# 设置为默认压缩策略
openclaw config set memory.compaction lossless

lossless-claw 的工作原理

  • 将每次交互存储在持久化数据库中
  • 将旧内容增量摘要为层级有向无环图(DAG)
  • 不删除任何信息,只提炼关键结论
  • Agent 可以动态重构详细上下文(按需展开摘要)
  • 保留完整的对话历史,而非删除后不可恢复

注意:lossless-claw 不会写入 MEMORY.md,只管理会话压缩过程。


第四部分:长期记忆与记忆搜索

开启长期记忆和向量搜索

openclaw.json 中配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"agents": {
"defaults": {
"memorySearch": {
"provider": "local",
"sync": {
"watch": true,
"watchDebounceMs": 1500
}
}
}
}
}

其中 provider: "local" 使用本地向量模型进行语义搜索,无需外部 API。

配置本地向量模型

1
2
3
4
5
6
7
8
9
10
{
"agents": {
"defaults": {
"memorySearch": {
"provider": "local",
"model": "bge-m3" // 本地嵌入模型
}
}
}
}

查看当前记忆状态

1
2
3
4
5
6
7
8
9
10
# 查看记忆文件大小和状态
openclaw doctor

# 查看上下文详情
openclaw context list
openclaw context detail

# 查看记忆文件
ls -la ~/.openclaw/workspace/memory/
cat ~/.openclaw/workspace/MEMORY.md

重建记忆数据库

如果向量数据库损坏或需要重建:

1
2
3
4
5
# 重新索引所有记忆文件
openclaw memory rebuild

# 或者删除数据库后让系统自动重建
rm -rf ~/.openclaw/memory-index/

第五部分:Dreaming 做梦机制

什么是 Dreaming

Dreaming 是 OpenClaw v2026.4.5 引入的实验性记忆巩固框架,灵感来源于人类睡眠机制。Agent 在后台(类睡眠状态)自动整理、提炼和强化记忆,帮助自己在”醒来”时拥有更清晰可用的记忆系统。

工作原理

Dreaming 模拟人类睡眠的三个阶段:

阶段 类型 功能
浅睡 摄入(Ingestion) 消化当日记忆文件
REM 模式识别 识别重要模式和关联
深睡 记忆强化 将重要内容提升到长期记忆

Dreaming 的输出

Dreaming 会在工作空间生成 DREAMS.md 文件(如果存储包含内联输出),记录:

  • REM 睡眠摘要
  • 做梦期间的强化信号
  • 用于深度排序的记录

注意:Dreaming 不会写入 MEMORY.md,只写入 DREAMS.md 供人类审查。

开启 Dreaming

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 安装 dreaming 插件
openclaw plugins install @openclaw/dreaming

# 在 openclaw.json 中启用
{
"plugins": {
"dreaming": {
"enabled": true,
"schedule": "0 3 * * *" // 每天凌晨 3 点执行
}
}
}

# 重启 Gateway
openclaw gateway restart

审查 Dreaming 日志

Dreaming 运行后,可以查看生成的 DREAMS.md:

1
cat ~/.openclaw/workspace/DREAMS.md

第六部分:知识库

OpenClaw 支持多种知识库集成,实现超越纯文本记忆的结构化知识管理。

内置知识库:OpenClaw Wiki

memory-wiki 插件将持久记忆编译为 Wiki 知识库,提供:

  • 确定性页面结构:标准化格式的知识页面
  • 结构化 claims 和证据:每个知识点可追溯来源
  • 矛盾和新鲜度追踪:自动检测过时或冲突信息
  • 生成的仪表盘:知识库概览
  • Agent 运行时消费者:为 AI 提供可靠的知识点注入
1
openclaw plugins install memory-wiki

开启后可用以下工具:

  • wiki_search — 知识库搜索
  • wiki_get — 读取知识页面
  • wiki_apply — 写入知识更新
  • wiki_lint — 检查知识库一致性

外部知识库:RAGFlow

RAGFlow 是一个开源的 RAG(检索增强生成)引擎,可以与 OpenClaw 配合使用,实现更强大的文档理解和问答能力。

适合场景:

  • 大规模文档库检索
  • 复杂文档的语义理解
  • 企业知识管理

外部知识库:Get笔记

Get笔记(biji.com)开放平台,支持将笔记内容接入 OpenClaw:

1
2
3
4
5
6
7
{
"plugins": {
"getnote": {
"apiKey": "your-api-key"
}
}
}

配置后可以通过 Skill 调用 Get笔记的搜索和写入功能。

外部知识库:IMA 笔记

IMA 是腾讯的智能笔记应用,可以通过其开放 API 与 OpenClaw 集成,实现笔记内容的检索和引用。


总结

OpenClaw 的记忆系统设计精妙,通过三层架构实现了”无隐藏状态”的纯文本持久化:

  1. 会话上下文:活跃对话缓冲区,由 LCM 管理
  2. 工作记忆:每日笔记,自动记忆冲刷保护
  3. 长期记忆:精心提炼的 MEMORY.md

配合 lossless-claw 实现无损压缩、Dreaming 实现睡眠式记忆整理、以及多种知识库集成,构成了一个完整的长期记忆管理生态系统。

善用这些机制,可以让 AI Agent 真正做到”记得住、记得准、不遗忘”。


本文基于 OpenClaw 2026.5.x 版本编写


第七部分:当 Agent “想不起来”时怎么办

有时候 Agent 会说”我想不起来了”,这时候可以引导它去各个记忆系统中搜索。

引导搜索的步骤

第一步:让它搜索记忆文件

直接告诉它:”去记忆里搜索一下”或”在 memory 里找找看”。

Agent 会使用 memory_search 工具进行语义搜索,即使用词不同也能匹配到相关内容。

第二步:让它用 LCM 插件搜索

告诉它:”用 LCM 插件搜索一下”或”查一下压缩日志里的内容”。

LCM 插件管理着完整的会话历史,可以帮你找到被压缩但仍保留的信息。

第三步:让它搜索知识库

如果知识库已配置,告诉它:”去 Wiki 知识库里搜索一下”或”在 RAGFlow/Get笔记里找找”。

示例对话

用户:你记得上周我们讨论的 OpenClaw 升级方案吗?
Agent:我想不起来了…
用户:去记忆里搜索一下
Agentmemory_search 搜索中…找到了!上周我们讨论了…

主动维护记忆的建议

为了让 Agent 记得更清楚,可以:

  • 定期让 Agent 更新 MEMORY.md:每隔几天让它整理一次记忆
  • 重要决策明确说:告诉它”把这个记到 MEMORY.md 里”
  • 检查 DREAMS.md:如果有 Dreaming 功能,定期看看它的做梦日记
  • 给记忆打标签:在记忆文件中用标签标记重要主题,方便检索

本文基于 OpenClaw 2026.5.x 版本编写


📌 博客地址

OpenClaw记忆机制详解