小龙虾居然比你更健忘?OpenClaw 记忆系统指南,让它永远记住你

每次重启会话,AI 就变成"第一次见面"的陌生人?这篇文章教你用 OpenClaw 的记忆系统,彻底解决这个让人崩溃的问题。


开篇:一个真实的崩溃现场

你跟 AI 聊了整整两个小时,教了它你的写作风格、技术偏好、工作流习惯......

然后第二天打开新会话。

它问你:"你是做什么工作的?"

你:......

这不是 bug,这是所有基于大模型的 AI 助手的"原罪"------上下文窗口是有限的,会话结束了,记忆就消失了。

但 OpenClaw 在这件事上,走了一条非常务实的路。


OpenClaw 记忆系统的核心哲学:文件就是真理

先说结论:OpenClaw 的记忆不在云端,不在数据库,就在你本地的 Markdown 文件里。

源码里有一句话说得特别直接:

"The files are the source of truth; the model only 'remembers' what gets written to disk."

翻译一下:文件是唯一的事实来源,模型只"记住"写入磁盘的内容。

这个设计思路让人拍案叫绝------简单、透明、可控。你随时可以打开文件看、改、删,完全掌握 AI 记住了什么。


记忆文件的两层架构

OpenClaw 把记忆分成两类,各司其职:

第一层:每日日志 memory/YYYY-MM-DD.md

  • 存放路径:~/.openclaw/workspace/memory/2026-03-16.md
  • 定位:流水账,今天发生了什么、讨论了什么、做了什么决定
  • 特点:仅追加(append-only),会话开始时自动读取今天和昨天的内容

想象它是你的工作日报------不需要精炼,但要记录。

第二层:长期记忆 MEMORY.md

  • 存放路径:~/.openclaw/workspace/MEMORY.md
  • 定位:精华提炼,跨越时间都需要记住的偏好、习惯、重要结论
  • 关键限制:只在主会话(私聊)中加载,群聊和共享上下文中不加载

为什么要这个限制?安全考虑MEMORY.md 里可能有你的个人偏好、私人信息------这些内容不应该在群聊中"泄露"给其他人。


手把手:三分钟激活记忆系统

第一步:创建工作区目录和文件

bash 复制代码
mkdir -p ~/.openclaw/workspace/memory
touch ~/.openclaw/workspace/MEMORY.md

注意MEMORY.md 默认不存在,需要你手动创建。这是有意为之的设计------系统不会替你做这个决定。

第二步:往 MEMORY.md 里写点什么

markdown 复制代码
# 我的个人上下文
​
## 基本信息
- 工作角色:全栈开发工程师
- 技术栈偏好:TypeScript + React + Node.js
- 写作风格:简洁直接,不喜欢废话
​
## 工作习惯
- 代码注释用英文
- 提交信息遵循 Conventional Commits 规范
- 每天早上 9 点开始工作,专注时不要问太多问题
​
## 重要约定
- 帮我写代码时优先考虑可读性,不要过度优化
- 如果不确定,先问我,别自作主张

第三步:告诉 Agent 要读它

在你的 ~/.openclaw/workspace/AGENTS.md 里加上这段:

markdown 复制代码
## 会话启动
1. 读取 SOUL.md
2. 读取 memory/YYYY-MM-DD.md(今天 + 昨天)
3. 如果是主会话(直接与用户对话):读取 MEMORY.md

好了,你的 AI 助手现在有长期记忆了。


进阶功能 1:语义搜索记忆

记忆文件多了之后,怎么找到相关内容?OpenClaw 提供了 向量语义搜索

Agent 有两个工具:

  • memory_search:语义搜索,找"意思相近的"内容
  • memory_get:精准读取,指定文件和行号

配置语义搜索,在 ~/.openclaw/config.json5 里:

css 复制代码
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai",  // 也支持 gemini、voyage、mistral、local(离线)
        remote: {
          apiKey: "YOUR_OPENAI_API_KEY"
        }
      }
    }
  }
}

不想用 API 密钥? 用本地模式:

css 复制代码
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "local",
        local: {
          modelPath: "/path/to/your/gguf/model"
        },
        fallback: "none"
      }
    }
  }
}

OpenClaw 会自动优先级尝试:local → openai → gemini → voyage → mistral,找到能用的就用。


进阶功能 2:自动记忆刷新(上下文压缩前的"遗嘱")

这是 OpenClaw 最有意思的机制之一,值得单独讲清楚。

问题:当一次会话聊得太长,上下文窗口快满了,系统会自动压缩(compaction)------把早期内容摘要成一段话。压缩之后,细节就永远消失了。

解决方案 :在压缩发生之前,系统会悄悄触发一个"记忆刷新"------发一条无声的提示给 Agent,让它把重要内容写入 memory/YYYY-MM-DD.md

用户完全感知不到这个过程(除非你开了 verbose 日志),但重要信息被安全地保存下来了。

配置它(其实默认就是开着的):

yaml 复制代码
{
  agents: {
    defaults: {
      compaction: {
        reserveTokensFloor: 20000,
        memoryFlush: {
          enabled: true,
          softThresholdTokens: 4000,
          systemPrompt: "Session nearing compaction. Store durable memories now.",
          prompt: "Write any lasting notes to memory/YYYY-MM-DD.md; reply with NO_REPLY if nothing to store.",
        }
      }
    }
  }
}

触发逻辑(从源码扒出来的):

scss 复制代码
触发条件 = 当前 token 数 >= (上下文窗口 - reserveTokensFloor - softThresholdTokens)

而且每次压缩周期只触发一次,不会重复骚扰你。


进阶功能 3:QMD 后端(实验性,强力玩家专属)

如果你有大量 Markdown 笔记(几百上千篇),普通的 SQLite 向量索引可能不够用。OpenClaw 支持接入 QMD------一个结合了 BM25 + 向量 + 重排序的本地搜索引擎。

css 复制代码
{
  memory: {
    backend: "qmd",
    qmd: {
      includeDefaultMemory: true,
      update: { interval: "5m" },
      paths: [
        { name: "personal-notes", path: "~/Documents/notes", pattern: "**/*.md" }
      ]
    }
  }
}

QMD 完全本地运行,不需要联网,首次启动会自动下载 GGUF 模型。

踩坑提醒 :macOS 上需要 brew install sqlite(brew 版,不是系统自带的),因为 QMD 需要支持扩展的 SQLite。


进阶功能 4:把笔记/图片/音频也纳入记忆

如果你想让 Agent 记住的不只是文字,还有截图、语音备忘录......OpenClaw 支持 多模态记忆索引(需要 Gemini Embedding 2):

css 复制代码
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "gemini",
        model: "gemini-embedding-2-preview",
        extraPaths: ["~/Desktop/screenshots", "~/voice-notes"],
        multimodal: {
          enabled: true,
          modalities: ["image", "audio"]
        },
        remote: {
          apiKey: "YOUR_GEMINI_API_KEY"
        }
      }
    }
  }
}

支持的图片格式:.jpg.png.webp.gif.heic 支持的音频格式:.mp3.wav.m4a.flac


实用技巧速查

技巧 1:让 Agent 主动记东西

直接告诉它:"记住这个 ,我的 API key 前缀格式是 sk-xxx"。

好的 Agent 会自动把这句话写入 memory/今天.md。如果它没写,你可以说:"帮我写到 MEMORY.md 里。"

记住源码里的箴言: "如果你想记住什么,就写到文件里。心理笔记在会话重启后不存在,文件可以。"

技巧 2:检查记忆状态

lua 复制代码
openclaw memory status

会告诉你:记忆文件路径、文件数量、是否有问题。

技巧 3:额外索引团队文档

css 复制代码
{
  agents: {
    defaults: {
      memorySearch: {
        extraPaths: [
          "../team-wiki",           // 团队 Wiki(工作区相对路径)
          "/srv/shared-notes"       // 共享笔记(绝对路径)
        ]
      }
    }
  }
}

技巧 4:控制记忆搜索范围

默认只在私聊中触发记忆搜索(防止在群聊中泄露个人信息)。如果你想在特定频道也用,可以配置 scope

css 复制代码
{
  memory: {
    qmd: {
      scope: {
        default: "deny",
        rules: [
          { action: "allow", match: { chatType: "direct" } }
        ]
      }
    }
  }
}

常见问题 FAQ

Q:MEMORY.md 没有效果,Agent 好像没读它?

A:检查 AGENTS.md 里有没有明确指示读取它。另外确认你是在"主会话"(直接对话),不是群聊或 bot 频道。

Q:语义搜索没反应?

A:运行 openclaw memory status 看看哪里报错。最常见的问题是没有配置 API key,或者 memorySearch.provider 没有设置,而系统找不到可用的 embedding 服务。

Q:想完全关掉记忆功能?

A:

css 复制代码
{
  plugins: {
    slots: {
      memory: "none"
    }
  }
}

Q:记忆文件越来越大怎么办?

A:定期让 Agent 帮你"整理"------让它把一个月的日志提炼成几条要点,更新 MEMORY.md,然后归档旧日志。这本来就是 MEMORY.md 设计的初衷:提炼的精华,而非原始日志。


总结:记忆系统的使用哲学

OpenClaw 的记忆系统给了我一个全新的视角:AI 的"记忆"本质上是一个内容管理问题,而不是技术问题。

文件是事实,模型是消费者。你控制文件,你就控制记忆。

最后送上三条行动指南:

  1. 今天就创建 MEMORY.md,把你最重要的偏好和习惯写进去
  2. 养成习惯:重要决定和结论,主动让 Agent 写入记忆
  3. 定期维护:每个月回顾一次,把有用的内容精炼到 MEMORY.md

你的 AI 助手能有多强,很大程度上取决于你给它的"记忆"有多好。


文中所有技术细节均基于 OpenClaw 源码验证,包括 src/auto-reply/reply/memory-flush.tsdocs/concepts/memory.mdsrc/agents/tools/memory-tool.ts 等核心文件。欢迎对照源码自行探索。

相关推荐
lisw0510 小时前
人工智能辅助科学的快与慢!
人工智能
9呀10 小时前
vscode如何打开多个codex标签页
人工智能
todoitbo10 小时前
本地图库语义搜索实战:接上蓝耘元生代,让“傍晚的海边“能搜到图
人工智能·ai·api·工具实战
羊羊小栈10 小时前
基于「YOLO目标检测 + 多模态AI分析」的水稻病害智能检测分析预警系统(LangChain框架)
人工智能·yolo·目标检测·毕业设计·创业创新·大作业
IT_陈寒10 小时前
Vue的响应式让我熬到凌晨三点,原来漏了这个小细节
前端·人工智能·后端
lisw0510 小时前
提升社会科学领域的计算可重复性
人工智能·数字时代
HyperAI超神经10 小时前
HyperAI 入选 36氪「East Forward 2026 出海全球化拓新企业」
人工智能·深度学习·全球化企业
9呀10 小时前
VS Code Codex 多窗口使用与补丁记录
人工智能
七仔啊10 小时前
安防通行人脸抓拍识别
人工智能
颜进强11 小时前
01 · NestJS 是什么:用途、解决什么问题、与热门框架对比
前端·后端·ai编程