OpenClaw 05:知识管理 —— 让 Agent 长记性

OpenClaw Memory 系统的实操经验。覆盖 MEMORY.md 长期记忆、memory/ 日志工作层、memory_search 语义搜索、以及 Dreaming 自动整理机制。

接上篇文件管理,这篇说说 OpenClaw 的知识管理。Agent 不只是读文件,还需要记住之前做过什么决定、用户有什么偏好、哪些事情反复出现过。这些靠每次对话传入不现实——上下文窗口有限,而且每次重新说一遍很烦。

OpenClaw 的解法是:让 Agent 自己把重要信息写进文件,下次需要的时候自己查。

记忆分层:三层各司其职

OpenClaw 的记忆不是一股脑塞进去的。它分成三层,每层有明确的用途:

层级文件位置用途
长期记忆MEMORY.md持久事实、用户偏好、做过的决定
工作记忆memory/YYYY-MM-DD.md当天发生的事、对话摘要、待整理的笔记
向量检索memory/*.md 索引语义搜索,跨时间找相关记忆

MEMORY.md 是老大。每次开新会话,OpenClaw 会把这个文件加载进来——所以放在里面的东西,Agent 下次见面还记得。日常的笔记散落在 memory/ 目录下,按日期组织,Agent 根据需要去查,不会每次都塞进上下文。

memory_search:语义检索

光写不够,还得能找。OpenClaw 提供了 memory_search 工具,Agent 可以用自然语言去搜记忆文件。

比如运维场景里,用户说过”某台机器的 SSH 端口改成了 2222”,这句话会被记进某天的 memory 文件里。下次问”之前那台机器 SSH 端口是多少”,memory_search 能找到相关记忆,即使当时没有用”端口”这个词。

背后的技术是混合搜索:向量相似度(处理语义)加上 BM25 关键词匹配(处理 ID、变量名这类精确词)。两种信号合并排序,兼顾理解和精确。

配置embedding provider之后,这个功能开箱即用。支持 OpenAI、Gemini、Voyage、Mistral、Ollama,还有本地 GGUF 模型。

自动保存:上下文压缩前的守卫

上下文快满的时候,OpenClaw 会触发压缩,把对话历史精简。这本来是好事,但 Agent 在对话里记住的重要信息可能还没落盘,压缩后就丢了。

解决这个问题的是”记忆刷新”机制:压缩前,OpenClaw 会触发一个静默的 Agent 轮次,让 Agent 把当前记住的重要信息写入文件。只有写完了,压缩才进行。所以即使聊了几十轮,重要的决定和事实也被保存下来了,不需要我手动去整理。

Dreaming:睡着的时候整理记忆

这是可选功能,但挺有意思。Dreaming 是一个后台整理程序,会在每天的固定时间运行,把 short-term 的记忆信号评分,符合条件的晋升到长期记忆(MEMORY.md)。

晋升要看三个指标:记忆强度、召回频率、查询多样性。比如某条关于生产配置的记忆,如果过去一周被不同角度的问题查过 3 次以上,且每次都被验证是正确的——这种记忆就会被晋升。只有全都达标的记忆才会被写进 MEMORY.md,其他的会被丢弃或者降级。

整理结果会写到 DREAMS.md,供人工review。听起来有点复杂,但实际操作中我基本不用管——开起来之后,Agent 会自己维护记忆的整洁度。

我的用法

刚用 OpenClaw 的时候,我什么都往 MEMORY.md 里塞,结果这个文件越来越长,Agent 每次加载都要耗 token。后来学会分层了:

  • MEMORY.md:只放真正持久的东西,比如”用户主要用飞书沟通""生产环境走蓝绿发布”
  • memory/YYYY-MM-DD.md:当天的操作记录、遇到的问题、没处理完的想法
  • memory_search:在需要找过去怎么做的时候用,而不是每次都从头问

运维场景有个额外的好处:很多操作是重复的,但间隔很长。上个月怎么处理某台机器的网卡故障,Agent 自己记得比我还清楚——只要把当时的日志和操作记录存好就行。

多个记忆插件

OpenClaw 还支持更高级的记忆插件,比如 memory-wikimemory-rag

  • memory-wiki:在长期记忆的基础上加了结构化知识库功能,支持 claims(声明)、evidence(证据)、矛盾检测。适合需要严格知识管理的场景。
  • memory-rag:基于 Qdrant 的向量数据库,适合大规模记忆检索。配合 Ollama 本地 embedding,不需要外部 API。

我的日常运维用默认的 memory-core 就够了。如果以后需要管理多个项目的完整知识库,可能会考虑 memory-wiki。

下一步

记忆系统搭好了,下一篇说说怎么开发一个真正的运维 Skill——让 Agent 不只是记住事情,还能自动执行任务。