构建生产级 Agent Memory 系统架构
构建生产级 Agent Memory 系统架构 很多人在做 Agent 时,第一版 Memory 的实现大概长这样: memory = [] memory.append({"role": "user", "content": "你好"}) memory.append({"role": "assistant", "content": "你好!有什么可以帮你的?"}) import java.util.*; List<Map<String, String>> memory = new ArrayList<>(); memory.add(Map.of("role", "user", "content", "你好")); memory.add(Map.of("role", "assistant", "content", "你好!有什么可以帮你的?")); 跑几天后发现问题了: 对话一长,Token 消耗爆炸 用户上次说过的偏好,下次完全不记得 多个 Session 之间的信息没法共享 想查某个历史事实,得翻完整条对话 模型在长上下文里注意力稀释,反而答得更差 于是开始往里面塞向量数据库、塞总结、塞 Graph,结果又发现:Memory 系统不是越复杂越好,而是越适合你 Agent 的行为模式越好。 这篇文章不讲泛泛的概念,而是从工程角度拆解:一个生产级的 Agent Memory 系统到底该考虑哪些维度,每种方案解决什么问题、带来什么新问题,以及如何组合它们。 目录 一、Agent Memory 到底是什么 二、整体架构:三层分离 三、Episodic Memory(情节记忆):最基础也最容易搞砸的部分 问题本质 常见实现方式对比 推荐方案:分层管理 工程实现要点 四、Semantic Memory(语义记忆):从经历中提炼事实 核心思路 提取什么 存储选型 提取策略:被动 vs 主动 关键难点:事实的更新与冲突 五、Procedural Memory(程序记忆):Agent 怎么学会"做事情的方式" 实现方式 何时写入 六、Context Builder:决定往 Prompt 里塞什么 组装策略 Token 预算分配 检索触发策略 七、数据生命周期与维护 TTL 与过期 Consolidation(合并) Importance Scoring(重要性评分) 八、从 Claude Code 中看到的优秀设计 文件即数据库 类型化记忆 检索时的验证机制 不混淆"记忆"和"任务状态" 九、主流框架的 Memory 实现案例 LangChain:模块化 Memory 体系 CrewAI:基于角色的记忆分工 Mem0:专注"记忆层"的独立框架 Spring AI:Java 生态的 Memory 实现 AgentScope4J:observe/call 分离与 MsgHub 记忆共享 Hermes Agent:四层记忆与可插拔 Provider OpenClaw:文件即记忆的"梦境"系统 AutoGen:对话驱动的记忆共享 框架对比小结:Hermes vs OpenClaw 十、生产级 Checklist 十一、总结 一、Agent Memory 到底是什么 很多人把 Memory 等同于"聊天记录",这是第一个坑。 ...