Appearance
OpenClaw memory 记忆系统深度教程:让 AI 真正记住你的对话
每次对话都是全新开始?AI 不记得上次聊过什么?记忆系统让 OpenClaw 跨会话持久保存信息,真正实现"我记得你"。
为什么需要记忆系统?
无记忆的问题
会话 1:
用户:我叫张三,是前端工程师
Agent:好的,张三,有什么可以帮你的?
会话 2(新会话):
用户:帮我写一段代码
Agent:好的,请问你用什么语言?—— ❌ 不记得用户是前端工程师有记忆的效果
会话 1:
用户:我叫张三,是前端工程师
Agent:好的,张三,已记住你的职业是前端工程师。
会话 2(新会话):
用户:帮我写一段代码
Agent:好的张三,作为前端工程师,我用 JavaScript 帮你写:—— ✅ 记住了用户信息记忆系统架构
三级记忆模型
┌─────────────────────────────────────────────────────────────┐
│ 记忆系统架构 │
└─────────────────────────────────────────────────────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 短期记忆 │ │ 工作记忆 │ │ 长期记忆 │
│ (Session) │ │ (Context) │ │ (Persist) │
├─────────────┤ ├─────────────┤ ├─────────────┤
│ 当前会话 │ │ 最近N轮对话 │ │ 永久存储 │
│ 自动管理 │ │ 自动管理 │ │ 需主动记录 │
│ 会话结束清除│ │ 滑动窗口 │ │ 跨会话保留 │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
▼ ▼ ▼
对话历史 上下文窗口 MEMORY.md
(Context) + 向量数据库记忆文件结构
~/.openclaw/
├── MEMORY.md # 长期记忆主文件
├── memory/ # 记忆目录
│ ├── 2026-04-01.md # 每日笔记
│ ├── 2026-04-02.md
│ └── 2026-04-03.md
├── knowledge/ # 知识库
│ ├── project-info.md
│ └── user-preferences.md
└── .memory-index/ # 向量索引(自动生成)
└── embeddings.jsonMEMORY.md 配置
基本结构
markdown
# 长期记忆
## 用户资料
- 姓名:张三
- 职业:前端工程师
- 技术栈:React, TypeScript, Node.js
- 偏好:代码简洁、注释详细
## 项目信息
- 当前项目:电商后台管理系统
- 技术选型:Next.js + Prisma + PostgreSQL
- Git 仓库:github.com/zhangsan/ecommerce-admin
## 工作习惯
- 代码风格:ESLint + Prettier
- 提交规范:Conventional Commits
- 工作时间:9:00-18:00
## 重要决策
- 2026-04-01:决定使用 PostgreSQL 替代 MySQL
- 2026-04-03:引入 Redis 做缓存层
## 待办事项
- [ ] 完成用户模块开发
- [ ] 编写 API 文档
- [ ] 配置 CI/CD记忆写入规范
markdown
## 格式规范
### 决策记录
- 日期:YYYY-MM-DD
- 决策内容:一句话描述
- 原因:为什么这样决定
### 项目信息
- 保持简洁
- 定期更新
- 删除过期信息
### 用户偏好
- 具体明确
- 可操作性强记忆操作
写入记忆
手动写入:
用户:记住,我习惯用 4 空格缩进
Agent:好的,已记录到长期记忆:
## 编码偏好
- 缩进:4 空格
- 原因:团队规范自动写入:
json
{
"memory": {
"auto_save": true,
"save_triggers": [
"用户说「记住」",
"用户说「别忘了」",
"做出重要决策时"
]
}
}读取记忆
用户:我上次说用什么数据库来着?
Agent:[搜索记忆]
根据长期记忆记录:
- 2026-04-01 决定使用 PostgreSQL
- 原因:更好的 JSON 支持、更强的查询能力搜索记忆
用户:搜索我关于缓存的决策
Agent:[执行 memory_search]
找到相关记忆:
1. 2026-04-03:引入 Redis 做缓存层
- 原因:提升 API 响应速度
2. 2026-04-05:缓存策略讨论
- 结论:热点数据缓存 5 分钟更新记忆
用户:更新一下,我现在用 Tab 缩进了
Agent:好的,已更新记忆:
## 编码偏好
- 缩进:Tab(原:4 空格)
- 更新时间:2026-04-08删除记忆
用户:删除我关于 Redis 的决策记录
Agent:确认删除以下记忆?
- 2026-04-03:引入 Redis 做缓存层
用户:确认
Agent:已删除。相关记录已从 MEMORY.md 移除。记忆搜索与检索
语义搜索
bash
# 命令行搜索
openclaw memory search "数据库选型"搜索结果:
1. MEMORY.md#重要决策
> 2026-04-01:决定使用 PostgreSQL 替代 MySQL
> 相似度:0.92
2. memory/2026-04-01.md
> 今天讨论了数据库选型,最终决定用 PostgreSQL...
> 相似度:0.87配置向量检索
json
{
"memory": {
"vector_search": {
"enabled": true,
"provider": "local",
"embedding_model": "text-embedding-3-small",
"dimensions": 1536
}
}
}搜索 API
javascript
// 记忆搜索调用
const results = await memorySearch({
query: "用户偏好",
top_k: 5,
min_score: 0.7
});每日笔记
自动创建
json
{
"memory": {
"daily_notes": {
"enabled": true,
"auto_create": true,
"template": "# {date} 工作记录\n\n## 完成事项\n\n## 遇到问题\n\n## 明日计划\n"
}
}
}每日笔记格式
markdown
# 2026-04-08 工作记录
## 完成事项
- 完成用户登录模块
- 配置 JWT 认证
- 编写单元测试
## 遇到问题
- CORS 配置问题,已解决
- Token 过期时间设置过短,调整为 24h
## 明日计划
- 开始权限模块开发
- 对接第三方登录
## 关键决策
- 选择 JWT 而非 Session:更易扩展、支持分布式每日总结
用户:生成今日工作总结
Agent:[读取每日笔记]
# 2026-04-08 工作总结
## 产出
- 代码:用户登录模块(300 行)
- 测试:单元测试 5 个
- 文档:API 文档更新
## 问题解决
- CORS 问题:添加 allowedOrigins 配置
- Token 问题:过期时间从 1h 调整为 24h
## 明日重点
- 权限模块开发
- 第三方登录对接记忆优化技巧
技巧一:结构化记录
markdown
## ❌ 糟糕的记录
记得用 PostgreSQL,Redis 缓存,还要配置好 JWT。
## ✅ 好的记录
## 技术栈决策
| 组件 | 选型 | 原因 |
|------|------|------|
| 数据库 | PostgreSQL | JSON 支持、查询能力强 |
| 缓存 | Redis | 高性能、支持过期 |
| 认证 | JWT | 无状态、易扩展 |技巧二:分类存储
memory/
├── user/ # 用户相关信息
│ ├── profile.md
│ └── preferences.md
├── project/ # 项目相关信息
│ ├── tech-stack.md
│ └── decisions.md
└── daily/ # 每日记录
├── 2026-04-01.md
└── 2026-04-02.md技巧三:定期清理
bash
# 清理过期记忆
openclaw memory clean --older-than 30d
# 归档旧记忆
openclaw memory archive --before 2026-01-01技巧四:关键信息高亮
markdown
## 重要决策
> ⚠️ **关键决策**:使用 PostgreSQL 替代 MySQL
> - 时间:2026-04-01
> - 影响:所有数据模型需重新设计
> - 不可逆:已迁移数据技巧五:关联记忆
markdown
## 用户认证模块
相关记忆:
- [[2026-04-03]] JWT 配置
- [[2026-04-05]] Token 过期策略
- [[tech-stack]] 认证技术选型记忆与技能联动
在技能中使用记忆
yaml
---
name: 项目助手
permissions: [memory]
memory_access: true
---
# 项目助手
## 记忆使用
1. 启动时读取用户偏好
2. 执行时参考历史决策
3. 完成后更新项目进度
## 执行流程
1. 读取 MEMORY.md 获取用户信息
2. 根据用户偏好生成代码
3. 记录本次操作到每日笔记记忆驱动的行为
用户:写一个登录组件
Agent:[读取记忆]
根据你的偏好:
- 使用 React 函数组件
- TypeScript 类型定义
- Tailwind CSS 样式
- 4 空格缩进
正在生成代码...高级配置
记忆容量控制
json
{
"memory": {
"limits": {
"max_memory_size": "10MB",
"max_daily_notes": 90,
"auto_archive_after": 180
}
}
}记忆同步
json
{
"memory": {
"sync": {
"enabled": true,
"provider": "git",
"remote": "git@github.com:user/openclaw-memory.git",
"auto_push": true
}
}
}记忆加密
json
{
"memory": {
"encryption": {
"enabled": true,
"sensitive_fields": ["password", "api_key", "secret"],
"algorithm": "aes-256-gcm"
}
}
}常见问题
问题一:记忆不生效
原因: 未启用记忆权限
解决:
json
{
"permissions": ["memory"]
}问题二:记忆搜索不到
原因: 向量索引未建立
解决:
bash
openclaw memory rebuild-index问题三:记忆文件过大
原因: 长期未清理
解决:
bash
# 查看记忆大小
openclaw memory stats
# 归档旧记忆
openclaw memory archive --before 2025-01-01
# 压缩记忆
openclaw memory compress问题四:敏感信息泄露
原因: 明文存储敏感数据
解决:
json
{
"memory": {
"encryption": {
"enabled": true
}
}
}或避免记录敏感信息:
markdown
## ❌ 不要这样记录
API Key: sk-xxxxx
## ✅ 这样记录
API Key 已配置到环境变量 OPENAI_API_KEY最佳实践
实践一:记录关键决策
每次重要决策都记录原因,方便未来回顾。
实践二:保持更新
项目信息、技术栈变化及时更新,避免记忆过时。
实践三:分类管理
不同类型信息分文件存储,提高检索效率。
实践四:定期回顾
每周回顾记忆内容,清理过时信息,补充新信息。
实践五:安全意识
敏感信息加密或避免记录,防止泄露。
总结
| 功能 | 操作 |
|---|---|
| 写入记忆 | 用户说"记住"或手动编辑 MEMORY.md |
| 读取记忆 | Agent 自动读取或用户查询 |
| 搜索记忆 | openclaw memory search |
| 更新记忆 | 手动编辑或对话中更新 |
| 删除记忆 | 手动删除或 memory clean |
记忆系统核心价值:
- 跨会话持久保存信息
- 让 AI "认识" 用户
- 积累项目知识
- 辅助决策参考
关键原则:
- 结构化记录,便于检索
- 定期清理,保持精简
- 分类存储,提高效率
- 安全意识,保护敏感信息
记忆系统是 OpenClaw 的核心能力之一。用好记忆,让 AI 真正成为"认识你"的助手,而不是每次都从零开始。
