Agent 记忆机制
目录
1 概述 {#1}
LLM 的上下文窗口是有限的——长对话、长工具结果、多轮交互都可能被截断。记忆机制让 Agent 突破上下文限制,跨会话保留关键信息、按需检索并使用。
记忆系统需要回答三个核心问题:
- 写什么:从对话中提取哪些事实/事件/技能写入长期记忆;
- 何时写:每轮都写、关键事件触发、还是会话结束批量摘要;
- 如何用:检索时返回什么形态(原文 / 摘要 / 实体)、如何注入 prompt。
2 短期 vs 长期记忆 {#2}
2.1 短期记忆 (Short-term)
即当前对话的上下文窗口(in-context)。容量受 token 上限约束,随对话增长会被截断或溢出。
2.2 长期记忆 (Long-term)
跨会话持久化,通常以向量库/摘要形式存储,按需检索注入上下文。
写入:把关键事实/对话摘要 → Embedding → 写入长期记忆库
检索:当前问题 → Embedding → 相似度检索 → 取回相关历史 → 注入 prompt
2.3 对比
| 维度 | 短期记忆 | 长期记忆 |
|---|---|---|
| 容量 | 受上下文窗口限制 | 理论上无限 |
| 延迟 | 零 | 检索延迟 |
| 持久性 | 会话结束即消失 | 跨会话保留 |
| 适用 | 当前任务细节 | 跨任务偏好/事实 |
3 记忆形态 {#3}
| 形态 | 说明 | 优点 | 缺点 |
|---|---|---|---|
| 向量记忆 | 原文/摘要向量化,语义检索 | 通用、自动 | 粒度细、易冗余 |
| 摘要记忆 | 对历史滚动摘要 | 节省 token | 细节丢失 |
| 实体记忆 | 以结构化方式记录实体属性与关系 | 可推理、可对齐 | 抽取成本高 |
| 事件记忆 | 按时间序记录发生过的事件 | 适合”发生过什么” | 长程易膨胀 |
实践中常混合使用:摘要 + 实体 + 关键事件三元组。
4 MemGPT:分页式记忆管理 {#4}
4.1 核心思想
MemGPT 借鉴操作系统的虚拟内存与分页机制:把 LLM 上下文窗口视为主存,外部向量库视为磁盘,由 LLM 自主决定何时把哪些内容”换入”主存或”换出”到磁盘,从而在有限窗口内管理超长上下文。
+--------------------------------------------------+
| Main Context (LLM 上下文窗口 / "主存") |
| ┌────────────┐ ┌────────────┐ ┌──────────────┐ |
| | System | | Working | | Recalled | |
| | Prompt | | Memory | | (从磁盘换入) | |
| └────────────┘ └────────────┘ └──────────────┘ |
+--------------------------------------------------+
▲ recall (page-in)
▼ archive (page-out)
+--------------------------------------------------+
| External Memory ("磁盘": 向量库 / 摘要库) |
+--------------------------------------------------+
4.2 LLM 自主决策
MemGPT 的关键创新:让 LLM 自己输出控制指令(recall / archive),决定何时把外部记忆中的内容”换入”主上下文,何时把主上下文中的内容”换出”到外部存储。这相当于把”内存管理”内化为 LLM 的一个可调用工具。
4.3 演进:Letta
后续 Letta(MemGPT 团队的商业化产品)把”分页”做到对开发者透明的 API 层,并加入更丰富的记忆类型(标签、关系、事件)。
5 2025 新进展:笔记式与层级记忆 {#5}
5.1 A-Mem (NeurIPS 2025)
A-Mem 提出”笔记式记忆”:每条新对话产生一条结构化笔记(包含时间、主体、关键词、上下文摘要),Agent 可在笔记之间自动建立链接(如”派生”、”扩展”、”冲突”),形成可演化的记忆图。
5.2 Mirix
Mirix 把记忆分为多层:
- 核心记忆:长期偏好、关键事实;
- 事件记忆:时序化的事件流;
- 知识记忆:实体与关系图;
- 工具记忆:调用工具的经验;
- 反思记忆:Agent 自己的内省与评估。
每层都有独立的检索与写入策略。
5.3 何时触发写入
- 每轮写入:最简单但易冗余;
- 事件触发:在检测到”偏好表达”、”事实陈述”、”技能演示”等模式时写入;
- 会话结束批量摘要:成本低但细节丢失;
- 重要性打分:让模型对每条信息打分,仅保留高重要性的。
5.4 记忆写入的”双向循环”
近期工作强调:
- 写入要可追溯:每条记忆需有出处(哪轮对话、哪条工具结果);
- 写入要被反思:定期清理过时记忆,避免知识库污染;
- 读取要被评估:检索结果是否被 Agent 实际使用?是否有”检索但不引用”的浪费?
6 实践建议 {#6}
- 明确记忆目标:要解决”短期上下文溢出”还是”跨会话个性化”?两者策略不同。
- 混合形态:向量 + 摘要 + 实体,不要押注单一形态。
- 写入策略可配置:对个人偏好用事件触发,对工作汇报用批量摘要。
- 检索要可控:检索返回 top-k + 重要性打分;不是所有相关记忆都该注入。
- 反思与遗忘:长期记忆库需要”清理”——过期、不重要、错误的记忆要被淘汰。
- 评测记忆系统:用 MemRecall、LoCoMo 等基准测检索准确率与答案一致性。
- 隐私边界:长期记忆涉及用户数据,需做权限分级与脱敏。
7 参考文献 {#7}
[1] C. Packer et al., MemGPT: Towards LLMs as Operating Systems, 2023. arXiv:2310.08560.
[2] S. Hong et al., A-Mem: Agentic Memory for LLM Agents, NeurIPS, 2025. arXiv:2502.12110.
[3] Letta Team, Letta: A Framework for Stateful Agents with Long-Term Memory, 2024. https://www.letta.com.
[4] Mirix Team, Mirix: Multi-Modal Multi-Layer Memory for Agents, 2025.
[5] S. Yao et al., ReAct: Synergizing Reasoning and Acting in Language Models, ICLR, 2023. arXiv:2210.03629.
[6] J. F. Kelley, Memory Management in the AI Era, Queue, 2024.
[7] A. Maharana et al., Evaluating Very Long-Term Conversational Memory of LLM Agents, ACL, 2024. arXiv:2402.17753.
留下评论