在实际工程落地,通常把Agent的记忆拆成两层:
第一层是短期记忆,用于当前会话,用截断对话或者总结摘要去控制prompt长度、同时保持语义连贯。
第二层是长期记忆,用于跨会话场景,用向量召回最相关的历史信息,再按需放回上下文。
在实践中,不要把写入长期记忆做成“默认全部存储”,而要设准入条件(该存储的存储,该忘的忘),同时要对记忆定期清理、合并和更新,这样Agent的记忆才能更稳定。
二、短期记忆详细解析
1、固定窗口截断方案
如果任务里的信息价值衰减很快,最直接的方案就是截断。通常方法是只保留最近 N 轮对话,或者最近 N 个 token,超出的部分直接丢掉,N这个参数支持配置。
优点很明确:实现简单,成本低,长度稳定,在闲聊机器人、简单客服问答这类场景里,这种方案通常够用。
问题也很明显:属于“一刀切”的遗忘机制,如果早期对话有关键信息被截掉,Agent 就会突然像失忆一样。
比如用户一开始设定过“输出必须严谨”“不要改原文结构”这类要求,后面对话一长,这些信息就可能先被删掉。
2、滚动摘要方案
在实际应用中,很多时候不需要保留全部的对话信息,只要保留关键信息就可以,所以这种做法就是当对话历史快要把窗口塞满时,不直接删除最早的内容,而是先把前面一段对话总结成一条更短的摘要,再用这条摘要替换原始记录。
优点:1、压缩长度的同时,能尽量保住任务目标、风格要求、已确认结论这类高价值信息;2、尽早把无关细节从上下文里清掉,缓解长上下文带来的注意力稀释。这类方案更适合项目规划、长篇内容创作这类长任务。
代价也很现实:多了一次模型调用,摘要质量还会直接影响后续效果,如果总结摘要做得差,等于把错误记忆保留下来。
三、长期记忆-构建知识库
Agent的长期记忆,解决的是跨会话记忆,有多种方案,比如有的Agent系统通过文件来保存信息,也是属于长期记忆的一种,这篇文章主要讲解实践中常用的方案,利用向量库来构建长期记忆知识库。
核心思路:先把过去的对话切成可检索的记忆片段,等今天需要时再按相关性召回。
关键流程分为以下三步:
存储:把每轮对话向量化后连同原文写入长期记忆库
检索:用户提出新问题时,先用这个问题做相似度搜索
组合:把最相关的历史片段和当前问题一起送给模型
这种方案的优点:让Agent的记忆系统不再被上下文窗口死死绑住,能从更大的历史范围里只取当前真正相关的几条记忆,是构建长期交互Agent 的基础,适合个性化助手、企业知识库、智能学习伴侣这类需要长期上下文的系统。
缺点:方案的系统复杂度比较高,通常会引入 Embedding 模型、向量数据库,以及一整套检索逻辑。
在实践中,哪些内容值得写进长期记忆:
- 长期稳定的用户偏好
- 任务的核心目标
- 已经确认过的重要事实
- 后续多次会复用的结论
记忆治理****重要
有一个很现实的问题,是记忆治理,记忆是一类动态数据资产,所以需要清理过时信息、合并重复条目、校验事实是否仍然有效,还要给用户提供查看、修改、删除的接口,这样才能把长期记忆系统稳定地运行下去。