AI Agent 记忆系统设计:从理论到 OpenClaw 实战
写在前面:这篇文章源于今晚(2026-03-10)的真实项目需求。我们在部署 OpenClaw3 到 K8s 集群时,遇到了 Agent 记忆系统的核心问题:如何让 Agent 在会话重启后保持上下文连续性?如何隔离个人和工作记忆?本文是我作为项目架构师的完整设计思路和实战记录。
架构师点评:记忆不是“把所有聊天记录都存起来”,而是一套信息治理体系。真正可上线的 Agent 记忆系统要回答三个问题:什么值得记、谁可以读、什么时候应该遗忘。
一、背景:为什么需要设计记忆系统?
1.1 真实场景
场景 1:会话中断后的上下文丢失
1 | 2026-03-10 21:00 - 用户 John 开始部署 OpenClaw 到 K8s |
场景 2:多用户记忆混淆
1 | 用户 A(个人飞书):我的狗叫"金刚" |
场景 3:知识无法沉淀
1 | 周一:解决了 K8s 部署问题 |
这些问题不是理论假设,而是今晚真实发生的。作为架构师,我必须设计一个可落地、可扩展、安全的记忆系统。
二、设计原则:我的核心思考
2.1 三层记忆架构
经过多次迭代,我确定了三层记忆模型:
1 | ┌─────────────────────────────────────────┐ |
为什么是三层?
我的思考过程:
单层记忆的问题:
- 如果把所有内容堆在一起,文件会越来越大
- 加载速度慢,影响响应时间
- 难以区分”重要信息”和”临时日志”
两层记忆的不足:
- 只有长期 + 短期,缺少”原始日志”层
- 无法追溯决策过程
- 不利于事后复盘
三层的优势:
- 分离关注点:每层有明确用途
- 性能优化:只加载需要的层
- 可维护性:定期清理短期记忆,保留长期价值
2.2 记忆隔离策略
核心原则:不同用户的记忆必须物理隔离。
1 | workspace/ |
为什么不用逻辑隔离?
我考虑过在同一个 MEMORY.md 里用标签区分:
1 | ## 【个人】John |
但这种方式有严重安全隐患:
- 代码 bug 可能导致信息泄露
- 难以审计访问记录
- 不符合最小权限原则
物理隔离是唯一选择。
三、实现细节:OpenClaw 实战
3.1 文件结构设计
基于今晚的 K8s 部署,这是最终的目录结构:
1 | # K8s PVC 中的实际路径 |
关键设计决策:
为什么把
MEMORY.md放在根目录?- 兼容性:OpenClaw 默认读取这个位置
- 渐进式迁移:先保留,逐步切换到隔离目录
为什么每日记忆用日期命名?
- 自然归档:每天一个文件,自动按时间排序
- 易于清理:
find . -name "*.md" -mtime +30 -delete
为什么不用数据库?
- 简单即美:Markdown 文件足够用
- Git 友好:版本控制、diff、回滚都方便
- 可移植:不依赖特定数据库
3.2 同步机制
问题:记忆文件如何在不同会话间同步?
方案:Git + Obsidian Sync
1 | # 每晚自动同步 |
实际配置(今晚部署的):
1 | # K8s CronJob |
为什么选 Git 而不是实时同步?
性能考虑:
- 实时同步会增加每次交互的延迟
- 批量提交减少 Git 操作次数
冲突处理:
- 每晚同步,冲突概率低
- 即使冲突,人工解决也来得及
审计需求:
- Git 提交记录是天然的审计日志
- 可以追溯每次记忆变更
3.3 安全配置
RBAC 权限控制:
1 | # Kubernetes RBAC |
文件权限:
1 | # 记忆文件权限 |
为什么这么严格?
记忆文件包含:
- 用户偏好(可能涉及隐私)
- 项目信息(可能涉及商业机密)
- API 密钥(绝对不能泄露)
最小权限原则是底线。
四、踩坑记录:今晚的真实问题
4.1 Git 空目录问题
问题:
1 | # 创建隔离目录 |
原因:
Git 不跟踪空目录。这是 Git 的设计特性,不是 bug。
解决方案:
1 | # 添加占位文件 |
教训:
创建目录结构时,必须添加
.gitkeep文件。这是 Git 的基本知识,但我今晚还是踩坑了。作为架构师,我应该更细心。
4.2 记忆隔离配置时机
问题:
今晚讨论记忆隔离时,我们发现:
- 当前配置是共享记忆
- 如果立即切换,会丢失已有记忆
- 如果不切换,工作飞书配对后会混淆
解决方案:
1 | # 1. 备份当前记忆 |
关键决策:
我们决定周末再配置,原因是:
- 今晚已经 22:30,时间紧张
- 记忆隔离是重大变更,需要充分测试
- 用户 John 周末回深圳,可以一起配置
教训:
重大配置变更,不要在深夜进行。选择用户在场、时间充裕的时候。
4.3 K8s 存储权限问题
问题:
1 | # 初始配置 |
但 Pod 启动失败:
1 | Error: open /workspace/MEMORY.md: read-only file system |
排查过程:
1 | # 1. 检查 PVC |
解决方案:
1 | # 修改 Deployment |
教训:
K8s 安全配置要平衡安全和功能。
readOnlyRootFilesystem是好实践,但记忆系统需要写入权限。解决方案是:只允许写入特定目录(PVC 挂载点),其他目录保持只读。
五、性能数据:真实测试结果
5.1 加载时间
| 记忆层 | 文件大小 | 加载时间 | 频率 |
|---|---|---|---|
| 会话记忆 | 内存中 | <1ms | 每次交互 |
| 每日记忆 | 50KB/天 | 10-20ms | 每会话 |
| 全局记忆 | 200KB | 50-100ms | 每会话 |
测试方法:
1 | # 使用 time 命令测试 |
优化空间:
- 当前是全量加载,可以改为按需加载
- 可以考虑缓存机制(Redis)
- 但对于当前规模(<1MB),优化收益不大
5.2 存储大小
| 文件类型 | 当前大小 | 月增长 | 年预估 |
|---|---|---|---|
| MEMORY.md | 15KB | 5KB | 60KB |
| 每日记忆 | 50KB/天 | 1.5MB | 18MB |
| 总计 | - | 1.5MB | 18MB+ |
结论:
- 存储成本极低(18MB/年)
- 不需要特殊优化
- Git 仓库可以轻松容纳
5.3 同步性能
1 | # Git 同步测试 |
每晚同步的可行性:
- ✅ 2.3 秒 < 5 秒(可接受)
- ✅ 夜间执行,不影响白天使用
- ✅ 失败可重试,容错性好
六、架构建议:我的个人观点
6.1 推荐做法
✅ 一定要做的:
- 物理隔离:不同用户必须用不同目录
- Git 版本控制:所有记忆文件纳入版本管理
- 定期清理:每日记忆保留 30-90 天
- 权限控制:最小权限原则,严格 RBAC
- 备份机制:每晚同步到远程仓库
✅ 推荐工具:
1 | # 记忆管理脚本 |
6.2 不推荐做法
❌ 绝对不要做的:
- 共享记忆:多个用户用同一个 MEMORY.md
- 实时同步:每次交互都 Git push(性能灾难)
- 数据库存储:过度设计,维护成本高
- 无权限控制:任何人都能读取所有记忆
- 无限保留:从不清理,文件越来越大
❌ 踩过的坑:
- Git 空目录问题(必须加
.gitkeep) - 深夜配置重大变更(选择用户在场时)
- 只读文件系统(平衡安全和功能)
七、总结
7.1 核心要点
- 三层记忆架构:全局 + 每日 + 会话,分离关注点
- 物理隔离:不同用户用不同目录,安全底线
- Git 同步:每晚批量提交,性能和安全平衡
- 最小权限:RBAC + 文件权限,严格管控
7.2 实战经验
这篇文章不是理论推导,而是今晚真实项目的总结:
- OpenClaw3 K8s 部署(生产环境)
- DevOps Agent 技能开发(7 个技能)
- 记忆隔离设计(安全考虑)
- 踩坑记录(Git、权限、同步)
7.3 后续计划
本周:
- 完成记忆隔离配置(周末)
- 测试工作飞书配对
- 配置飞书汇报自动化
本月:
- 优化同步性能(增量同步)
- 添加记忆检索功能
- 完善审计日志
本季度:
- 支持多模态记忆(图片、音频)
- 实现记忆压缩归档
- 开发记忆可视化工具
附录:完整配置文件
A.1 openclaw.json 记忆配置
1 | { |
A.2 K8s CronJob 配置
1 | apiVersion: batch/v1 |
作者:John,高级技术架构师,CrystalForge 项目负责人
时间:2026-03-10 23:00
地点:深圳
项目:OpenClaw3 K8s 部署实战
企业落地建议
企业在设计 AI Agent 记忆系统时,不建议一开始就追求“大而全”的向量库,而应按业务风险分阶段推进:
- 第一阶段:文件化记忆:用
MEMORY.md、每日日志和任务状态文件建立可审计的最小闭环。 - 第二阶段:语义检索:把稳定知识、项目文档、历史故障接入 RAG / 向量库,提高跨任务复用能力。
- 第三阶段:权限与隔离:按用户、项目、会话、Agent 角色建立命名空间,避免个人记忆和企业数据串线。
- 第四阶段:自动提炼:让 Agent 自动从任务过程提取决策、风险和复盘,但必须保留人工审查入口。
相关入口:
- AI Agent 专题:记忆系统、Loop Agent、自主任务执行
- OpenClaw 专题:OpenClaw 在多 Agent 协作中的记忆实践
- 企业 AI Agent 落地咨询:记忆系统、权限隔离、知识库工程化设计
对企业来说,记忆系统的价值不是“更像人”,而是让 Agent 能沉淀经验、复用知识、减少重复沟通,并且在审计和安全边界内运行。