目录
- 摘要
- 1. 引言 - AI 的"健忘"问题
- 1.1 为什么 AI 需要记忆?
- 1.2 OpenClaw 记忆系统架构
- 1.3 记忆类型对比
- 2. MEMORY.md 长期记忆
- 2.1 什么是 MEMORY.md?
- 2.2 MEMORY.md 文件结构
- 2.3 MEMORY.md 读写规则
- 读取时机
- 写入时机
- 2.4 实战:MEMORY.md 使用示例
- 3. memory/YYYY-MM-DD.md 每日日志
- 3.1 什么是每日日志?
- 3.2 每日日志文件结构
- 3.3 日志写入时机
- 3.4 日志维护策略
- 4. memory_search 语义搜索
- 4.1 什么是语义搜索?
- 4.2 memory_search 工具详解
- 工具签名
- 返回格式
- 4.3 使用场景
- 4.4 实战:语义搜索示例
- 5. 记忆维护最佳实践
- 5.1 记忆写入原则
- 5.2 记忆分类建议
- 5.3 记忆清理策略
- 5.4 安全注意事项
- 6. 完整实战案例
- 6.1 场景:构建个性化 AI 助手
- 6.2 场景:多会话任务跟踪
- 7. 记忆系统 API 参考
- 7.1 memory_search
- 7.2 memory_get
- 7.3 自动记忆触发
- 8. 常见问题与解决
- Q1:记忆文件太大怎么办?
- Q2:如何避免记忆冲突?
- Q3:群聊中如何处理记忆?
- Q4:记忆搜索不准确怎么办?
- 9. 总结
- 9.1 核心要点
- 9.2 最佳实践清单
- 9.3 下一步
- 参考资料
热门文章推荐
OpenClaw 浏览器自动化实战
OpenClaw 多模型配置与切换详解
摘要
本文深入探讨 OpenClaw 框架中的记忆系统设计与应用。从 MEMORY.md 长期记忆机制、memory/YYYY-MM-DD.md 每日日志、memory_search 语义搜索到记忆维护策略,全面解析如何让 AI Agent 拥有持久化记忆能力。通过实际案例演示记忆的写入、检索、维护流程,帮助开发者构建具有上下文连续性的智能应用,解决 AI "健忘"问题,实现真正的个性化服务。🧠
1. 引言 - AI 的"健忘"问题
1.1 为什么 AI 需要记忆?
你是否遇到过这样的场景:
| 场景 | 问题 | 影响 |
|---|---|---|
| 多轮对话 | AI 忘记之前说过的话 | 用户体验差 |
| 个性化服务 | AI 不记得用户偏好 | 每次都要重新说明 |
| 长期任务 | AI 忘记任务进度 | 无法持续跟进 |
| 知识积累 | AI 学到的知识无法保存 | 重复学习成本高 |
传统 AI 系统的"健忘"问题,本质上是上下文窗口有限和无持久化存储导致的。OpenClaw 通过记忆系统解决了这个问题。
1.2 OpenClaw 记忆系统架构
OpenClaw 提供了三层记忆架构:
1.3 记忆类型对比
| 记忆类型 | 文件 | 用途 | 生命周期 |
|---|---|---|---|
| 长期记忆 | MEMORY.md | 用户偏好、重要决策、关键知识 | 永久 |
| 短期记忆 | memory/YYYY-MM-DD.md | 每日日志、临时记录 | 定期归档 |
| 会话记忆 | 系统管理 | 当前对话上下文 | 会话结束 |
2. MEMORY.md 长期记忆
2.1 什么是 MEMORY.md?
MEMORY.md 是 OpenClaw 的长期记忆存储,用于保存:
- 用户个人信息和偏好
- 重要决策和约定
- 项目关键上下文
- 需要跨会话记住的知识
2.2 MEMORY.md 文件结构
# MEMORY.md - 长期记忆 ## 用户信息 - 姓名:张三 - 昵称:老大 - 时区:Asia/Shanghai - 语言偏好:中文 ## 项目上下文 - 当前项目:OpenClaw 技术文章撰写 - 目标:完成100篇技术文章 - 进度:已完成40篇 ## 重要决策 - 2026-03-14:决定采用由浅入深的文章结构 - 2026-04-02:选择飞书作为主要沟通渠道 ## 待办事项 - [ ] 完成第41篇记忆系统文章 - [ ] 整理文章截图 ## 注意事项 - 用户喜欢简洁的表达风格 - 文章需要包含代码示例和图表2.3 MEMORY.md 读写规则
读取时机
根据 AGENTS.md 的规定,MEMORY.md只在主会话(Main Session)中加载:
### 🧠 MEMORY.md - Your Long-Term Memory - **ONLY load in main session** (direct chats with your human) - **DO NOT load in shared contexts** (Discord, group chats, sessions with other people) - This is for **security** — contains personal context that shouldn't leak to strangers写入时机
- 用户明确说"记住这个"
- 做出重要决策时
- 学习到需要长期保存的知识
- 用户偏好发生变化时
2.4 实战:MEMORY.md 使用示例
场景:用户告诉 AI 自己的偏好
用户:我比较喜欢简洁的表达,不要太啰嗦 AI:好的,我会记住你的偏好。让我更新 MEMORY.md...MEMORY.md 更新:
## 用户偏好 - 表达风格:简洁,不喜欢啰嗦 - 沟通语言:中文3. memory/YYYY-MM-DD.md 每日日志
3.1 什么是每日日志?
每日日志是 OpenClaw 的短期记忆存储,用于记录:
- 当天完成的任务
- 临时性的决定
- 会话中的重要信息
- 需要后续跟进的事项
3.2 每日日志文件结构
# 2026-04-13 工作记录 ## 完成的任务 ### 1. 撰写记忆系统文章 - 开始撰写第41篇文章 - 完成摘要和引言部分 ### 2. 用户反馈处理 - 用户要求调整文章结构 - 已按要求修改 ## 重要决策 - 决定将记忆系统作为独立章节 ## 待办事项 - [ ] 完成文章剩余部分 - [ ] 添加代码示例 ## 备注 - 用户今天心情不错3.3 日志写入时机
| 时机 | 内容 |
|---|---|
| 任务完成 | 记录完成的内容和结果 |
| 重要对话 | 记录用户的关键需求 |
| 问题遇到 | 记录问题和解决方案 |
| 决策做出 | 记录决策原因和结果 |
3.4 日志维护策略
4. memory_search 语义搜索
4.1 什么是语义搜索?
memory_search 是 OpenClaw 提供的语义检索工具,可以:
- 在 MEMORY.md 和每日日志中搜索相关内容
- 基于语义相似度排序
- 返回最相关的记忆片段
4.2 memory_search 工具详解
工具签名
memory_search(query:str,# 搜索查询maxResults:int=5,# 最大返回结果数minScore:float=0.5# 最小相关性分数)返回格式
{"results":[{"path":"MEMORY.md","lines":"10-15","content":"用户偏好:简洁表达风格","score":0.95},{"path":"memory/2026-04-10.md","lines":"20-25","content":"用户要求文章不要太长","score":0.82}]}4.3 使用场景
| 场景 | 查询示例 |
|---|---|
| 回忆用户偏好 | “用户的表达风格偏好” |
| 查找历史决策 | “关于文章结构的决定” |
| 定位任务进度 | “当前项目进度” |
| 检索知识点 | “OpenClaw 配置相关” |
4.4 实战:语义搜索示例
场景:用户问"我们之前讨论的文章结构是什么样的?"
# AI 内部调用memory_search(query="文章结构 讨论",maxResults=3)返回结果:
{"results":[{"path":"MEMORY.md","content":"文章结构:由浅入深,从入门到精通","score":0.91},{"path":"memory/2026-03-14.md","content":"决定采用5阶段100篇文章的规划","score":0.85}]}AI 回复:
根据之前的讨论,我们决定采用由浅入深的文章结构,分为5个阶段共100篇文章。
5. 记忆维护最佳实践
5.1 记忆写入原则
| 原则 | 说明 | 示例 |
|---|---|---|
| 重要性 | 只记录真正重要的内容 | ✅ 用户偏好 ❌ 随口闲聊 |
| 准确性 | 确保信息准确无误 | 核实后再写入 |
| 时效性 | 及时更新过时信息 | 偏好变化时更新 |
| 简洁性 | 避免冗余信息 | 提取关键点 |
5.2 记忆分类建议
# MEMORY.md 推荐结构 ## 👤 用户信息 - 基本信息 - 沟通偏好 - 时区/语言 ## 📋 项目上下文 - 当前项目 - 目标和进度 - 关键里程碑 ## 🎯 重要决策 - 决策内容 - 决策原因 - 决策时间 ## ⚠️ 注意事项 - 用户不喜欢的事情 - 需要避免的行为 - 特殊要求 ## 📝 待办事项 - 长期待办 - 需要跟进的事项5.3 记忆清理策略
5.4 安全注意事项
| 安全要求 | 说明 |
|---|---|
| 隐私保护 | 不要记录敏感个人信息 |
| 权限隔离 | MEMORY.md 不在群聊中加载 |
| 数据加密 | 敏感内容考虑加密存储 |
| 访问控制 | 限制记忆文件的访问权限 |
6. 完整实战案例
6.1 场景:构建个性化 AI 助手
目标:让 AI 记住用户偏好,提供个性化服务
步骤1:初始化 MEMORY.md
# MEMORY.md ## 用户信息 - 姓名:张龙生 - 昵称:老大 - 时区:Asia/Shanghai (GMT+8) - 飞书用户 ## 沟通偏好 - 表达风格:简洁直接,不喜欢啰嗦 - 语言:中文 - 回复格式:表格 + 代码块 ## 项目上下文 - 当前项目:OpenClaw 技术文章撰写 - 目标:完成100篇技术文章 - 已完成:40篇 ## 注意事项 - 文章需要包含 Mermaid 图表 - 代码示例要完整可运行 - 不要在群聊中透露个人信息步骤2:日常使用中更新记忆
用户:我最近在研究飞书多维表格,帮我记住 AI:好的,让我更新记忆... # 更新 MEMORY.md ## 当前关注 - 飞书多维表格(Bitable)开发步骤3:使用语义搜索回忆
用户:我之前说的文章进度是多少来着? AI:(内部调用 memory_search) 根据记忆,你已完成40篇文章,目标是100篇。6.2 场景:多会话任务跟踪
场景:用户在多个会话中推进一个长期任务
每日日志记录:
# 2026-04-13 工作记录 ## 任务进度 - 第41篇文章:记忆系统 - ✅ 完成摘要和引言 - ✅ 完成 MEMORY.md 章节 - 🔄 进行中:语义搜索章节 - ⏳ 待完成:实战案例 ## 明日计划 - 完成第41篇文章 - 开始第42篇文章跨会话恢复:
用户:昨天写到哪了? AI:(搜索 memory/2026-04-12.md) 昨天你完成了第40篇文章(多智能体协作进阶), 今天应该继续写第41篇:记忆系统。7. 记忆系统 API 参考
7.1 memory_search
# 语义搜索记忆memory_search(query="用户的偏好",# 搜索查询maxResults=5,# 返回结果数minScore=0.5# 最小相关性分数)7.2 memory_get
# 安全读取记忆片段memory_get(path="MEMORY.md",# 文件路径from=10,# 起始行lines=20# 读取行数)7.3 自动记忆触发
OpenClaw 会在以下情况自动触发记忆操作:
| 触发条件 | 操作 |
|---|---|
| 会话开始 | 读取 MEMORY.md |
| 会话结束 | 写入每日日志 |
| 用户说"记住" | 更新 MEMORY.md |
| 定时任务 | 记忆归档整理 |
8. 常见问题与解决
Q1:记忆文件太大怎么办?
解决方案:
- 定期清理过时信息
- 将详细日志归档
- 只保留关键信息在 MEMORY.md
Q2:如何避免记忆冲突?
解决方案:
- 使用时间戳标记信息
- 新信息覆盖旧信息时记录原因
- 定期审查和合并重复信息
Q3:群聊中如何处理记忆?
解决方案:
- MEMORY.md 不在群聊中加载
- 群聊信息写入单独的日志
- 敏感信息不记录到记忆
Q4:记忆搜索不准确怎么办?
解决方案:
- 优化查询关键词
- 调整 minScore 阈值
- 使用更具体的查询语句
9. 总结
9.1 核心要点
| 要点 | 说明 |
|---|---|
| 三层架构 | 长期记忆 + 短期记忆 + 语义检索 |
| 安全隔离 | MEMORY.md 只在主会话加载 |
| 语义搜索 | 基于向量相似度的智能检索 |
| 定期维护 | 清理过时信息,归档历史日志 |
9.2 最佳实践清单
- 为每个用户创建 MEMORY.md
- 每日记录工作日志
- 定期清理和归档记忆
- 使用语义搜索快速定位信息
- 注意隐私和安全保护
9.3 下一步
- 第42篇:OpenClaw 日志记忆:memory/YYYY-MM-DD.md
- 第43篇:OpenClaw memory_search:语义搜索实战
- 第44篇:OpenClaw 记忆维护:自动整理与归档
参考资料
- OpenClaw 官方文档
- OpenClaw GitHub
- AGENTS.md 记忆系统说明