OpenClaw 记忆系统设计学习笔记

OpenClaw 记忆系统设计详解


一、初始架构:本地优先的双层存储

核心设计哲学:「Markdown 即真相」

OpenClaw 最初采用的记忆架构以 "Markdown 即真相" 为核心理念:

记忆文件以纯 Markdown 格式 存储在本地磁盘,是人类可读、git 可追踪的原始真相;SQLite 向量索引是从 Markdown 派生出来的加速层,始终可重建。

整体分为短期缓存 与长期持久化两层:

复制代码
记忆系统
├── 短期记忆(Short-term Cache)
│   └── 内存缓存,72小时内对话上下文
└── 长期记忆(Long-term Storage)
    ├── SQLite 数据库(结构化索引)
    └── Markdown 文件(原始真相)

1. 短期记忆 ------ 内存缓存

  • 存储位置:运行时内存(In-Memory)
  • 存储内容:当前对话窗口的原始上下文
  • 生命周期:72小时,会话结束后失效
  • 容量限制:受限于模型 Max Tokens
  • 作用:保证多轮对话的连贯性

2. 长期记忆 ------ Markdown 文件持久化

复制代码
~/.openclaw/workspace/
├── MEMORY.md                  # 长期决策、用户偏好、关键事实
└── memory/                    # 每日日志目录
    ├── 2026-01-30.md          # 按日期分片的每日笔记
    ├── 2026-01-31.md
    └── ...
文件 存储内容 加载时机
MEMORY.md 持久性事实、用户偏好、关键决策 仅在主私有会话加载
memory/YYYY-MM-DD.md 每日会话摘要、日常笔记 按日期按需读取
extraPaths 外部文档索引(用户自定义路径) 按需检索

3. SQLite ------ 派生索引层

复制代码
~/.openclaw/memory/
└── <agentId>.sqlite    # 每个 Agent 独立的向量索引库
    ├── FTS5             # 全文搜索索引
    ├── vec0             # 向量相似度搜索
    └── 结构化元数据      # 文件路径、时间戳等
  • 性质 :从 Markdown 派生,不是原始真相
  • 作用:加速检索,支持语义搜索与关键词混合搜索
  • 可重建:Markdown 存在时,SQLite 索引随时可重新生成

4. 整体数据流向

复制代码
用户对话
    ↓
内存上下文(短期缓存)
    ↓ 触发写入规则
Markdown 文件落盘(真相层)
    ↓ 索引管道
SQLite(FTS5 + vec0)加速层
    ↑ 工具调用检索
Agent 对话上下文注入

5. 本地优先原则

所有存储方式均遵循 Local-First(本地优先) 原则:

  • ✅ 所有记忆数据存储在用户本地设备,不上传云端
  • ✅ 纯 Markdown 格式,人类可读、可直接编辑
  • ✅ 支持 git 追踪,记忆变更历史可回溯
  • ✅ 仅调用 LLM API 时联网,支持切换本地模型零联网运行

二、社区演化:分层记忆架构

随着社区实践深入,原生架构暴露出核心痛点------整份 MEMORY.md 每轮全量塞进 system_prompt,不做检索,随使用无限增长,导致 Token 消耗爆炸。社区在此基础上演化出更完善的分层架构。

分层设计总览

将不同类型的信息存储在不同层级,平衡连续性与 Token 消耗:

层级 存储内容 加载策略 Token 成本
身份层 核心自我、用户偏好 始终加载 ~200 tokens
活动上下文 当前任务、近期决策 始终加载 ~500 tokens
档案层 完整历史、项目细节 按需语义检索 节省 96%

核心记忆文件结构

复制代码
~/openclaw-workspace/
├── SOUL.md        # AI 的人格和核心行为准则
├── USER.md        # 用户信息(名字、偏好、职业等)
├── IDENTITY.md    # AI 的自我认知(名字、性格、定位)
├── MEMORY.md      # 长期记忆(重要事件、项目进度、关键决策)
├── HEARTBEAT.md   # 周期性任务清单(主动服务配置)
└── memory/        # 每日记忆文件夹
    ├── 2026-03-04.md
    ├── 2026-03-05.md
    └── ...

RAG 记忆工作流程

每次对话,系统自动完成以下流程:

复制代码
用户输入
   ↓
预处理(清洗、脱敏)
   ↓
检索 Retrieve ------ 在向量库中搜索 Top-K 相关历史记忆
   ↓
增强 Augment ------ 检索到的记忆 + 当前对话 + System Prompt 组装完整 Prompt
   ↓
生成 Generate ------ LLM 基于完整 Prompt 输出回复
   ↓
存储 Store ------ 将当前对话追加到短期上下文

记忆生命周期

① 首次启动:基础记忆加载

OpenClaw 自动读取核心配置文件,构建初始记忆基础:

  • SOUL.md --- 明确 AI 的行为准则和沟通风格
  • USER.md --- 存储用户核心信息,让 AI 快速了解服务对象
  • IDENTITY.md --- 确立 AI 的自我定位,保证交互一致性

② 日常使用:动态记忆交互

  • 读取当天的 memory/YYYY-MM-DD.md,加载最新会话上下文
  • 检索最近 1~2 天的每日记忆文件,确保短期对话连贯性
  • 对话结束后自动写入新的记忆内容

③ 记忆写入规范

markdown 复制代码
## 记忆管理规范
- 日志写入 memory/YYYY-MM-DD.md,记录结论而非过程
- 项目变更时同步更新 memory/projects.md
- 遇到问题时记录到 memory/lessons.md

向量数据库后端支持

yaml 复制代码
memory:
  enabled: true
  # 支持: chroma(默认轻量)| milvus | qdrant | faiss
  backend: chroma
后端 特点
Chroma 默认,轻量级,适合本地使用
Milvus 适合大规模生产环境
Qdrant 高性能向量搜索
FAISS Facebook 开源,适合离线场景

三、社区主流优化插件

① MemOS(推荐 ⭐⭐⭐⭐⭐)

https://blog.csdn.net/qq_38604364/article/details/158893890

  • 底层用 Neo4j 图数据库记录实体关系
  • 用 Qdrant 向量搜索记语义相似内容
  • 实测 Token 消耗下降 72%,支持多 Agent 共享记忆池

② PowerMem 插件

https://www.cnblogs.com/OBCE666/p/19770738

  • 会话前按需检索相关记忆注入上下文
  • 会话后智能抽取关键事实落库
  • 实测同等任务 Token 消耗降至默认方案的 18%

③ 知识图谱上下文引擎

https://so.html5.qq.com/page/real/search_news?docid=70000021_58069bafede28652

  • 从对话中提取结构化三元组(实体-关系-实体)构建知识图谱
  • 上下文压缩率高达 75%(174条消息从 9.5 万 token 压缩至 2.4 万)
  • 支持跨会话记忆重用

四、自定义记忆逻辑(高级)

参考:https://www.cnblogs.com/hewei-blogs/articles/19730086

OpenClaw 允许开发者通过 Python 脚本完全接管记忆的写入、读取和遗忘逻辑:

python 复制代码
# skills/custom/custom_memory.py
class CustomMemoryHandler:
    def write(self, content):
        # 自定义写入逻辑
        pass

    def read(self, query):
        # 自定义检索逻辑
        pass

    def forget(self, criteria):
        # 自定义遗忘逻辑
        pass

总结

复制代码
OpenClaw 记忆系统
├── 文件层(Markdown)------ 持久化、可读、透明
├── 向量层(Chroma/Qdrant 等)------ 语义检索、按需加载
├── 图谱层(Neo4j,可选)------ 关系推理、跨会话关联
└── 插件层(MemOS/PowerMem)------ Token 优化、智能管理

OpenClaw 记忆系统的核心设计哲学是:记忆以落盘 Markdown 的形式存在,而非黑盒式的隐式记忆,实现了从 "prompt" 到 "workspace" 的范式转变。初始架构奠定了本地化、透明可编辑的基础,社区演化则在此之上持续突破 Token 瓶颈,走向更智能的分层检索体系。

相关推荐
Hello.Reader2 分钟前
REA 深度实战让 AI Agent 学会逆向工程,从软件行为分析到二进制原理还原
人工智能
William一直在路上2 分钟前
垂直领域大模型训练的一点思考和探索
人工智能·大模型·llm
腾讯云大数据3 分钟前
本体立骨架,语义供刻度——DataBuddy对企业AI语义架构的一次完整回答
大数据·人工智能·架构·云计算·腾讯云
武汉星际互动7 分钟前
从“一件事”到“一类事”,政务服务改革的“下一站”在哪里?
大数据·人工智能·政务
朝朝辞暮i9 分钟前
VLA 系统学习第 20 课——Diffusion Policy 为什么要先给动作加噪,再学习把噪声去掉?
人工智能·python·深度学习·transformer·vla
七夜zippoe10 分钟前
Agent 权限边界:别让 AI 误删你的生产库(安全设计)
数据库·人工智能·安全·ai·权限边界·安全设计
田里的水稻12 分钟前
RL_强化学习概述---具身机器人
人工智能·深度学习·神经网络·机器学习
朝朝辞暮i12 分钟前
第一部分:ACT 阶段总结——从 Behavior Cloning 到完整的 Transformer Action Policy
人工智能·pytorch·深度学习·transformer·vla
Allen_LVyingbo15 分钟前
生命过程的分子语言:AI 解析范式与场景应用全景研究(上)
大数据·人工智能·知识图谱·健康医疗·数据库开发·数据库架构
KKKlucifer18 分钟前
国内数据分类分级平台的路线分化与落地边界
大数据·人工智能·分类