从工程视角看 Agent Memory:存什么、怎么取、何时忘

目录

背景

[一、先把问题说清楚:Agent 为什么需要 Memory](#一、先把问题说清楚:Agent 为什么需要 Memory)

[二、很多人一上来就做错了:Memory 不是把对话存进向量库](#二、很多人一上来就做错了:Memory 不是把对话存进向量库)

[1. 该记的没记,不该记的记了一堆](#1. 该记的没记,不该记的记了一堆)

[2. 检索相似,不等于检索有用](#2. 检索相似,不等于检索有用)

[3. 错误会被反复继承](#3. 错误会被反复继承)

[三、Agent Memory 至少要分层,不要混成一锅](#三、Agent Memory 至少要分层,不要混成一锅)

[1. Working Memory:工作记忆](#1. Working Memory:工作记忆)

[2. Episodic Memory:情节记忆](#2. Episodic Memory:情节记忆)

[3. Semantic Memory:语义记忆](#3. Semantic Memory:语义记忆)

四、真正难的不是"存",而是"写入策略"

五、检索也不能只靠相似度,要结合任务状态

[六、Memory 最大的敌人,不是遗忘,而是污染](#六、Memory 最大的敌人,不是遗忘,而是污染)

[1. 过期信息](#1. 过期信息)

[2. 错误归纳](#2. 错误归纳)

[3. 低质量总结](#3. 低质量总结)

[4. 工具返回脏数据](#4. 工具返回脏数据)

[七、落到工程上,Memory 更像状态系统,不像知识库插件](#七、落到工程上,Memory 更像状态系统,不像知识库插件)

[1. State Store](#1. State Store)

[2. Long-term Store](#2. Long-term Store)

[3. Memory Manager](#3. Memory Manager)

[4. Retrieval Layer](#4. Retrieval Layer)

[5. Observability](#5. Observability)

[八、一个实用判断:什么时候真的需要复杂 Memory](#八、一个实用判断:什么时候真的需要复杂 Memory)

九、总结


背景

这两年,大家聊 Agent,常常会把注意力放在规划、工具调用、反思这些能力上。好像只要模型会拆任务、会用工具、会自己纠错,一个"聪明的 Agent"就差不多成型了。

但真做过系统的人很快会发现,问题往往不出在"它不会想",而出在"它记不住"。

用户前面说过什么,它忘了;刚刚调用工具得到的结果,它没接上;上一次执行失败的原因,它没有沉淀;一个多轮任务跑到第六步时,它已经把最初目标弄丢了。最后你会发现,很多 Agent 看起来像是"推理不够强",本质上其实是 memory 设计太差

所以,Agent Memory 这个话题值得单独拿出来讲。因为它不是一个边角能力,而是 Agent 从 demo 走向可用系统时,最容易被低估、也最容易踩坑的一层。

一、先把问题说清楚:Agent 为什么需要 Memory

普通聊天模型的工作方式,本质上是"看到一段上下文,生成一个结果"。它并不天然拥有持续状态。你这轮给它什么,它就基于这轮来算;下一轮要是你没把关键信息再带上,它就像什么都没发生过。

但 Agent 不一样。Agent 的任务通常不是"一问一答",而是持续执行:

  • 帮用户订一张机票,同时比较价格、时间和退改规则
  • 分析一批日志,定位异常原因,再给出修复建议
  • 调研一个主题,搜集资料、归纳观点、形成报告
  • 调用多个工具,把一个目标拆成多个步骤去完成

这类任务天然有连续性。也就是说,Agent 需要记住三类东西:

第一类,是用户相关的信息 。比如偏好、历史约束、常用配置。

第二类,是任务过程中的状态 。比如当前做到哪一步、前一步工具调用返回了什么、哪个分支失败过。

第三类,是可复用的经验。比如下次再遇到类似任务,它应该少走弯路。

没有 memory,Agent 每一步都像临时工;有了 memory,它才像一个真正"在工作"的系统。

二、很多人一上来就做错了:Memory 不是把对话存进向量库

这是最常见的误区。

不少系统说自己支持 memory,实际做法非常简单:把历史对话切块,做 embedding,扔进向量库;下次用户再问,从里面召回几段相似内容,拼回 prompt 里。这当然比完全没有记忆强,但离"可用的 Agent Memory"还差很远。

原因很简单:记忆不是档案馆,记忆是为了支撑决策。

如果只是把所有东西都存下来,会出现几个问题:

1. 该记的没记,不该记的记了一堆

用户随口一句"今天有点忙",可能并不重要;但"我只接受上海出发、晚上八点后起飞"这种约束,如果没被结构化记住,后面任务就很容易跑偏。

2. 检索相似,不等于检索有用

向量检索擅长找"语义像不像",但 Agent 更常需要的是"这条信息当前有没有决策价值"。

比如用户问"继续上次那个任务",最重要的不是找一段语义最接近的对话,而是定位"上次停在第几步、失败原因是什么、已有结果是什么"。

3. 错误会被反复继承

一旦错误内容被写进 memory,后面又反复被检索出来,系统就会稳定地产生错误。这种问题比"偶尔忘记"更糟,因为它会让 Agent 变成一个持续自信但持续出错的系统。

所以,Memory 设计的核心不是"存没存",而是三件事:存什么、怎么取、何时更新。

三、Agent Memory 至少要分层,不要混成一锅

比较实用的做法,是把 memory 分成几层来设计,而不是统一扔进一个池子里。

1. Working Memory:工作记忆

这是最贴近当前任务的一层,保存的是当前上下文里的关键状态。

比如:

  • 当前目标
  • 已完成的步骤
  • 上一个工具调用结果
  • 当前待决策的问题
  • 临时变量和中间结论

这层记忆的特点是:更新频繁、时效短、必须准确

它更像程序运行时的内存,而不是长期知识库。

很多 Agent 在长任务里越跑越乱,就是因为 working memory 没设计好。模型每一步都在读一大坨历史文本,却没有一个干净、可引用、可更新的"当前状态对象"。

工程上更推荐把它做成结构化状态,比如 JSON 或 state object,而不是完全依赖自然语言摘要。因为自然语言会漂,结构化状态更适合做检查、回滚和调试。

2. Episodic Memory:情节记忆

这层记的是"发生过什么"。

比如:

  • 某次任务的执行轨迹
  • 某个问题为什么失败
  • 某个工具在什么场景下不稳定
  • 用户上一次修改过哪些要求

这类记忆的价值不在于实时参与每一步,而在于需要时可以被回看、总结、反思。

它更像"任务日志 + 经验样本"。

很多反思式 Agent,本质上就在利用这一层:不是让模型凭空变聪明,而是让它从自己的历史行为里提炼规律。

3. Semantic Memory:语义记忆

这层保存相对稳定的知识和偏好。

比如:

  • 用户常住城市
  • 常用语言
  • 报告偏好偏技术还是偏业务
  • 某个内部系统的字段定义
  • 某类任务的固定约束

这类信息更新没那么频繁,但会持续影响后续任务。

它更适合做成实体化、可编辑、带版本的信息,而不是埋在聊天记录里。

一句话概括:
working memory 管当下,episodic memory 管经历,semantic memory 管长期规律。

把这三层混在一起,系统大概率会越来越乱。

四、真正难的不是"存",而是"写入策略"

Memory 设计里最容易被忽略的问题,是写入。

很多系统默认"用户说什么都记"。这在聊天产品里可能勉强还能接受,但在 Agent 系统里会迅速把记忆池污染掉。

更合理的做法是:不是每次交互都写 memory,而是满足条件才写。

比如可以设一些简单但有效的写入规则:

  • 明确的用户偏好,写入长期记忆
  • 当前任务关键状态,写入工作记忆
  • 重要失败原因,写入情节记忆
  • 一次性闲聊内容,不写
  • 置信度低的信息,不写
  • 彼此冲突的信息,先挂起,不直接覆盖

这里最关键的一点是:memory 写入应该是一个"决策动作",不是副作用。

也就是说,Agent 在写 memory 前,最好先回答三个问题:

  1. 这条信息未来还会不会用到?
  2. 它影响的是当前任务,还是长期行为?
  3. 它的置信度够不够高?

没有这一步,memory 很快就会从"资产"变成"噪音源"。

五、检索也不能只靠相似度,要结合任务状态

写完之后,另一个问题是怎么取。

很多系统检索 memory 的方式非常单一:拿当前 query 去向量库查 top-k。这个方法简单,但对 Agent 来说通常不够。

因为 Agent 的记忆读取,不只是"当前这句话像什么",更是"当前这个任务阶段需要什么"。

举个例子:

用户说:"继续上次那个分析任务,把最后结论整理成邮件。"

这时最有价值的信息可能包括:

  • 上次任务的最终中间结论
  • 任务停下来的位置
  • 用户的邮件风格偏好
  • 之前失败过的格式要求

这些信息彼此在语义上未必最像"整理成邮件",但它们在任务结构上是最相关的。

所以更好的做法通常是混合检索:

  • 语义检索:找相关内容
  • 结构检索:按任务 ID、用户 ID、实体 ID 定位
  • 时间检索:优先最近状态
  • 规则检索:固定拿某些关键字段,如用户偏好、系统约束

也就是说,Memory retrieval 最好不是一个接口,而是一套策略。

六、Memory 最大的敌人,不是遗忘,而是污染

很多人担心 Agent 忘东西,但在实际系统里,更危险的往往是"记错了还一直用"。

这类污染通常来自几个地方:

1. 过期信息

比如用户之前说要英文报告,后来改成中文,但系统还在沿用旧偏好。

2. 错误归纳

用户一次性要求被系统误认为长期偏好,结果后面全都按这个执行。

3. 低质量总结

有些系统喜欢定期压缩历史,生成摘要写回 memory。问题是摘要本身可能遗漏关键约束,或者过度概括,最后等于用一句模糊的话替代了完整上下文。

4. 工具返回脏数据

外部工具返回有误,Agent 又把结果当成事实写进长期记忆,后果会越来越严重。

所以,memory 系统最好有这些能力:

  • 版本管理
  • 可覆盖更新
  • 失效时间或衰减机制
  • 来源标记
  • 人工可审查
  • 冲突检测

简单说,memory 不能只管"记住",还要管"纠错"和"忘掉"。

七、落到工程上,Memory 更像状态系统,不像知识库插件

从实现角度看,一个靠谱的 Agent Memory 系统,通常至少包含下面几个模块:

1. State Store

保存当前任务运行状态,支持读写、回滚、恢复。

这部分更接近工作流引擎,而不是 RAG。

2. Long-term Store

保存长期偏好、知识、历史经验。

可以是数据库,也可以结合向量库,但最好有结构化字段。

3. Memory Manager

负责判断什么时候写、写到哪里、怎么合并、怎么淘汰。

这是 memory 设计里最有含金量的部分。

4. Retrieval Layer

根据当前任务状态,决定取哪些记忆回来。

不是单纯 top-k,而是多路召回加筛选。

5. Observability

能看到 memory 是怎么被写入、怎么被读取的。

否则一旦系统出错,你根本不知道是模型推理错了,还是 memory 污染了。

这也是为什么说,Agent Memory 不是"接个库就行"。

它本质上是 状态管理、检索策略和知识治理 的组合问题。

八、一个实用判断:什么时候真的需要复杂 Memory

也不是所有 Agent 都值得上完整 memory 体系。

如果你的场景是:

  • 单轮任务
  • 步骤很短
  • 用户偏好不重要
  • 每次执行相互独立

那其实只要上下文窗口够用,或者做一点简单历史引用,就够了。

但如果你的场景有下面这些特征,就该认真设计 memory 了:

  • 多轮持续任务
  • 用户偏好影响结果
  • 任务经常中断再恢复
  • 需要跨会话延续状态
  • 有反复出现的工作模式
  • 需要从失败里学习

这时候,memory 不是锦上添花,而是系统骨架的一部分。

九、总结

很多人以为 Agent 的进化路线,是更强的模型、更长的上下文、更复杂的推理链。

但从工程实践看,真正决定一个 Agent 是否"像个靠谱同事"的,往往不是它能不能想,而是它能不能持续、稳定、带着上下文地工作

而这件事,最终会落到 memory 设计上。

所以,Agent Memory 最值得讨论的点,从来都不是"用哪家向量库""embedding 维度多大",而是:

  • 你把什么当成记忆
  • 你让谁决定写入
  • 你怎么保证它被正确取回
  • 你如何处理错误、过期和冲突

说到底,好的 memory 不是为了让 Agent "记得更多",而是为了让它在关键时刻,记得对的东西

相关推荐
爱上珍珠的贝壳1 小时前
ESP32-S3-CAM:豆包语音识别文字后控制小车(五)——认识L298N驱动模块
人工智能·语音识别·智能硬件·esp32-s3·l298n·减速电机
俊哥V2 小时前
每日 AI 研究简报 · 2026-04-14
人工智能·ai
紧固视界2 小时前
汽车紧固件最新技术趋势解析:2026上海紧固件专业展有哪些看点
大数据·人工智能·汽车·紧固件·上海紧固件展·上海紧固件专业展
刘佬GEO2 小时前
本地门店做 GEO 的起步顺序:第一步先做什么?
大数据·网络·人工智能·搜索引擎·ai
kcuwu.2 小时前
AI完整发展史内容
人工智能·提示词工程
人工智能AI技术2 小时前
智能体边界控制:禁止越权、防止危险操作
人工智能
东离与糖宝2 小时前
智能体评测基础:能力、稳定性、安全性评估标准
人工智能
莱昂纳多迪卡普利奥2 小时前
LLM工程化实践——Prompt Engineering(一)
人工智能·prompt
Satellite-GNSS2 小时前
AI Agent(智能体)全知识体系详解(从入门到精通,彻底理清脉络)
人工智能·agent