目录
-
- 摘要
- [1. 引言 - AI 的"健忘"问题](#1. 引言 - AI 的"健忘"问题)
-
- [1.1 为什么 AI 需要记忆?](#1.1 为什么 AI 需要记忆?)
- [1.2 OpenClaw 记忆系统架构](#1.2 OpenClaw 记忆系统架构)
- [1.3 记忆类型对比](#1.3 记忆类型对比)
- [2. MEMORY.md 长期记忆](#2. MEMORY.md 长期记忆)
- [3. memory/YYYY-MM-DD.md 每日日志](#3. memory/YYYY-MM-DD.md 每日日志)
-
- [3.1 什么是每日日志?](#3.1 什么是每日日志?)
- [3.2 每日日志文件结构](#3.2 每日日志文件结构)
- [3.3 日志写入时机](#3.3 日志写入时机)
- [3.4 日志维护策略](#3.4 日志维护策略)
- [4. memory_search 语义搜索](#4. memory_search 语义搜索)
- [5. 记忆维护最佳实践](#5. 记忆维护最佳实践)
-
- [5.1 记忆写入原则](#5.1 记忆写入原则)
- [5.2 记忆分类建议](#5.2 记忆分类建议)
- [5.3 记忆清理策略](#5.3 记忆清理策略)
- [5.4 安全注意事项](#5.4 安全注意事项)
- [6. 完整实战案例](#6. 完整实战案例)
-
- [6.1 场景:构建个性化 AI 助手](#6.1 场景:构建个性化 AI 助手)
- [6.2 场景:多会话任务跟踪](#6.2 场景:多会话任务跟踪)
- [7. 记忆系统 API 参考](#7. 记忆系统 API 参考)
-
- [7.1 memory_search](#7.1 memory_search)
- [7.2 memory_get](#7.2 memory_get)
- [7.3 自动记忆触发](#7.3 自动记忆触发)
- [8. 常见问题与解决](#8. 常见问题与解决)
- [9. 总结](#9. 总结)
-
- [9.1 核心要点](#9.1 核心要点)
- [9.2 最佳实践清单](#9.2 最佳实践清单)
- [9.3 下一步](#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 提供了三层记忆架构:
🧠 OpenClaw 记忆系统
🔍 语义检索 (memory_search)
向量搜索
相关性排序
上下文召回
📝 短期记忆 (memory/YYYY-MM-DD.md)
每日工作日志
临时任务记录
会话摘要
📚 长期记忆 (MEMORY.md)
用户偏好
重要决策
关键知识
项目上下文
AI Agent
1.3 记忆类型对比
| 记忆类型 | 文件 | 用途 | 生命周期 |
|---|---|---|---|
| 长期记忆 | MEMORY.md | 用户偏好、重要决策、关键知识 | 永久 |
| 短期记忆 | memory/YYYY-MM-DD.md | 每日日志、临时记录 | 定期归档 |
| 会话记忆 | 系统管理 | 当前对话上下文 | 会话结束 |
2. MEMORY.md 长期记忆
2.1 什么是 MEMORY.md?
MEMORY.md 是 OpenClaw 的长期记忆存储,用于保存:
- 用户个人信息和偏好
- 重要决策和约定
- 项目关键上下文
- 需要跨会话记住的知识
2.2 MEMORY.md 文件结构
markdown
# 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 更新:
markdown
## 用户偏好
- 表达风格:简洁,不喜欢啰嗦
- 沟通语言:中文
3. memory/YYYY-MM-DD.md 每日日志
3.1 什么是每日日志?
每日日志是 OpenClaw 的短期记忆存储,用于记录:
- 当天完成的任务
- 临时性的决定
- 会话中的重要信息
- 需要后续跟进的事项
3.2 每日日志文件结构
markdown
# 2026-04-13 工作记录
## 完成的任务
### 1. 撰写记忆系统文章
- 开始撰写第41篇文章
- 完成摘要和引言部分
### 2. 用户反馈处理
- 用户要求调整文章结构
- 已按要求修改
## 重要决策
- 决定将记忆系统作为独立章节
## 待办事项
- [ ] 完成文章剩余部分
- [ ] 添加代码示例
## 备注
- 用户今天心情不错
3.3 日志写入时机
| 时机 | 内容 |
|---|---|
| 任务完成 | 记录完成的内容和结果 |
| 重要对话 | 记录用户的关键需求 |
| 问题遇到 | 记录问题和解决方案 |
| 决策做出 | 记录决策原因和结果 |
3.4 日志维护策略
否
是
是
否
每日日志
超过7天?
保留
有重要内容?
提取到MEMORY.md
归档/删除
4. memory_search 语义搜索
4.1 什么是语义搜索?
memory_search 是 OpenClaw 提供的语义检索工具,可以:
- 在 MEMORY.md 和每日日志中搜索相关内容
- 基于语义相似度排序
- 返回最相关的记忆片段
4.2 memory_search 工具详解
工具签名
python
memory_search(
query: str, # 搜索查询
maxResults: int = 5, # 最大返回结果数
minScore: float = 0.5 # 最小相关性分数
)
返回格式
json
{
"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 实战:语义搜索示例
场景:用户问"我们之前讨论的文章结构是什么样的?"
python
# AI 内部调用
memory_search(query="文章结构 讨论", maxResults=3)
返回结果:
json
{
"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 记忆分类建议
markdown
# MEMORY.md 推荐结构
## 👤 用户信息
- 基本信息
- 沟通偏好
- 时区/语言
## 📋 项目上下文
- 当前项目
- 目标和进度
- 关键里程碑
## 🎯 重要决策
- 决策内容
- 决策原因
- 决策时间
## ⚠️ 注意事项
- 用户不喜欢的事情
- 需要避免的行为
- 特殊要求
## 📝 待办事项
- 长期待办
- 需要跟进的事项
5.3 记忆清理策略
是
否
是
否
定期检查记忆
信息是否过时?
删除或更新
是否重要?
保留在MEMORY.md
归档到日志
记录变更原因
5.4 安全注意事项
| 安全要求 | 说明 |
|---|---|
| 隐私保护 | 不要记录敏感个人信息 |
| 权限隔离 | MEMORY.md 不在群聊中加载 |
| 数据加密 | 敏感内容考虑加密存储 |
| 访问控制 | 限制记忆文件的访问权限 |
6. 完整实战案例
6.1 场景:构建个性化 AI 助手
目标:让 AI 记住用户偏好,提供个性化服务
步骤1:初始化 MEMORY.md
markdown
# MEMORY.md
## 用户信息
- 姓名:张龙生
- 昵称:老大
- 时区:Asia/Shanghai (GMT+8)
- 飞书用户
## 沟通偏好
- 表达风格:简洁直接,不喜欢啰嗦
- 语言:中文
- 回复格式:表格 + 代码块
## 项目上下文
- 当前项目:OpenClaw 技术文章撰写
- 目标:完成100篇技术文章
- 已完成:40篇
## 注意事项
- 文章需要包含 Mermaid 图表
- 代码示例要完整可运行
- 不要在群聊中透露个人信息
步骤2:日常使用中更新记忆
用户:我最近在研究飞书多维表格,帮我记住
AI:好的,让我更新记忆...
# 更新 MEMORY.md
## 当前关注
- 飞书多维表格(Bitable)开发
步骤3:使用语义搜索回忆
用户:我之前说的文章进度是多少来着?
AI:(内部调用 memory_search)
根据记忆,你已完成40篇文章,目标是100篇。
6.2 场景:多会话任务跟踪
场景:用户在多个会话中推进一个长期任务
每日日志记录:
markdown
# 2026-04-13 工作记录
## 任务进度
- 第41篇文章:记忆系统
- ✅ 完成摘要和引言
- ✅ 完成 MEMORY.md 章节
- 🔄 进行中:语义搜索章节
- ⏳ 待完成:实战案例
## 明日计划
- 完成第41篇文章
- 开始第42篇文章
跨会话恢复:
用户:昨天写到哪了?
AI:(搜索 memory/2026-04-12.md)
昨天你完成了第40篇文章(多智能体协作进阶),
今天应该继续写第41篇:记忆系统。
7. 记忆系统 API 参考
7.1 memory_search
python
# 语义搜索记忆
memory_search(
query="用户的偏好", # 搜索查询
maxResults=5, # 返回结果数
minScore=0.5 # 最小相关性分数
)
7.2 memory_get
python
# 安全读取记忆片段
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 记忆维护:自动整理与归档