Agent 记忆长期化:从短期上下文到持久知识库的架构设计
Agent 的记忆能力决定了它能否“越用越聪明”。没有记忆的 Agent 每次交互都是从零开始无法记住用户偏好、历史任务和关键事实。长期记忆系统让 Agent 能够跨越会话、跨越任务持续积累知识从而提供更个性化、更连贯的服务。本文将探讨 Agent 记忆长期化的架构设计与工程实践。一、Agent 记忆的三层模型从工程角度看Agent 记忆通常分为三个层次### 1. 短期记忆Short-Term Memory短期记忆保存当前对话或任务中的上下文通常就是 LLM 的上下文窗口内容。它的特点是- 读写速度快- 容量有限- 任务结束或会话超期后丢失pythonshort_term_memory [ {role: user, content: 帮我订一张明天去北京的高铁票}, {role: assistant, content: 好的请告诉我您的出发城市和 preferred seat class}, {role: user, content: 从上海出发prefer 商务座}]text### 2. 工作记忆Working Memory工作记忆是当前任务中需要临时维持的关键信息。例如Agent 在执行一个多步骤任务时需要记住中间结果、下一步计划和待验证假设。工作记忆通常以结构化形式存储例如pythonworking_memory { task: 预订高铁票, current_step: 查询车次, collected_info: { origin: 上海, destination: 北京, date: 2026-07-06, seat_class: 商务座 }, pending_questions: []}text### 3. 长期记忆Long-Term Memory长期记忆是跨会话、跨任务持久化的知识。它让 Agent 能够记住- 用户基本信息和偏好- 历史任务结果和反馈- 领域知识和最佳实践- 重要的实体和关系长期记忆通常需要外部存储系统如向量数据库、图数据库和关系数据库。## 二、长期记忆系统的架构设计### 1. 记忆写入不是每个交互都值得长期保存。写入长期记忆前需要经过筛选-重要性评估判断信息是否值得记忆。可以用 LLM 打分或规则判断。-去重与更新避免重复记录相同事实而是更新已有记忆。-摘要与压缩将长对话压缩为关键事实减少存储和检索成本。pythondef should_remember(message, context): prompt f判断以下信息是否值得长期记忆。值得记忆的标准- 包含用户偏好、事实或重要决策- 对未来交互有帮助- 不是临时性、可重复获取的信息信息{message}请回答YES 或 NO return llm_judge(prompt) YEStext### 2. 记忆表示长期记忆可以有不同的表示形式-文本片段原始对话或摘要适合向量检索。-实体关系用户、项目、偏好等实体及其关系适合图数据库。-键值对结构化事实如{key: user.preferred_language, value: zh}。-事件序列用户行为历史适合时序分析。### 3. 记忆检索当 Agent 处理新请求时需要从长期记忆中检索相关信息。检索策略包括-语义检索用向量相似度找到与当前查询相关的记忆。-关键词检索用 BM25 或全文搜索补充精确匹配。-图遍历从当前实体出发找到相关实体和事实。-时间衰减给近期记忆更高权重给旧记忆较低权重。pythondef recall_memories(query, user_id, k5): vector_results vector_store.search(query, user_id, kk) keyword_results keyword_index.search(query, user_id, kk) graph_results graph_db.query_related(user_id, query, kk) return rerank_and_merge(vector_results, keyword_results, graph_results)text### 4. 记忆遗忘与更新长期记忆不是只增不减。需要设计-过期机制临时信息设置过期时间。-冲突解决新记忆与旧记忆冲突时如何取舍或保留多个版本。-用户控制允许用户查看、修改、删除自己的记忆。## 三、长期记忆与 RAG、工具系统的协同长期记忆不是孤立的它需要与 RAG 和工具系统协同工作-RAG提供企业知识和外部文档长期记忆提供用户个性化信息。-工具工具调用结果可以补充或更新长期记忆。例如用户通过 Agent 预订了机票Agent 应将行程信息写入记忆。-Prompt检索到的记忆需要被恰当地组织到 prompt 中避免信息过载。pythondef build_prompt(query, user_id): memories recall_memories(query, user_id) rag_context retriever.retrieve(query) prompt f用户背景信息{memories}参考资料{rag_context}用户问题{query} return prompttext## 四、工程选型建议长期记忆系统涉及多种存储技术常见组合-向量数据库Milvus、Qdrant、Weaviate、Pinecone用于语义检索。-图数据库Neo4j、NebulaGraph用于实体关系推理。-关系数据库PostgreSQL、MySQL用于结构化事实和事务性更新。-缓存Redis用于短期记忆和快速访问。-对象存储S3、MinIO用于存储原始对话和多媒体记忆。## 五、总结Agent 记忆的长期化是 Agent 从“玩具”走向“产品”的必经之路。短期记忆保证对话连贯工作记忆支撑任务执行长期记忆赋予 Agent 个性化和持续学习能力。构建长期记忆系统需要解决写入、表示、检索、更新和遗忘等一系列工程问题并与 RAG、工具系统深度协同。对于希望打造真正智能 Agent 的团队来说记忆架构的设计优先级不应低于模型选择和工具集成。