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) == "YES"text### 2. 记忆表示长期记忆可以有不同的表示形式:-文本片段:原始对话或摘要,适合向量检索。-实体关系:用户、项目、偏好等实体及其关系,适合图数据库。-键值对:结构化事实,如{"key": "user.preferred_language", "value": "zh"}。-事件序列:用户行为历史,适合时序分析。### 3. 记忆检索当 Agent 处理新请求时,需要从长期记忆中检索相关信息。检索策略包括:-语义检索:用向量相似度找到与当前查询相关的记忆。-关键词检索:用 BM25 或全文搜索补充精确匹配。-图遍历:从当前实体出发,找到相关实体和事实。-时间衰减:给近期记忆更高权重,给旧记忆较低权重。pythondef recall_memories(query, user_id, k=5): vector_results = vector_store.search(query, user_id, k=k) keyword_results = keyword_index.search(query, user_id, k=k) graph_results = graph_db.query_related(user_id, query, k=k) 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 的团队来说,记忆架构的设计优先级不应低于模型选择和工具集成。