<style>.toc-chapters{max-height:none!important}.copy-btn,#sidebar-toggle,#fullscreen-toggle{display:none!important}@media(max-width:768px){.tutorial-app{display:flex;height:auto;overflow:visible;flex-direction:column}.tutorial-main{order:0;overflow:visible}.tutorial-content{overflow:visible}.tutorial-sidebar{order:1;position:static!important;width:100%!important;min-width:0!important;max-height:none!important;display:flex!important;transform:none!important}.sidebar-toc{overflow:visible}}</style>

第 10 章:记忆系统 🧠

没有记忆的 AI 就像金鱼——7 秒就忘了你说了什么。OpenClaw 的记忆系统让金鱼变成大象。


10.1 短期记忆 vs 长期记忆

人类的记忆分为短期记忆和长期记忆。AI 也一样。

短期记忆:Session 上下文

短期记忆就是当前会话的内容。你所说的话、Agent 的回复、工具调用的结果——都在这里。

  • 存储位置: 推理过程中的 Token
  • 容量限制: 取决于模型的上下文窗口(通常 100K-200K tokens)
  • 持久性: 会话结束就没了(除非压缩或存盘)
你:「帮我查一下昨天的天气」
Agent:查询中...
你:「顺便告诉我明天要不要带伞?」
Agent:靠短期记忆知道「昨天」是哪天、城市是哪里

长期记忆:磁盘文件

长期记忆存在硬盘上的 Markdown 文件中。Agent 没有任何"隐藏状态",记住的唯一方式就是写文件

  • 存储位置: MEMORY.md + memory/YYYY-MM-DD.md
  • 容量限制: 只受硬盘限制
  • 持久性: 永久保存,除非你删掉
MEMORY.md           → 精选的长期记忆(每次主私密会话加载)
memory/2026-06-25.md → 日常笔记(语义搜索可用)
memory/2026-06-26.md → 每天一个文件

核心原则: 想让 Agent 记住,就叫它写下来!


10.2 记忆文件的层次结构

MEMORY.md —— 精装版

适合放:

  • "用户叫当当,独立开发者"
  • "项目使用 Next.js + TypeScript"
  • "不喜欢的:过度嵌套的条件判断"

特点: 每次主私密会话都会加载到提示词中。要精简,不要啰嗦。

memory/YYYY-MM-DD.md —— 日记本

适合放:

  • "今天讨论了数据库迁移方案,最终选 PostgreSQL"
  • "修复了一个 SSRF 漏洞,记录排查过程"
  • "发现 npm 包 xxx 有已知安全问题,已升级"

特点: 今天和昨天的自动加载。更早的通过 memory_search 查询。可以很长。

DREAMS.md —— 梦境日记

可选文件,由"梦境(Dreaming)"系统自动维护——Agent 在后台对记忆做整理和提纯时生成。


10.3 memory_search 和 memory_get

Agent 有两个专门操作记忆的工具:

memory_search —— 语义搜索

这是最强大的记忆工具。它不仅仅是搜关键词——它能理解语义

你问 Agent:「我们之前讨论过那个数据库方案吧?」

Agent 内部:
1. memory_search("数据库方案讨论")
2. 找到几周前 memory/2026-06-01.md 里的相关记录
3. 回答:「我们在 6 月 1 日讨论过,当时决定用 PostgreSQL」

memory_search 使用混合搜索——同时使用向量相似度(语义匹配)和关键词匹配(精确匹配):

flowchart LR
    Q["你的问题"] --> E["向量化"]
    Q --> K["关键词"]
    E --> VS["向量搜索<br/>语义匹配"]
    K --> BM["BM25 搜索<br/>精确匹配"]
    VS --> M["加权合并"]
    BM --> M
    M --> R["返回最佳结果"]

配置语义搜索的提供商:

{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai",  // 默认:openai
        // provider: "gemini"
        // provider: "ollama"  // 本地部署
        // provider: "local"   // 本地离线
      },
    },
  },
}

如果没有配置提供商,memory_search 默认使用关键词搜索(BM25),效果也不错。

memory_get —— 精确读取

当你需要读取某个记忆文件的特定部分时使用:

Agent 内部调用:
memory_get("memory/2026-06-01.md")
→ 读取那天的全部内容

命令行搜索

你也可以在终端直接搜:

openclaw memory search "数据库方案"
openclaw memory status       # 查看索引状态
openclaw memory index --force  # 重建索引

10.4 Memory Wiki 新特性(2026 年 4 月更新)

2026 年 4 月,OpenClaw 推出了 Memory Wiki 插件——把零散的记忆变成一个结构化的知识库。

为什么要 Wiki?

普通的 memory_search 很好用,但如果你的记忆越来越多(几个月、几千页笔记),你会希望记忆不仅仅是"可搜索"的,而是有结构、有来源、有可信度的

Memory Wiki 增加了这些能力:

结构化知识

普通记忆是自由格式的 Markdown:

项目 ABC 使用了 PostgreSQL,因为需要事务支持。

Wiki 可以带上结构化信息和来源:

---
pageType: entity
entityType: system
claims:
  - id: claim.db-choice
    text: 项目 ABC 使用 PostgreSQL
    status: supported
    confidence: 0.95
    evidence:
      - kind: meeting-notes
        sourceId: source.20260601
        weight: 0.8
---

三大模式

模式 说明 适合
isolated 独立 Wiki,自己管理 想单独维护一个知识库
bridge 桥接模式,从已有记忆生成 Wiki 已有大量笔记
unsafe-local 本地模式,不依赖任何插件 高级用户

Wiki 工具

安装 Memory Wiki 后,Agent 多了几个工具:

  • wiki_search —— 在 Wiki 中搜索
  • wiki_get —— 读取某个 Wiki 页面
  • wiki_apply —— 编辑 Wiki 页面
  • wiki_lint —— 检查 Wiki 结构问题
  • wiki_status —— 查看 Wiki 状态

搜索全部记忆

memory_search corpus=all

这会在普通记忆和 Wiki 中同时搜索,一次性获取最全面的结果。


10.5 配置和管理长期记忆

基本配置

{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai",           // 嵌入提供商
        query: {
          hybrid: {
            mmr: { enabled: true },           // 启用多样性(避免重复结果)
            temporalDecay: { enabled: true }, // 启用时间衰减(旧结果权重降低)
          },
        },
      },
    },
  },
}

时间衰减

打开后,旧笔记的搜索结果权重会逐渐降低。默认半衰期 30 天——一个月前的笔记得分只有一半。

什么时候打开? 当你有几个月的笔记,旧的干扰新的时候。

多样性(MMR)

打开后,搜索结果会覆盖不同主题,而不是返回 5 条相似的结果。

什么时候打开?memory_search 总是找到相似的记录时。

记忆后端

OpenClaw 支持多种记忆后端:

后端 特点 安装
Builtin(默认) SQLite 本地,开箱即用 无需安装
QMD 本地优先,支持重排序 无需安装
Honcho 支持跨 Agent 共享记忆 需安装插件
LanceDB LanceDB 支持,兼容 OpenAI 内建插件

10.6 自动记忆闪存(Memory Flush)

这是 OpenClaw 的一个很贴心的设计。

问题: 你和 Agent 聊了很久,Agent 记住了很多事。现在会话要压缩了——Agent 会把前面的内容总结成一个摘要。但摘要可能漏掉重要信息。

解决方案: 记忆闪存(Memory Flush)

在压缩之前,OpenClaw 会默默运行一个"闪存回合"——悄悄提醒 Agent:

"嘿,会话马上要压缩了,有什么重要的事情赶紧写到 MEMORY.md 或 memory/ 文件里。"

这样重要信息就不会在压缩中丢失。

配置闪存模型

{
  agents: {
    defaults: {
      compaction: {
        memoryFlush: {
          model: "ollama/qwen3:8b",  // 用本地模型做闪存,省 Token
        },
      },
    },
  },
}

10.7 梦境(Dreaming)系统

梦境是可选的后台记忆整理功能。它会在后台自动:

  1. 收集短期记忆信号
  2. 评估哪些值得保存
  3. 把合格的写入 MEMORY.md
  4. 把整理记录写入 DREAMS.md

默认是关闭的,需要手动开启。

# 查看梦境状态
openclaw memory status

# 开启梦境(通过配置启用)

梦境的作用:Agent 自己就能做"睡前整理"——把一天的对话精华自动提取到长期记忆中。


10.8 实战:让 Agent 记住你的咖啡偏好

场景

你想让 Agent 记住你喜欢喝冰美式。

方法一:直接让 Agent 记

你:记得我喜欢喝冰美式
Agent:好的,我记下了!(写到 MEMORY.md)

下次对话开始时,Agent 会从 MEMORY.md 读到这个信息。

方法二:自己写 MEMORY.md

打开 ~/.openclaw/workspace/MEMORY.md,加上:

## 偏好
- 饮料:冰美式,不加糖

验证

你:我想喝点东西,有什么推荐?
Agent:根据记录,您喜欢冰美式,要不要来一杯?🧊

查看记忆是否生效

openclaw memory status
openclaw memory search "冰美式"

当当老师 🐾 笔记: OpenClaw 的记忆系统设计哲学是"写下来才记得住"。它不像某些 AI 服务那样有神秘的"隐藏记忆层"——一切都存在明明白白的 Markdown 文件里。你可以看、可以改、可以删。这就是掌控感


上一章 ← 第 9 章:技能系统 | 下一章 → 第 11 章:模型管理与故障切换

系统教程,帮你把工具用好,再回到任务中。 浏览任务方案 →