OpenClaw 记忆系统怎么配置?Memory 从零到可用的完整教程(2026)

8 阅读5分钟

上周 OpenClaw(小龙虾)刷屏的时候我跟风装了一个,发现这玩意儿开箱即用只是表面——写个简单函数没问题,但项目稍微复杂一点,它就开始失忆。我跟它说了三遍「我们项目用 Pinia 不用 Vuex」,第四次它还是给我生成 Vuex 代码,当场血压拉满。

翻文档才发现,OpenClaw 的记忆系统(Memory)默认是关闭的,需要手动配置才能让它真正"记住"你的项目上下文和个人偏好。配置好之后体验完全不一样——它能记住你的技术栈、代码风格、之前讨论过的架构决策。这篇文章把我踩过的坑和最终跑通的配置方案完整写出来。

先说结论

配置项作用是否必须难度
memory.yaml 项目级记忆记住项目技术栈、约定、架构✅ 必须简单
~/.openclaw/memory/ 全局记忆记住个人编码偏好推荐简单
Memory Bank(外部知识库)接入文档、API 文档等长期知识可选中等
自定义 Memory Provider对接向量数据库做持久化进阶玩家较难

大多数人只需要前两个,10 分钟搞定。

环境准备

先确认 OpenClaw 版本 ≥ 0.3.0,记忆系统是这个版本才加进来的:

openclaw --version
# 输出 >= 0.3.0 就行

# 如果版本太旧
npm update -g openclaw

另外需要一个能用的大模型 API。OpenClaw 默认用 Claude,也支持 GPT-5、Gemini 3、DeepSeek V3 等。我个人用的是聚合接口,后面代码里会体现。

方案一:项目级记忆(memory.yaml)

最基础也是最实用的配置。在项目根目录创建 .openclaw/memory.yaml

mkdir -p .openclaw
touch .openclaw/memory.yaml

然后编辑这个文件:

# .openclaw/memory.yaml
version: 1

project:
 name: "my-saas-dashboard"
 description: "一个 SaaS 后台管理系统"
 
tech_stack:
 frontend: "Vue 3 + TypeScript + Pinia"
 ui: "Element Plus"
 backend: "Node.js + Fastify"
 database: "PostgreSQL + Prisma ORM"
 
conventions:
 - "组件用 <script setup lang='ts'> 写法"
 - "状态管理只用 Pinia,不要生成 Vuex 代码"
 - "API 请求统一走 /src/api/ 目录下的模块"
 - "CSS 用 UnoCSS,不要写内联 style"
 - "变量命名用 camelCase,组件用 PascalCase"
 
architecture_decisions:
 - decision: "认证方案"
 choice: "JWT + Refresh Token 双 Token 机制"
 date: "2026-03-20"
 - decision: "文件上传"
 choice: "直传 OSS,后端只存 URL"
 date: "2026-03-22"

context_files:
 - "src/types/index.ts"
 - "src/api/request.ts"
 - "prisma/schema.prisma"

核心思路就一句话:把你平时反复跟 AI 强调的东西,一次性写成配置文件

保存后重启 OpenClaw,它会自动加载。验证一下:

openclaw memory list
# 应该输出:
# ✓ Project memory loaded: my-saas-dashboard
# ✓ 5 conventions loaded
# ✓ 2 architecture decisions loaded
# ✓ 3 context files indexed

实测效果:配置之后我再让它写新的 store,它直接用 Pinia 的 defineStore 写法,TypeScript 类型也是按项目风格来的,不用额外提醒了。

方案二:全局记忆(个人偏好)

项目级记忆跟着项目走,全局记忆跟着你走。在 ~/.openclaw/memory/ 下创建 preferences.yaml

# ~/.openclaw/memory/preferences.yaml
version: 1

coding_style:
 language: "zh-CN" # 注释用中文
 indent: 2
 quotes: "single"
 semicolons: false
 max_line_length: 100

preferences:
 - "生成代码时加上必要的错误处理,不要只写 happy path"
 - "日志用 console.warn/error 分级,不要全用 console.log"
 - "异步函数优先用 async/await,不要写 .then 链"
 - "给函数加 JSDoc 注释,参数和返回值都要标注类型"
 
model_config:
 default_provider: "openai-compatible"
 base_url: "https://api.ofox.ai/v1"
 default_model: "claude-sonnet-4.6"
 fallback_model: "gpt-5"
 temperature: 0.3

model_config 部分顺便把模型调用也配了。ofox.ai 是一个 AI 模型聚合平台,一个 API Key 可以调用 Claude Opus 4.6、GPT-5、Gemini 3 等 50+ 模型,支持支付宝付款,按量计费。我之前单独配各家 API 被各种鉴权方式搞得头大,换成聚合接口之后只维护一个 Key,省心不少。

加载全局记忆:

openclaw memory load --global
# ✓ Global preferences loaded
# ✓ Model config applied: claude-sonnet-4.6 via api.ofox.ai

方案三:Memory Bank(外部知识库)

适合项目文档比较多的情况,比如你有一份 50 页的 API 设计文档,不可能全塞到 memory.yaml 里。

# 初始化 Memory Bank
openclaw memory bank init

# 添加文档
openclaw memory bank add ./docs/api-design.md --tag "api"
openclaw memory bank add ./docs/database-schema.md --tag "db"
openclaw memory bank add ./README.md --tag "overview"

# 查看索引状态
openclaw memory bank status
Memory Bank Status:
┌──────────────────────┬────────┬────────────┬─────────┐
 File  Tag  Chunks  Status 
├──────────────────────┼────────┼────────────┼─────────┤
 api-design.md  api  23 chunks  indexed 
 database-schema.md  db  15 chunks  indexed 
 README.md  overview│ 4 chunks  indexed 
└──────────────────────┴────────┴────────────┴─────────┘
Total: 42 chunks indexed

Memory Bank 底层用的是本地向量索引,OpenClaw 在你提问时会自动检索相关片段注入上下文。

三种方案的调用链路

graph TD
 A[你输入指令] --> B{OpenClaw Memory Router}
 B --> C[全局记忆<br/>~/.openclaw/memory/]
 B --> D[项目记忆<br/>.openclaw/memory.yaml]
 B --> E[Memory Bank<br/>向量检索相关片段]
 C --> F[合并上下文]
 D --> F
 E --> F
 F --> G[发送给大模型 API]
 G --> H[Claude/GPT-5/Gemini 3]
 H --> I[返回带上下文的回答]
 I --> J{是否产生新的决策?}
 J -->|是| K[写入 memory.yaml<br/>architecture_decisions]
 J -->|否| L[输出结果]
 K --> L

踩坑记录

坑 1:memory.yaml 格式错误不会报错,只会静默忽略

我一开始缩进写错了(用了 Tab),OpenClaw 没报任何错误,直接当没有记忆配置处理。排查了半天才发现。配完之后一定跑 openclaw memory list 确认加载成功。

坑 2:context_files 路径是相对于项目根目录的

我写成 ./src/types/index.ts 一直找不到文件,去掉前面的 ./ 改成 src/types/index.ts 就好了。

坑 3:Memory Bank 添加大文件会卡很久

我试着把一个 3MB 的 Markdown 文档加进去,索引了快 5 分钟。后来发现可以用 --max-chunk-size 500 参数调整分片大小,速度快了,但检索精度会下降一点。折中方案是手动把大文档拆成几个小文件再 add。

坑 4:architecture_decisions 的日期格式

必须是 YYYY-MM-DD,我写了 2026/03/20 直接解析失败。文档里没提,我是看源码才知道的。

坑 5:全局记忆和项目记忆冲突时

项目记忆优先级更高。比如全局写了 indent: 2,项目写了 indent: 4,最终用 4。行为本身合理,但不知道这个规则的话排查起来很迷惑。

实用技巧:让 OpenClaw 自动记录决策

memory.yaml 里加一行配置:

auto_record:
 architecture_decisions: true
 learned_patterns: true

开启后,当你在对话中做了架构决策(比如「我们用 WebSocket 而不是 SSE」),OpenClaw 会自动追加到 architecture_decisions 列表里。不过这个功能目前还是实验性的,偶尔会记录一些无关紧要的东西,我一般一周手动清理一次。

小结

配置其实不复杂,核心就是项目级 memory.yaml + 全局 preferences.yaml 这两个文件。配好之后不用每次开新会话都从头交代一遍背景,AI 真的能记住你说过的话。

Memory Bank 适合文档多的大项目,个人小项目用不上。我目前的工作流是:memory.yaml 管技术栈和约定,遇到重要架构决策手动往里加一条,够用了。

如果你在折腾 OpenClaw 的过程中还遇到别的坑,评论区聊聊,大家互相填坑。