前两天刚发了文章关于openclaw使用过程中的坑,说实话体验是割裂的,但是结尾也说了虽然目前坑不好,但是进化的速度未来可期我部署了 OpenClaw,然后它崩溃了:一个真实用户的踩坑记录
当时觉得,AI Agent 的记忆可能就是个伪命题——毕竟每次会话都是独立的,它能记住什么?
每次打开对话,我都要重新介绍自己:我是谁、做什么的、之前聊过什么。OpenClaw 就像一个记性不好的助手,每次见面都问“您哪位”。
我花了两天时间通过配置优化,给 OpenClaw 搭了四套记忆系统。现在再用,完全是两个体验,解决了openclaw使用中最大的痛点:每次对话都从零开始,真正体会到什么叫“丝滑”。
这篇文章,聊聊我怎么做的,以及改造前后的对比。
一、问题:OpenClaw 的“失忆症”
用 OpenClaw 的人都懂这个场景:
- 周一:“我是雪诺科技的xxx,具体昨天的任务,帮我跟进下反馈下项目的进度。”
- 周三:“我是谁?”
- 周五:“我是雪诺科技的xxx……”
循环往复。
OpenClaw 本身有 MEMORY.md 机制,但问题是:
- 需要手动维护
- 没有自动提取
- 搜索靠关键词匹配,不够智能
说白了,它给了你一个笔记本,但没给你笔,也没教你记什么、怎么记。
二、解法:四套记忆系统
我参考了 OpenClaw 官方文档和社区方案,搭了四套记忆系统,覆盖不同场景:
| 方法 | 用途 | 技术方案 |
|---|---|---|
| Method 1 | 长期记忆、用户画像 | 结构化文本文件 |
| Method 2 | 语义搜索、智能匹配 | 向量嵌入(待Kimi开放) |
| Method 3 | 自动提取对话记忆 | Mem0 自动化 |
| Method 4 | 结构化查询、精确检索 | SQLite 数据库 |
| 下面逐个讲。 |
Method 1:结构化记忆文件夹
原理
用文本文件存储核心记忆,透明可控。
实现目录结构
memory-system/method1-structured/
├── core/
│ ├── identity.md # KimiClaw 身份设定
│ ├── user-profile.md # 用户画像
│ ├── preferences.md # 偏好设置
│ ├── writing-style.md # 沟通风格
│ └── personal-brand.md # 个人 IP 定位
├── projects/
│ └── active/ # 当前项目
└── knowledge/
└── facts.md # 事实知识
效果
- 每次对话前,自动读取核心文件
- 我的身份、偏好、沟通风格,一目了然
- 随时可编辑,完全透明
示例
# 用户画像
- 姓名:高雪峰
- 身份:雪诺科技 创始人
- 工作习惯:晚上工作,经常熬夜
- 沟通风格:直接、有棱角、不说废话
Method 2:向量记忆搜索
原理
用 embedding 把文本转成向量,实现语义搜索。
技术
- 本来想直接用 Kimi 的 embedding API
- 结果发现 Kimi embedding 还没开放
- 备用方案:Google Gemini embedding(每天 1500 次免费)
实现
# 存储记忆
store_memory("我喜欢用 TypeScript", category="preference")
# 语义搜索
search_memory("编程语言偏好")
# 返回:我喜欢用 TypeScript(即使关键词不完全匹配)
效果
- 自然语言查询,不用记关键词
- “我之前说过喜欢什么?”→ 自动找到相关记忆
现状:等 Kimi 开放 embedding,目前先用其他方案。
Method 3:Mem0 自动化记忆
原理
自动从对话中提取关键信息(偏好、事实、决策)。
实现
# 自动提取
extract_memories("我喜欢用深色主题,习惯晚上工作")
# 自动识别为:preference + fact
# 搜索记忆
search_memories("工作习惯")
# 返回:我习惯晚上工作
效果
- 不用手动记,对话中自然提取
- 自动分类:preference / fact / decision / project
- 支持关键词搜索
示例提取
- “我喜欢用 TypeScript” → preference
- “我是雪诺科技 创始人” → fact
- “我决定每周二周五check项目进度” → decision
Method 4:SQLite 结构化存储
原理
用数据库存储结构化数据,支持精确查询。
实现
-- 偏好表
preferences(key, value, category)
-- 事实表
facts(subject, predicate, object)
-- 项目表
projects(name, status, description)
使用
# 设置偏好
set_preference("editor", "VS Code", "coding")
# 查询
get_preference("editor") # 返回:VS Code
# 自然语言查询
natural_language_query("显示所有活跃项目")
效果
- 精确查询,比文本搜索更准
- 支持复杂条件:按分类、按时间、按状态
- 零依赖,本地运行
四步组合的效果
改造前 vs 改造后
| 场景 | 改造前 | 改造后 |
|---|---|---|
| 自我介绍 | 每次都要说“我是雪诺科技 xxx” | 自动读取 user-profile.md |
| 写作风格 | 每次都要提醒“不要说废话” | 自动读取 writing-style.md |
| 记住偏好 | 说过就忘 | Method 3 自动提取,Method 4 持久化 |
| 查找历史 | 翻聊天记录 | Method 2 语义搜索,Method 4 精确查询 |
| 项目进度 | 口头同步 | Method 1 项目文件 + Method 4 数据库 |
最直观的改变
以前写篇文章,我要说:
“我是雪诺科技 创始人,写关于某事件的看法,风格直接有棱角,不要 AI 套话……”
现在直接说:
“写本周二的计划好的方案”
OpenClaw 自动知道:我是谁、写什么主题、什么风格、什么时候完成。
给 OpenClaw 用户的建议
如果你也在用 OpenClaw,建议按这个顺序搭建:
第一步:Method 1(必做)
- 创建
core/user-profile.md,记录你的基本信息 - 创建
core/preferences.md,记录你的偏好 - 成本:零,效果:立竿见影
第二步:Method 4(推荐)
- 初始化 SQLite 数据库
- 存储关键偏好和事实
- 成本:零,效果:精确查询
第三步:Method 3(进阶)
- 开启自动记忆提取
- 让 OpenClaw 从对话中学习
- 成本:零,效果:越来越懂你
第四步:Method 2(可选)
- 等 Kimi 开放 embedding,或配 Google / SiliconFlow
- 实现语义搜索
- 成本:低,效果:自然语言查询
写在最后
OpenClaw 是个好东西,但默认配置只是起点。
AI Agent 的真正价值,不在于单次对话多聪明,而在于长期陪伴中积累的“默契”。
四套记忆系统,就是让这种默契成为可能的基础设施。
现在我的 OpenClaw(我叫它BotFather),已经记住了:
- 我是雪诺科技 创始人,做企业浏览器安全
- 我每周二周五check项目进度,编写客户方案
- 我喜欢直接有棱角的表达,讨厌 AI 套话
- 我习惯晚上工作,经常熬夜
- 我的沟通风格、个人 IP 定位、过往的场景案例选题库……
下次对话,它不需要问“您哪位”,直接就能干活。
这才是 AI Agent 该有的样子。