当前位置: 首页 > news >正文

AI Agent 的记忆系统:短期记忆、长期记忆与工作记忆

AI Agent 的记忆系统:短期记忆、长期记忆与工作记忆

一、为什么 AI Agent 需要记忆?

想象一下这个场景:你让一个 AI 助手帮你规划一次旅行。它推荐了北京的故宫,你回复说"我腿脚不太方便,需要少走路"。结果它下一句推荐你去爬长城。你会有什么感觉?——“它根本没记住我刚才说了什么。”

这就是没有记忆的 AI Agent 的典型表现。每一次对话都是"初次见面",每一次请求都从零开始。这种体验在简单的单轮问答中勉强可以接受,但对于需要多步推理、持续协作的复杂任务,记忆是 Agent 从"工具"升级为"伙伴"的关键拼图

从认知科学借鉴,AI Agent 的记忆系统通常划分为三层:

记忆类型人类类比AI Agent 实现典型容量生命周期
短期记忆当前对话中记住的上下文滑动窗口、对话历史4K-128K tokens单次会话
长期记忆你记得上周学了什么向量数据库 + RAG百万级向量跨会话持久
工作记忆做菜时"下一步放盐"结构化 planning + scratchpad有限槽位单任务周期

本文将深入每一层的设计原理、实现方案和工程优化,并给出可直接运行的 Python 代码示例。

二、短期记忆:对话窗口内的上下文管理

2.1 核心问题

大语言模型(LLM)的上下文窗口是有限的。即使在 2026 年,128K token 的窗口已很常见,长对话仍然会超出窗口。更关键的是:并非窗口内的所有信息都同等重要。将 30 轮对话全部塞入 prompt,不仅浪费 token,还会稀释关键信息——这就是著名的“Lost in the Middle”现象。

2.2 常见策略

策略一:滑动窗口(Naive Sliding Window)

最简单粗暴的方式——只保留最近 N 轮对话。

fromcollectionsimportdequeclassSlidingWindowMemory:"""最简单的短期记忆实现——滑动窗口"""def__init__(self,max_turns:int=10):self.messages=deque(maxlen=max_turns*2)# 每轮 user+assistantdefadd_user_message(self,content:str):self.messages.append({"role":"user","content":content})defadd_assistant_message(self,content:str):self.messages.append({"role":"assistant","content":content})defget_messages(self):returnlist(self.messages)# 使用示例memory=SlidingWindowMemory(max_turns=5)memory.add_user_message("帮我分析这份代码的性能问题")memory.add_assistant_message("我发现第 23 行的循环可以向量化...")# ... 多轮对话后,旧消息自动淘汰

滑动窗口的问题是关键信息可能在窗口外——比如用户在对话开头提到的特定约束条件。

策略二:摘要压缩(Conversation Summarization)

用 LLM 定期将旧对话压缩为摘要,释放 token 空间:

importopenaifromtypingimportOptionalclassSummarizationMemory:"""摘要压缩记忆:定期将旧对话压缩为摘要"""def__init__(self,client:openai.OpenAI,summary_interval:int=8):self.client=client self.summary_interval=summary_interval self.messages:list[dict]=[]self.summary:Optional[str]=Nonedefadd_and_compact(self,role:str,content:str)->list[dict]:self.messages.append({"role":role,"content":content})# 超过阈值时触发压缩iflen(self.messages)>=self.summary_interval:self._summarize()# 返回当前有效上下文:摘要 + 最近消息context=[]ifself.summary:context.append({"role":"system","content":f"【历史对话摘要】{self.summary}"})context.extend(self.messages)returncontextdef_summarize(self):old_messages=self.messages[:self.summary_interval//2]self.messages=self.messages[self.summary_interval//2:]response=self.client.chat.completions.create(model="gpt-4o-mini",messages=[{"role":"system","content":"将以下对话压缩为一段简洁摘要,保留关键信息。"},{"role":"user","content":str(old_messages)}])self.summary=response.choices[0].message.content

摘要压缩的局限性在于信息会逐渐失真——类似于传话游戏,每一次压缩都是一次有损转换。

策略三:混合方案(推荐)

实际生产中最常用的是混合方案:关键信息提取 + 滑动窗口。将用户偏好、约束条件等关键信息单独存储(类似长期记忆),而对话流本身用滑动窗口管理。

classHybridShortTermMemory:"""混合短期记忆:关键信息持久 + 对话流滑动"""def__init__(self,max_turns:int=10):self.key_info:dict[str,str]={}# 关键信息(持久)self.dialogue=deque(maxlen=max_turns*2)# 对话流(滑动)defadd_exchange(self,user_msg:str,assistant_msg:str):self.dialogue.append({"role":
http://www.gsyq.cn/news/1556278.html

相关文章:

  • Go学习第11天:包管理 + VSCode开发
  • 普宁实木家具推荐|原木胡桃木哪家风格齐 - 品牌观察
  • 【2026年6月】浮筒式潜水泵厂家推荐 - 多才菠萝
  • MC9S08DN60低功耗与CAN总线设计:嵌入式经典MCU实战解析
  • 深耕鹏城防水领域 匠心守护安居|微顺虹防水:初心筑品质,服务护万家 - 徽顺虹
  • GEO优化能不能抢占竞品搜索流量
  • 【大模型上下文长度扩展】YaRN:动态插值,解锁超长文本理解新范式
  • Grok4如何重塑人类工作坐标:从知识执行到问题架构
  • 2026 年了,AI 做 PPT 到底哪家强?测了 8 款 AI 做 PPT 工具后,我决定把备份方案全删了 - 速递信息
  • 鸿蒙物理 108 篇 第二篇 有无相生物理显隐底层定则
  • Windows系统文件paqsp.dll丢失找不到问题解决
  • 2026厦门黄金回收去哪好|本地正规排名出炉,靠谱品牌推荐 - 奢侈品回收评测
  • 嘉兴仿真植物造景布置怎么选?2026仿真植物布置软装市场现状与服务商选型报告 - 三棵树园艺
  • 实战拆解:GEO优化文章结构的4个关键差异——从传统SEO到AI引用的转型路径
  • Python学习第93天:MySQL性能优化
  • 汽车级PMIC失效安全与看门狗设计:以NXP MC33907/33908为例
  • 从拿破仑到希特勒:复盘“寒冬”如何成为战争史上的决定性变量
  • 普宁家居推荐|本地家居店哪家口碑好售后稳 - 品牌观察
  • 普宁家具店推荐|展厅大款式新去哪家逛 - 品牌观察
  • 武汉叛逆厌学戒网瘾学校十大排名(央视推荐家长必看) - 辛云教育资讯
  • 3步打造专业级Vue日历应用:dayspan-vuetify完整指南
  • 学习总结8
  • 广东省佛山市南海区吃川菜推荐去哪家?实测 4 家正宗川味馆子 - 速递信息
  • GPT-4.1是假消息?揭穿大模型命名乱象与Turbo真实能力
  • 计算机教材策划与写作:如何将AI与云计算前沿知识结构化
  • 终极指南:使用OpenCore Legacy Patcher免费升级老旧Mac到最新macOS系统
  • 如何快速构建抖音直播数据采集系统:完整实战指南
  • 2026降AIGC技术白皮书:实测验证工具榜与精准选型导航
  • SparkCat恶意软件深度解析:移动安全攻防实战与防护指南
  • 深入解析ColdFire EIM总线时序:从基础读写到突发传输实战