OpenClaw 三层记忆系统实战:让 AI 代理真正记住你

0 阅读7分钟

OpenClaw 三层记忆系统实战:让 AI 代理真正记住你

作者:心痛的小鱼 | 2026-04-03

前言

用 OpenClaw 一段时间了,最大的感触是:每次跟 AI 说"上次那个项目",它一脸茫然。

后来搞懂了三层记忆系统,才发现原来 AI 是可以"记住"之前的。配置一套下来,确实省事不少。


效果演示

没有记忆时

我:帮我看看上次那个项目的问题
AI:抱歉,我不知道你说的是哪个项目
我:就是上周讨论的 Vue 项目
AI:还是不知道,你得重新描述一下背景...

有记忆时

我:帮我看看上次那个项目的问题
AI:找到了!你说的是 FastAPI + Vue3 项目,上次讨论的问题是 CORS 配置...
我:帮我在这个项目里加个导出功能
AI:好的,在 src/api/export.ts,已经帮你加好了...

核心工作场景

项目持续开发,第二天继续优化

用户:昨天开发的项目,我又想到一个要优化的功能:XXX

AI 工作流:
1. 当前会话 context → 没有
2. 向量库搜索 → 找到相关记忆碎片 + 来源文件
3. 加载 memory 文件 → 获取开发进度
4. 加载 OB 文档 → 找到 PRD、功能列表
5. 定位源代码 → 找到对应文件
6. 发送大模型优化 → 完成开发
7. 通知用户

向量搜索返回示例

{
  "text": "项目开发进度:第一天完成了用户模块...",
  "source": "memory/2026-04-02.md",
  "relevance": 0.95
}

一、为什么需要记忆系统?

没有记忆的 AI 每次对话都要重新交代背景,效率拉满。

OpenClaw 的三层记忆系统灵感来源于人的记忆分层:

记忆层时间容量特点
瞬时记忆几秒很少看一眼就忘
短时记忆几分钟有限工作记忆
长时记忆几天到几年无限知识沉淀

二、三层记忆系统解析

2.1 工作记忆(Working Memory)

位置:当前会话上下文(Context)

特点:最快,但容量有限,受模型 context window 限制

2.2 会话记忆(Session Memory)

位置:文件系统

~/.openclaw/workspace/memory/YYYY-MM-DD.md
~/.openclaw/workspace/MEMORY.md

特点:跨对话持久化,Markdown 格式

2.3 长期记忆(Long-term Memory)

向量记忆(Vector Memory)

插件memory-lancedb-pro

特点:可语义检索,支持自然语言查询,返回结果包含来源引用

# 语义搜索(返回结果包含文件来源)
results = memory_recall(query="项目 PRD", limit=5)
# 返回: [{"text": "...", "source": "memory/2026-04-02.md", "relevance": 0.95}, ...]

# 存储记忆
memory_store(text="重要信息", scope="global", importance=0.8)
Obsidian 知识库

位置/home/user/obsidian-vault/

特点:结构化知识 + 双向链接 + Git 同步


三、安装配置

3.1 注册向量模型

使用向量记忆前,需要先注册一个专用的小模型来生成向量。

推荐使用 SiliconFlow 平台(siliconflow.cn/):

  • 注册一个免费账号
  • 获取 API Key
  • 支持 BGE-M3 等多种向量模型
# 在 OpenClaw 配置中注册
openclaw config set embeddings.model "BAAI/bge-m3"
openclaw config set embeddings.dimensions 1024
openclaw config set embeddings.api_key "your-siliconflow-api-key"

3.2 完整配置示例

openclaw.json 中添加:

{
  "plugins": {
    "slots": {
      "memory": "memory-lancedb-pro"
    },
    "entries": {
      "memory-lancedb-pro": {
        "enabled": true,
        "config": {
          "embedding": {
            "model": "BAAI/bge-m3",
            "dimensions": 1024
          },
          "autoCapture": true,
          "autoRecall": true,
          "extractMinMessages": 2,
          "extractMaxChars": 8000,
          "retrieval": {
            "mode": "hybrid",
            "vectorWeight": 0.7,
            "bm25Weight": 0.3,
            "minScore": 0.35,
            "rerank": "cross-encoder",
            "rerankModel": "BAAI/bge-reranker-v2-m3"
          },
          "scopes": {
            "default": "global",
            "definitions": {
              "global": { "description": "所有代理共享记忆" },
              "agent:pm": { "description": "PM 机器人私有" },
              "agent:front-dev": { "description": "前端开发私有" },
              "agent:back-dev": { "description": "后端开发私有" },
              "agent:qa-ops": { "description": "测试运维私有" },
              "agent:bingbing": { "description": "冰冰私有" }
            }
          }
        }
      }
    }
  }
}

核心配置说明

配置说明
autoCapture自动捕获重要对话存入向量库
autoRecall自动检索相关记忆注入上下文
extractMinMessages连续 N 条消息才提取记忆(防噪音)
extractMaxChars单次提取最大字符数
retrieval.mode检索模式:hybrid(混合向量+关键词)
scopes多代理记忆隔离配置

Scope 记忆共享规则

Scope说明
global所有代理共享,一处存入处处可搜
agent:xxx单一代理私有,只能自己搜
# 存入全局共享记忆
memory_store(text="项目背景", scope="global", importance=0.8)

# 存入私有记忆
memory_store(text="冰冰的偏好", scope="agent:bingbing", importance=0.6)

3.3 验证安装

openclaw gateway restart

# 测试
memory_store(text="测试记忆", scope="global")
memory_recall(query="测试")

3.4 ⚠️ 配置避坑指南

常见配置错误

错误配置风险正确做法
memorySearch.extraPaths 指向 OB每次搜索都解析 Markdown,重复且慢用同步脚本导入向量库,不用 extraPaths
OB 同步 + autoCapture 同一 scope内容重复存储OB 同步到 obsidian scope,autoCapture 用 agent:xxx scope
autoRecall 搜索所有 scopes 无去重同一内容返回多条检索结果按 scope 分组,取最新版本

正确架构

┌─────────────────────────────────────────────────────┐
│                    向量库(lancedb-pro)              │
├─────────────────────────────────────────────────────┤
│  autoCapture → agent:xxx scope(对话记忆)           │
│  OB 同步脚本 → obsidian scope(知识库)             │
│  global scope(共享知识)                          │
└─────────────────────────────────────────────────────┘
         ↓ autoRecall(搜索所有 scopes,自动去重)

推荐配置

{
  "plugins": {
    "entries": {
      "memory-lancedb-pro": {
        "enabled": true,
        "config": {
          "autoCapture": true,
          "autoRecall": true,
          "scopes": {
            "default": "agent:main",  // ✅ 改为各代理私有
            "definitions": {
              "global": { "description": "所有代理共享" },
              "agent:pm": { "description": "PM 机器人私有" },
              "agent:front-dev": { "description": "前端开发私有" },
              "agent:back-dev": { "description": "后端开发私有" },
              "agent:qa-ops": { "description": "测试运维私有" },
              "global:team": { "description": "团队共享知识" },
              "global:project": { "description": "项目共享知识" },
              "obsidian": { "description": "OB 知识库" }
            }
          }
        }
      }
    }
  }
}

⚠️ 重要:默认 scope 必须是 agent:xxx(各代理私有),不要用 global,否则会导致记忆污染!

禁止配置

// ❌ 不要这样配!
"memorySearch": {
  "extraPaths": ["/path/to/obsidian"]
}

四、记忆流转机制

用户:记住这个信息
    ↓
memory_store(text="项目 PRD", importance=0.8)
    ↓
同时写入:
├── 本地文件:memory/YYYY-MM-DD.md
└── 向量库:lancedb-pro(自动生成 embedding)

用户:继续开发项目
    ↓
memory_recall(query="项目 PRD")
    ↓
向量库搜索 → 返回匹配碎片 + 文件来源
    ↓
加载来源文件 → 获取完整上下文
    ↓
执行任务(AI 知道项目结构、技术栈、历史讨论)

3.5 OB 知识库自动同步

OB 知识库需要定时同步到向量库的 obsidian scope,才能被检索到。

脚本路径

/home/user/.openclaw/workspace/skills/04-management/obsidian-sync/obsidian-sync-v2.py

工作流程

Step 1: 扫描 OB 目录
  → 支持目录:30-Knowledge, 40-Meetings, 20-Projects, 00-Inbox

Step 2: 智能去重
  → 提取标题并归一化(去掉日期、版本号)
  → 同标题只保留最新版

Step 3: 生成同步数据
  → 读取文件内容,提取标签,生成摘要

Step 4: 写入向量库
  → scope="obsidian"importance=0.7, category="fact"

手动执行

cd /home/user/.openclaw/workspace
python3 skills/04-management/obsidian-sync/obsidian-sync-v2.py

效果

指标数值
扫描文件~70 个
去重后~63 个
同步用时~3 秒
检索速度<100ms

五、使用方法

5.1 本地文件 vs 向量库

特性本地 Memory 文件向量记忆(lancedb-pro)
存储memory/YYYY-MM-DD.mdLanceDB 向量数据库
格式Markdown 纯文本向量 Embedding
搜索关键词搜索语义搜索(自然语言)
返回整文件匹配碎片 + 来源引用

memory_store() 同时写入两个地方

5.2 手动模式

# 存储记忆(同时写入本地文件和向量库)
memory_store(
    text="项目 PRD:第一天完成了用户模块...(详细描述)",
    category="fact",
    importance=0.8
)

# 检索时:向量库返回匹配结果 + 来源文件
results = memory_recall(query="项目进度")
# results[0].source 指向 memory/2026-04-02.md

5.3 每日日志

每天自动创建 memory/YYYY-MM-DD.md,记录当日重要事件。


六、常用命令

# 搜索(返回结果包含来源)
memory_recall(query="关键词", limit=5)

# 存储(同时写入文件和向量库)
memory_store(text="重要信息", scope="global", importance=0.8)

# 更新
memory_update(memoryId="xxx", text="新内容")

# 删除
memory_forget(query="过时信息")

七、最佳实践

建议说明
详细记录memory_store 时写清楚上下文,方便向量检索
设置权重importance 0-1,重要的设高一点
定期整理每周回顾,提炼重要记忆
文档分离OB 中存详细文档,memory 中做索引引用

八、总结

三层记忆系统,说白了就是让 AI 记住之前聊过什么:

  • 工作记忆 → 当前会话,聊完就没
  • 会话记忆 → memory 文件,下次还能找到
  • 长期记忆 → 向量库,搜一句就能定位到具体文档

用了这段时间,最大的感受是:不用每次都跟 AI 说"上次那个项目",它自己能找到。省了不少重复解释的功夫。


相关资源

标签:#OpenClaw #AI助手 #记忆系统 #生产力工具 #教程


码字不易,如果对你有帮助,欢迎点赞收藏~