OpenClaw 记忆机制揭秘

为什么需要记忆

大语言模型是「无状态」的对话系统:

  • 关掉网页,下次打开,之前聊的全忘了
  • 同一对话内,聊久了前面的内容也会被挤丢(上下文压缩)

OpenClaw 的记忆机制就是为了解决这个问题。

记忆架构

采用纯文本 Markdown + 轻量级 SQLite 的混合方案,不依赖重型向量数据库。

短期记忆

位置:sessions/ 目录,按天生成日志文件(如 2026-04-08.md

特点:

  • 系统启动时只加载最近 1-2 天的日志到提示词
  • 保证短期对话连贯性
  • 不会消耗过多处理资源

长期记忆

位置:MEMORY.md 文件

工作流程:

  1. 当聊天记录快要触发上下文压缩时,系统在后台拦截
  2. 强制大模型提炼最重要的事实和知识
  3. 写入 MEMORY.md 长期记忆文件

示例结构:

# 核心事实与偏好

## 用户画像与技术栈
职业身份:技术博主、资深开发工程师
核心技术:精通 Java 和 SpringBoot 开发
沟通偏好:不喜欢长篇大论,偏好图文并茂、大白话解释

## 关键历史项目
2026-02-15:用户正在规划图解网络系列内容
2026-03-07:用户上线了小林简历网站业务
2026-03-20:用户要求代码示例优先采用 Java 17 新特性

记忆检索

MEMORY.md 会随时间变得庞大,每次都全量加载不现实。

解决方案:

  1. 内嵌带向量搜索扩展的 SQLite 数据库作为高速缓存索引
  2. 新内容写入 MEMORY.md 时,后台切分成小块并转换成向量存入 SQLite
  3. 查询时,把问题转换成向量进行相似度比对
  4. 同时结合 BM25 算法进行关键词匹配
  5. 双路召回,精准捞出最相关的历史记忆

底层复杂检索交给 SQLite,人类可读数据留在纯文本文件。

自我修正机制

传统 AI 的问题:纠正错误后,下次新对话照样犯。

OpenClaw 的解决方案:

  1. 执行任务踩坑时,启动专门的反思环节
  2. 拆解失败原因、正确操作逻辑、需要规避的问题
  3. 总结成可复用的避坑经验
  4. 明文写入 MEMORY.md
  5. 后续执行同类任务时,自动加载避坑指南

形成正向循环:用得越多 → 越懂你 → 犯错越少。

设计优势

透明可控

  • 记忆存在本地纯文本文件,随时可查看
  • 记错了直接用记事本打开删掉那行就行
  • 可以用 Git 追踪记忆变化

隐私安全

  • 记忆存在本地,不上传云端
  • 你的记忆属于你,不属于厂商

可移植

  • 打包文件夹就能分享给同事
  • 换电脑直接复制过去继续用

烧 Token 的原因

记忆机制是 OpenClaw 烧 Token 的主要原因之一:

  1. 心跳保活:每半小时唤醒一次,每次都要读取完整记忆文件
  2. 自主反思:执行报错后不断分析重试,累积上下文
  3. 定期总结:把上万字聊天记录交给大模型压缩提炼
  4. 记忆召回:每次对话都要塞回历史记忆片段

总结

OpenClaw 的记忆机制核心思路:简单即可靠

没有用复杂的向量数据库或知识图谱,就是最朴素的 Markdown 文件 + SQLite。但正是这种朴素,让它变得异常可靠和可控。

简单 → 透明 → 可控 → 信任