71-Agent记忆系统-短期记忆-长期记忆-向量知识库三层架构
2026/7/22 1:34:38 网站建设 项目流程

文章目录

  • 【71.Python+AI】Agent记忆系统:短期记忆、长期记忆与外部知识库的三层架构
    • 导入语
    • 1 ~> 三层记忆架构总览
      • 1.1 三层分工对照
    • 2 ~> 短期记忆:对话历史的管理
      • 2.1 核心矛盾:窗口有限,对话无限
      • 2.2 实现:窗口+摘要混合
    • 3 ~> 长期记忆:用户画像的持久化
      • 3.1 从对话中提炼"关于用户的事实"
      • 3.2 画像的使用时机
    • 4 ~> 外部知识库:经验库的沉淀
      • 4.1 与RAG的区别
      • 4.2 写入时机的把关
    • 5 ~> 三层记忆的读写时机总表
    • 思考 && 总结
    • 结尾

【71.Python+AI】Agent记忆系统:短期记忆、长期记忆与外部知识库的三层架构

📖文章简介:本文系统讲解Agent记忆系统的三层架构设计:短期记忆(对话历史的Token预算管理)、长期记忆(用户画像与偏好的跨会话积累)和外部知识库(向量数据库中沉淀的"经验库")。文章拆解每层的存储介质、读写时机和淘汰策略——短期记忆用滑动窗口+摘要压缩、长期记忆用结构化Profile持久化、经验库用向量检索按需召回,并给出一个三层记忆整合的Python实现骨架。配以Mermaid架构图展示记忆读写时机与数据流向,适合正在开发多轮对话Agent、被"聊着聊着就忘了"问题困扰的开发者。


🎬 个人主页:源码骑士

专栏传送门:《Android开发基础》《python基础课程》

⭐️热衷从源码视角拆解技术底层原理,将复杂架构讲得通俗易懂


🎬 源码骑士的简介:
5年Android Framework系统开发经验,曾主导多项系统级性能优化专项
技术栈覆盖Android系统全链路(Binder/Handler/AMS/WMS/启动流程)及Java后端全家桶(Spring + MyBatis + Redis + Oracle)
累计产出原创技术文章100+篇,文章以流程图为特色,被读者评价为"看一篇胜过啃一周源码"


导入语

你跟AI助手聊了半小时,它还记得你第一句说的"我对海鲜过敏"吗?下周再打开它,它还能叫出你的名字吗?

如果两个问题的答案都是"不能",那你的Agent就没有真正的记忆系统——它只是一个"金鱼脑":所有的上下文都活在当前的对话窗口里,窗口满了就丢,会话结束就清零。

真正可用的Agent需要三层记忆:对话内记住说过什么、跨会话记住你是谁、永久记住它积累的经验。这篇文章就把这三层怎么设计、怎么配合讲清楚。


1 ~> 三层记忆架构总览

用户输入

记忆读取层

短期记忆
对话历史窗口

长期记忆
用户画像 Profile

外部知识库
向量经验库

LLM 推理

Agent 响应

记忆写入层

追加对话历史

更新用户画像

沉淀有价值的经验

1.1 三层分工对照

层级存什么存活周期存储介质类比
短期记忆当前对话的上下文单次会话内存/Redis人类的"工作记忆"
长期记忆用户偏好、习惯、画像永久数据库(结构化)你对老朋友的了解
外部知识库任务经验、领域知识永久向量数据库笔记本和资料库

2 ~> 短期记忆:对话历史的管理

2.1 核心矛盾:窗口有限,对话无限

LLM的上下文窗口是硬约束(比如128K tokens)。对话一长,必须做取舍:

策略做法缺点
滑动窗口只保留最近N轮早期关键信息被丢弃
摘要压缩老对话交给LLM总结成摘要摘要本身消耗Token和调用次数
窗口+摘要最近N轮原文 + 更早的摘要实现稍复杂,但效果最好(推荐)

2.2 实现:窗口+摘要混合

classShortTermMemory:def__init__(self,window_size=10,llm=None):self.window_size=window_size self.llm=llm self.recent=[]# 最近N轮原文self.summary=""# 更早历史的压缩摘要defadd_turn(self,user_msg,ai_msg):self.recent.append({"user":user_msg,"assistant":ai_msg})iflen(self.recent)>self.window_size:# 挤出的最早一轮,合并进摘要overflow=self.recent.pop(0)self.summary=self.llm.invoke(f"把这段对话合并进现有摘要,保持关键信息:\n"f"现有摘要:{self.summary}\n新增对话:{overflow}").contentdefget_context(self):returnf"历史摘要:{self.summary}\n最近对话:{self.recent}"

3 ~> 长期记忆:用户画像的持久化

3.1 从对话中提炼"关于用户的事实"

每轮对话结束后,让LLM提取值得长期记住的信息:

EXTRACT_PROMPT="""从以下对话中提取关于用户的持久化事实(偏好/身份/习惯), 以JSON列表返回,没有则返回[]。 已有画像:{existing_profile} 新对话:{conversation} 只返回新增的、不重复的事实,如: ["用户对海鲜过敏", "用户是Python后端开发", "用户偏好简洁的回答"]"""classLongTermMemory:def__init__(self,db_path="profiles.db"):self.db=sqlite3.connect(db_path)defupdate_profile(self,user_id,new_facts):"""增量合并新事实到用户画像"""profile=self.load_profile(user_id)forfactinnew_facts:iffactnotinprofile["facts"]:profile["facts"].append(fact)self.save_profile(user_id,profile)

3.2 画像的使用时机

画像不是每轮都全部注入——而是在生成回复前,作为System Prompt的一部分:

system_prompt=f"""你是用户的私人助手。 已知用户信息:{profile['facts']}请在回答时考虑这些背景,但不要主动复述。"""

4 ~> 外部知识库:经验库的沉淀

4.1 与RAG的区别

普通RAG的知识是"别人写的文档",经验库的知识是**“Agent自己干过的事”**:

classExperienceMemory:def__init__(self,vector_store):self.store=vector_storedefsave_experience(self,task,solution,success):"""把一次成功任务的解法沉淀进经验库"""ifsuccess:self.store.add_texts([f"任务:{task}\n解法:{solution}"])defrecall(self,new_task,top_k=3):"""遇到相似任务时召回历史经验"""returnself.store.similarity_search(new_task,k=top_k)# 使用exp=ExperienceMemory(chroma_store)# 执行新任务前,先查经验similar=exp.recall("批量处理1000条客服对话并分类")ifsimilar:prompt=f"参考历史经验:{similar}\n\n新任务:..."

4.2 写入时机的把关

经验库最大的坑是垃圾进垃圾出——失败的尝试、错误的结论如果被沉淀,会污染后续召回。两条原则:

  1. 只有用户确认满意的结果才入库(用户给了正反馈才save)
  2. 入库前让LLM做一次泛化(把具体的"1000条客服对话"抽象为"大批量文本分类任务")

5 ~> 三层记忆的读写时机总表

时机短期记忆长期记忆经验库
收到新输入时读取全文读取画像相似任务召回
生成回复时注入上下文注入System Prompt注入参考经验
每轮对话后追加+压缩提炼新事实不写入
任务完成被认可时沉淀成功经验

思考 && 总结

  1. 记忆不是单一概念,而是三种不同生命周期的系统:短期管"这次对话"、长期管"这个用户"、经验库管"这个Agent的成长"。
  2. 短期记忆的最优解是窗口+摘要:单纯滑动窗口会丢关键信息,纯摘要又会丢失细节,混合策略是工程上的最佳平衡。
  3. 长期记忆的关键是"增量提炼"而非"全文存储":把对话原文全存下来既浪费又难用,提炼成事实列表才有价值。
  4. 经验库要严格把关写入质量:宁缺毋滥——一条错误的经验,会污染之后无数次相似任务的召回。

没有记忆系统的Agent只是聊天机器人,有三层记忆的Agent才开始像一个"越用越懂你的助手"。


结尾

各位小伙伴,本文的内容到这里就全部结束了,源码骑士在这里再次感谢您的阅读!

源码骑士 — Android Framework & 全栈开发

👀关注:跟博主一起从源码视角深耕底层原理,见证每一次成长

❤️点赞:让优质内容被更多人看见,让知识传递更有力量

收藏:把核心知识点存好,在需要时随时查、随时用

💬评论:分享你的经验或疑问,评论区一起交流避坑

🔄一键四连:不要忘记给博主"一键四连"哦!

🗡️寄语:技术之路难免有困惑,但同行的人会让前进更有方向

结语:人类靠记忆建立信任,Agent也一样。把三层记忆搭好,你的Agent就从"每次见面都重新认识"进化成了"老朋友"。不要忘记给博主"一键四连"哦!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询