
Agent四层记忆架构为什么你的Agent总是失忆你有没有这种体验跟Agent聊了三轮它还记得你之前说的偏好。聊到第十轮它开始问你之前提到过什么来着——然后就真的忘了。不是上下文窗口不够大而是记忆架构不完整。大多数Agent只有工作记忆上下文窗口没有长期记忆。就像人只有短期记忆没有长期记忆一样——每段对话都是全新的开始。一、四层记忆架构参考认知科学对人类记忆的分类Agent的记忆系统也应该分为四层。每一层的生命周期、存储方式、检索策略都不同。┌───────────┐ │ 过程记忆 (Procedural) │ ← 最持久技能和工作流程 │ 语义记忆 (Semantic) │ ← 长期事实性知识和用户偏好 │ 情节记忆 (Episodic) │ ← 中期过去的对话和事件记录 │ 工作记忆 (Working) │ ← 最短当前上下文窗口 └───────────┘1.1 工作记忆Working Memory生命周期当前会话容量限制上下文窗口大小8K-128K tokens实现方式LLM的context windowmessages列表直接注入prompt这是大多数Agent唯一拥有的记忆层。优点是零延迟不需要检索缺点是会话结束就清空而且容量有限。1.2 情节记忆Episodic Memory生命周期跨会话但有时效性存储内容过去的对话片段、行为记录、事件日志实现方式向量化存储 摘要压缩最简单的形式是结构化日志episode{timestamp:2026-06-15T10:30:00,task:帮用户分析基金持仓,result:成功用户持有3只医药ETF,user_feedback:满意要求后续定期推送医药行业分析}随着时间这些episode可以压缩成摘要减少存储和检索成本。1.3 语义记忆Semantic Memory生命周期永久除非主动删除存储内容用户偏好、事实性知识、领域概念实现方式KV StoreLangGraph store或向量数据库典型内容“用户喜欢简洁的代码风格不要过度设计”“用户的项目使用FastAPI PostgreSQL技术栈”“用户对医药板块有持仓关注创新药ETF”1.4 过程记忆Procedural Memory生命周期永久通过学习和反馈持续优化存储内容技能文档Skill、工作流程、操作规范实现方式可训练的Skill文档如SkillOpt的best_skill.md这是最接近肌肉记忆的一层。Agent通过反复执行某个任务把怎么做固化成技能文档后续执行时直接加载不需要重新学习。二、为什么大多数Agent只有工作记忆三个原因2.1 实现复杂度工作记忆是免费的——LLM天生支持上下文窗口。但要实现其他三层需要存储后端向量数据库/关系数据库/KV存储检索策略相似性搜索/时间衰减/重要性打分写入策略什么时候写、写什么、怎么压缩每一层都是额外的工程工作。2.2 延迟成本工作记忆的检索是O(1)直接注入上下文。其他记忆层的检索需要向量搜索10-50ms数据库查询5-20ms内容压缩和格式化10-100ms虽然不高但加起来会影响用户体验尤其是在实时对话场景。2.3 准确性问题从长期记忆中检索出来的内容可能是过时的、不相关的、甚至是错误的。如果检索策略不够好引入的错误信息反而会让Agent表现更差。这就是为什么大多数Agent选择只用工工作记忆——不是不知道其他层有用而是实现成本和风险太高。三、完整的工程实现以下是一个简化的四层记忆管理器实现基于CSDN上多个开源实现综合fromdataclassesimportdataclassfromdatetimeimportdatetimefromtypingimportOptional,ListdataclassclassMemoryItem:单条记忆id:strcontent:strmemory_type:str# semantic/episodic/proceduralimportance:float# 0-1重要性评分created_at:strlast_accessed:straccess_count:int0classMemoryManager:def__init__(self,vector_store,kv_store):self.vector_storevector_store# 情节语义记忆self.kv_storekv_store# 语义记忆精确查询self.working_memory[]# 工作记忆当前上下文defretrieve(self,query:str,max_items:int5):检索相关记忆# 1. 工作记忆直接返回当前上下文working_contextself._format_working_memory()# 2. 情节记忆向量搜索过去相似的任务episodesself.vector_store.search(collectionepisodic,queryquery,limitmax_items)# 3. 语义记忆精确查询用户偏好preferencesself.kv_store.get(fuser:{query.user_id}:preferences)# 4. 过程记忆加载相关技能文档skillsself._load_relevant_skills(query)return{working:working_context,episodes:episodes,preferences:preferences,skills:skills}defconsolidate(self):记忆整合把工作记忆中的重要内容转移到长期记忆# 检测重要片段基于用户反馈、任务完成度、访问频率important_itemsself._detect_important_items(self.working_memory)foriteminimportant_items:ifitem.typepreference:# 写入语义记忆self.kv_store.set(fuser:{item.user_id}:preferences,item.content)elifitem.typeevent:# 写入情节记忆self.vector_store.insert(episodic,item.to_vector())# 更新访问统计item.access_count1item.last_accesseddatetime.now().isoformat()四、存储后端选型不同记忆层适合不同的存储后端记忆层推荐存储原因工作记忆LLM上下文窗口原生支持零延迟不需要外部存储情节记忆向量数据库Qdrant/Pinecone相似性搜索适合检索相似的任务语义记忆KV StoreRedis/SQLite或图数据库Neo4j精确查询用户ID→偏好或关系查询概念之间的关联过程记忆文件系统Markdown文档或向量数据库Skill文档需要版本管理和语义搜索混合存储策略大多数生产级Agent使用向量关系KV的混合方案。向量数据库负责相似性检索关系数据库负责精确查询和关联关系KV Store负责高速缓存。五、记忆管理的三个核心机制5.1 时间衰减Time Decay不是所有记忆都永远重要。随着时间推移访问频率低的记忆应该自动降级或删除。defdecay_score(memory_item:MemoryItem)-float:计算记忆的衰减后重要性days_since_access(datetime.now()-datetime.fromisoformat(memory_item.last_accessed)).days decay_factor0.95**days_since_access# 每天衰减5%returnmemory_item.importance*decay_factor*(1memory_item.access_count*0.1)5.2 重要性打分Importance Scoring写入时评估这条记忆的重要性避免存储无用信息。打分维度用户显式标记“记住这个”→ 重要性1.0任务关键性支付信息、安全配置→ 重要性0.8访问频率被检索过的记忆→ 重要性0.5 0.1*访问次数时间新鲜度最近的信息更有用→ 重要性0.3 * (1 - days_old/365)5.3 定期整合Periodic Consolidation每隔一段时间比如每周把相关的情节记忆整合成语义记忆删除冗余信息。原始情节记忆每天产生: - 2026-06-10: 用户说喜欢简洁代码 - 2026-06-12: 用户说不要过度设计 - 2026-06-14: 用户说代码要直接不要绕弯子 整合后的语义记忆永久存储: - 用户偏好简洁直接的代码风格反对过度设计六、LangGraph中的四层记忆实现LangGraph提供了内置的记忆管理支持fromlanggraph.checkpointimportMemorySaverfromlanggraph.storeimportInMemoryStore# 工作记忆会话历史checkpointerMemorySaver()# 自动管理messages列表# 语义记忆用户偏好和长期知识storeInMemoryStore()# KV Store支持语义搜索# 情节记忆需要自己实现# 方案1用LangGraph的store存储episode用相似度搜索检索# 方案2接入外部向量数据库Qdrant/Pinecone# 过程记忆Skill文档# 方案把Skill文档存在store里Agent执行前加载七、核心结论Agent的失忆症不是上下文窗口太小而是记忆架构不完整。完整的记忆系统需要四层工作记忆——当前上下文零延迟但容量有限情节记忆——过去的事件记录需要向量搜索语义记忆——长期知识和偏好需要KV或图存储过程记忆——技能和工作流程需要可训练的Skill文档大多数Agent只有第一层。要做成真正记住用户的Agent需要把四层都实现并且做好存储选型、检索策略、记忆整合这三个工程难点。一句话总结Agent的记忆系统不是上下文窗口够不够大的问题而是你有没有给Agent装上长期记忆的问题。数据来源CSDN博客《AI Agent长期记忆工程2026让智能体真正记住一切的完整实现方案》CSDN博客《Agent系列(六)记忆管理——让Agent记住重要的事》LangGraph实现CSDN博客《AI Agent的记忆系统架构2026四种记忆类型与工程实现完全指南》开源实现多个GitHub项目中的MemoryManager代码示例综合整理LangGraph官方文档MemorySaver InMemoryStore使用指南