openclaw记忆系统解析

openclaw记忆系统解析
mengnankkzhou架构设计
openclaw最近也是非常火爆啊,作为一个这么优秀的智能体来说,我们最关注的就这个agent的上下文和记忆系统是怎么去设计的!
记忆
openclaw设计最好的就是他的记忆完全是由markdown去做的,AI更好的适配Markdown。
主要是有长期记忆和会话记忆组成:
- Memory.md:这里是用户的个性记忆,比如喜好,编码记忆等等,其实就是我们coding agent里面的AGENT.MD 一样,这部分记忆是不会被压缩的
- 会话记忆:是根据会话sessionID来的,一个session里面包含多个时间的文件夹记忆,这里面详细写了Openclaw的执行过程。然后这部分记忆是进行压缩的时候进行写入的
举例:
1 | # 核心记忆与设定 |
1 | # 2026-03-25 工作记录 |
那么现在我们的记忆进行了存储,那么如何进行检索呢?我们如何使用这些长期记忆
openclaw提供了一个混合检索记忆的策略:
sqlite-vec (向量检索): 将文本转化为多维向量,负责“模糊匹配”和“概念联想”。哪怕你提问的字眼变了,只要语义相近,它就能懂。
FTS5 (全文检索): SQLite 官方的倒排索引扩展。负责“精确打击”,专门用来死磕那些不能有一个字母差错的代码变量名、报错日志和专有名词。
qmd (Quick Markdown 服务): 专门针对庞大的工作区文件(如 README、长篇 API 文档)进行高速解析和检索的外挂服务。
重排融合: 这三路召回的数据会被系统进行打分、去重和排序,最终提取出最相关的记忆碎片,塞回第一步的“上下文构建”环节中。
其实这些也是我们RAG进行优化的一部分,如果要再更复杂一点的记忆,我们还可以引入Graph RAG,使用知识图谱来标记文档的关系,但是目前来说不适合openclaw
总结一下openclaw的记忆系统,是基于文件系统Markdown做的存储,使用混合检索重拍来获取对应的记忆
上下文构建
上下文block是分为这几个组成部分的:
-
系统级 Prompt & 设定: AI 的核心人格与全局规则
-
SKILL.md 工具指令: 当前工作区允许 AI 调用的能力清单。
-
一些默认的配置MD:比如:
AGENTS.md
:操作指令和持久行为笔记。SOUL.md:定义 Agent 的人设、语气和边界。TOOLS.md:本地工具的使用说明。IDENTITY.md:Agent 的名称和风格。USER.md`:用户画像和偏好 -
长期记忆碎片: 通过底层检索引擎捞出来的历史相关背景
-
短期会话 (Short-term Memory): 最近的几轮对话记录。
-
工具动态观察 (Observation): AI 刚刚执行完代码或命令后的真实返回结果
然后其中毕竟重要的就是Skills+长期记忆碎片
skills是在系统提示词里面选出来的具体的skills的具体的内容
长期记忆是从Markdown里面捞取出来的相关的记忆
然后最好这些上下文不要超过窗口的40%,根据研究,40%的上下文是最好的,模型响应最优的







