记忆系统:短期记忆、长期记忆与遗忘策略
记忆是 Agent 超越"无状态函数调用"的关键能力。没有记忆的 Agent 只能处理瞬态的单轮任务,无法积累经验、维持上下文或从历史中学习。一个精心设计的记忆系统赋予 Agent 三项核心能力:维持当前任务的连贯性、唤醒历史中的相关经验、以及在信息过载时高效取舍。
短期记忆:任务上下文的即时维护
短期记忆对应 Agent 在当前任务执行过程中需要持续维护的上下文信息。其核心形态是 LLM 的对话上下文窗口(Context Window),包含当前对话历史、已执行的行动记录、中间推理结论与环境观察反馈。
短期记忆的设计挑战在于:
上下文窗口的有限性
即使是最先进的 LLM,其上下文窗口也存在明确上限(如 128K 或 200K tokens)。在长链任务中,对话历史与中间产出的累积可能迅速逼近甚至超出窗口容量。一旦超出,最早的上下文信息将被截断,Agent 便丢失了对任务初始目标与早期步骤的记忆,导致行为偏离。
上下文管理策略
常见的短期记忆管理策略包括:
- 滑动窗口:只保留最近 N 轮对话,丢弃更早的历史。简单但粗暴,可能丢失关键早期信息。
- 摘要压缩:定期对历史对话进行摘要,用压缩后的摘要替代原文。保留了语义核心但牺牲了细节精度。
- 关键信息提取:从历史上下文中提取任务目标、关键决策节点与未解决约束,以结构化形式常驻在上下文头部。这些"锚点信息"确保 Agent 在任何时刻都能回溯任务的核心意图。
最佳实践是组合使用上述策略:锚点信息常驻头部保障方向一致,摘要压缩管理中期历史,滑动窗口控制近期对话的完整度。
长期记忆:跨任务的经验检索
长期记忆解决的是跨任务、跨会话的经验积累与唤醒问题。当 Agent 在今天的任务中遇到了与昨天相似的问题,长期记忆使其能够检索历史解决方案而非从头探索。
向量检索架构
长期记忆的主流实现基于向量数据库(Vector Database):
- 写入阶段:Agent 将每次任务的关键经验、决策记录与解决方案转化为向量嵌入(Embedding),存入向量数据库,附带时间戳与元数据标签。
- 检索阶段:当新任务遇到相似情境时,Agent 将当前问题转化为查询向量,在数据库中检索语义最相近的历史记录。
- 融合阶段:检索到的历史经验被注入当前任务的上下文窗口,作为"回忆"信息指导 Agent 的后续决策。
向量检索的核心优势是语义匹配而非精确匹配——即使当前问题的表述与历史记录不同,只要语义相近就能被检索到。这使得 Agent 的"回忆"能力接近人类的联想记忆。
记忆的组织结构
原始的向量存储只是基础,更高级的长期记忆系统引入了结构化组织:
- 情景记忆(Episodic Memory):存储完整的任务经历,包括问题、行动序列与最终结果,适合"遇到类似问题时参考类似做法"的场景。
- 语义记忆(Semantic Memory):从多次经历中提炼的一般性知识与规则,如"当 API 返回 404 时应首先检查 URL 拼写",适合直接指导决策。
- 程序记忆(Procedural Memory):固化的高效行动模式与工具使用套路,类似人类的"技能",可在相似情境中直接调用而无需重新推理。
记忆压缩与遗忘策略
记忆的无限制积累会导致两个问题:检索效率退化(向量数据库中的噪声记录稀释了相关信号的浓度)与上下文窗口被冗余信息挤占。因此,Agent 需要类似人类大脑的遗忘机制。
时间衰减遗忘
为每条记忆记录分配一个衰减权重,权重随时间递减。近期记忆权重高,远期记忆权重低。检索时综合考虑语义相似度与时间权重,使得"最新鲜的经验"优先被唤醒。时间衰减模拟了人类"近期记忆更清晰"的自然特征。
频率强化记忆
反复被检索与使用的记忆获得强化权重,类似人类的"反复练习形成长期记忆"。一条经验如果被多次验证有效,其检索优先级持续提升;反之,长期未被引用的记忆逐渐降权直至淘汰。
冗余合并与抽象压缩
定期对记忆库进行清理:语义高度重叠的多条记录被合并为一条更精炼的抽象表述,消除冗余的同时保留核心知识。例如,三次相似的任务失败记录可以被压缩为一条规则:"在该类任务中,方案 X 的成功率低于 20%,应优先考虑方案 Y。"
主动遗忘
最激进的策略是主动删除置信度低于阈值的记忆记录——那些从未被验证、从未被引用或已被判定为错误的记忆。主动遗忘确保记忆库保持精炼,避免噪声记忆干扰决策质量。
💡 设计要点:短期记忆追求"不丢失关键上下文",长期记忆追求"唤醒最相关经验",遗忘策略追求"保持记忆库的精炼与高效"。三者协同运作,构成 Agent 认知能力的记忆基础设施。
本章小结
| 记忆类型 | 存储内容 | 管理方式 | 核心挑战 |
|---|---|---|---|
| 短期记忆 | 当前对话上下文 | 滑动窗口、摘要压缩 | 窗口溢出、信息丢失 |
| 长期记忆 | 历史经验、用户偏好 | 向量检索、结构化存储 | 检索准确率、存储成本 |
| 遗忘策略 | 冗余/过时信息清理 | 时间衰减、频率强化、主动删除 | 避免误删有价值记忆 |
三层记忆架构:工作记忆(当前对话)→ 会话记忆(近期摘要)→ 长期记忆(结构化知识)。Agent 在不同场景下访问不同层级,既保证专注性又不丢失长期积累。
📖 延伸阅读
- Generative Agents: Interactive Simulacra of Human Behavior —— 记忆架构经典论文
- LangChain Memory Modules —— 官方记忆系统实现
- Vector Databases Comparison —— 向量数据库性能基准
- Pinecone Documentation —— 主流向量数据库文档
