更新日期:2026-08-12
适用范围:LLM Agent、对话助手、代码智能体、具身智能体与多智能体系统。本文把认知科学术语当作工程类比,而不是声称当前智能体拥有与人类相同的记忆机制。
先给结论:记忆不是数据库,而是一条受控的信息生命周期
智能体“有记忆”,不等于把全部聊天记录塞进向量库。一个可用的记忆系统至少要回答六个问题:
- 写什么:原始观察、用户事实、任务轨迹、失败教训,哪些值得保存?
- 怎么表示:文本片段、结构化事实、事件、图关系、程序/技能,还是模型参数?
- 放在哪里:当前上下文、线程状态、外部数据库、知识图谱、技能库还是模型权重?
- 何时整理:同步写入、后台提取、会话后反思,还是跨多个轨迹再抽象?
- 如何取回:按关键词、向量相似度、时间、实体、因果关系、任务阶段或策略检索?
- 何时更新或遗忘:新事实怎样覆盖旧事实,错误经验怎样撤销,敏感数据怎样删除?
因此更准确的定义是:Agent memory 是智能体在交互过程中,对历史信息进行形成、组织、更新、检索、压缩、遗忘和使用的机制。截至 2026 年,一条清晰的研究演进线是:Storage(保存轨迹)→ Reflection(提炼轨迹)→ Experience(从多个轨迹抽象可复用经验)→ Learned Management(由策略学习何时写、读、改、删)。这一“从存储到经验”的概括可参考 ACL 2026 Findings 综述 From Storage to Experience;更广的“形式—功能—动态”分类见 2025 年 12 月预印本 Memory in the Age of AI Agents。
flowchart LR
O["观察 / 对话 / 工具结果"] --> F["写入过滤与事实提取"]
F --> W["工作记忆:当前任务状态"]
F --> E["情景记忆:发生过什么"]
F --> S["语义记忆:稳定事实"]
F --> P["程序性记忆:如何做"]
E --> C["反思、合并、抽象、遗忘"]
S --> C
P --> C
C --> R["混合检索与重排"]
R --> W
W --> A["推理与行动"]
A --> O
从短期到长期:四种内容类型与三种时间尺度
“短期/长期”回答持续多久、跨不跨线程;“工作/情景/语义/程序性”回答存的是什么、怎样被使用。两组概念不要互相替代。
| 类型 | 典型内容 | 典型实现 | 写入原则 | 主要风险 |
|---|---|---|---|---|
| 感知/瞬时缓冲 | 当前页面、最新工具输出、传感器帧 | 未持久化 observation | 仅保留下一步需要的细节 | 噪声挤占注意力 |
| 工作记忆 | 当前目标、计划、约束、任务变量、最近对话 | prompt/context、线程 state、checkpoint、scratchpad | 精确、结构化、可恢复;旧步骤及时压缩 | 上下文溢出、旧指令干扰 |
| 情景记忆 | 某次任务发生了什么、动作序列、结果与反馈 | 事件日志、轨迹库、会话 checkpoint | 保存来源、时间、输入、动作、结果和置信度 | 错误经验被相似检索放大 |
| 语义记忆 | 用户偏好、稳定事实、实体关系、领域知识 | JSON profile、事实表、向量库、时态知识图 | 原子化事实;新旧版本与有效时间并存 | 冲突、陈旧、跨用户泄漏 |
| 程序性记忆 | SOP、提示词、代码技能、工具使用规则 | system prompt、规则、技能文件、可执行代码 | 只有验证成功且可泛化时晋升 | 自修改导致行为漂移 |
| 激活记忆 | 当前推理过程中形成的内部状态 | hidden state、activation、KV cache | 生命周期通常不超过一次请求或连续会话 | 不透明、受上下文长度限制 |
| 参数记忆 | 训练或微调中吸收的知识与行为模式 | 模型权重、adapter | 更新成本高,不适合高频个性化事实 | 难删除、难追溯、灾难性遗忘 |
时间尺度可再分三层:
- 轮内(step-local):一次推理/工具调用需要的数据,下一步后即可丢弃。
- 线程内(in-episode):单次任务或会话的状态,应通过 checkpoint 恢复,但不应自动变成跨用户知识。
- 跨线程(cross-episode):用户画像、历史事件、已验证经验和技能,需要明确作用域、持久化与治理。
LangGraph 当前官方文档也是用 thread-scoped state/checkpointer 表示短期记忆,用 namespace/key store 表示跨线程长期记忆,并区分 semantic、episodic、procedural memory;见 Memory Overview 与 Persistence。
工程上怎样做:写入—整理—检索—使用—遗忘
1. 写入:先保留原始证据,再生成候选记忆
推荐事件溯源思路:原始会话/工具结果作为不可变审计记录,LLM 提取的事实只是带来源的派生视图。候选记忆至少包含:memory_id、tenant/user/agent/thread scope、type、content、source_event_ids、created_at、valid_from/to、confidence、sensitivity、status、embedding/version。
写入门控应考虑:是否与未来任务相关、是否新颖、是否可验证、是否敏感、是否只是临时状态。稳定事实可同步写入;总结、去重、跨轨迹反思适合后台异步执行。LangChain 官方也将写记忆区分为 hot path 与 background 两种策略,见 Memory Overview。
2. 整理:不要只 append
对新事实执行 ADD / UPDATE / DELETE / NOOP,而不是无限追加。更新时区分:
- 更正:用户说“我不住上海了”,旧地址标记失效,新地址成为当前值;
- 并存:过去职业与当前职业都保留有效时间;
- 不确定冲突:保留两个说法及来源,降低置信度,必要时询问用户;
- 情景到语义:多次事件共同支持时,才抽象成稳定偏好;
- 情景到程序:只有经过测试和回归验证的成功路径才晋升为技能。
3. 工作记忆:上下文是缓存,不是仓库
即使模型支持很长上下文,把全历史塞入也会增加延迟、成本和干扰。TACL 2024 的 Lost in the Middle 表明相关信息位置变化会显著影响长上下文使用;Anthropic 的官方工程文章也把上下文视为有限 attention budget,建议持续策展,见 Effective Context Engineering for AI Agents。
实际可采用“最近原文 + 滚动摘要 + 结构化任务状态 + 按需检索证据”:摘要保存已完成事项、未决问题、约束和引用 ID;关键事实不要只存在摘要里,回答前应能回查原始事件。
还要区分会话状态持久化与长期记忆形成。前者只是让系统恢复一条消息/工具调用链;后者要从历史中选择、验证并形成跨线程可用的事实或经验。例如 OpenAI Responses API 可用 Conversation 对象或 previous_response_id 延续对话,但官方文档同时指出历史输入仍受上下文窗口约束、仍按输入 Token 计费,并提供 compaction;因此它解决的是 conversation state,不会自动替你完成用户画像、冲突更新和选择性遗忘。见 OpenAI 官方 Conversation state。
4. 检索:从单一 top-k 升级为混合、时态和任务感知
一个稳健流程通常包括:
- 用用户、组织、Agent、权限和记忆类型做硬过滤;
- 对查询做实体、时间、意图和任务阶段解析;
- 并行执行向量相似度、BM25/全文、时间邻近、实体/图邻居检索;
- 去重和 cross-encoder/LLM 重排;
- 做冲突检测、来源可信度与新鲜度校正;
- 在 Token 预算内组装少量、多样、可引用的证据。
可用一个工程化评分直觉:
score = relevance + recency + importance + reliability + task_fit - redundancy - contradiction_risk
不同问题权重不同:“我上次怎么修好这个 Bug”重情景与任务结构;“我现在住哪”重语义事实的有效时间;“部署流程怎么做”重程序性记忆。ACL 2026 的 MAGMA 进一步说明语义、时间、因果与实体关系应当分开建模。
5. 使用与验证:记忆是证据,不是指令
检索结果应带来源、时间和置信度;模型回答后记录哪些 memory ID 被使用。对高风险动作,记忆只能提供信息,不能自行授予权限。失败轨迹不得因为“与当前任务相似”就直接充当示范;ACL 2026 的经验跟随研究已显示这会产生错误传播。最好把执行测试、用户确认或外部事实校验作为质量标签,成功后再提升权重。
6. 遗忘与压缩:删除是能力,不是损失
遗忘策略可组合:TTL、长期未访问衰减、容量淘汰、重复合并、低质量/已证伪删除、用户主动删除、隐私保留期限到期。重要区别是:
- 压缩会产生摘要,但不能等同于删除原数据;
- 失效保留历史但不作为当前事实;
- 硬删除要覆盖主库、向量索引、缓存、派生画像和备份生命周期;
- 程序性记忆回滚应保留版本与测试结果。
落地选择:先从最小可靠架构开始
对于一般个人助手或业务 Agent,推荐分阶段实施:
- V0:可恢复工作记忆——线程 checkpoint、结构化任务状态、最近消息与滚动摘要。
- V1:有作用域的语义事实——Postgres/文档库保存原子事实、来源、时间、置信度;先做关键词 + 向量混合检索。
- V2:情景与质量反馈——保留任务轨迹和最终结果,只让已验证成功经验进入 few-shot;失败经验显式标为反例。
- V3:程序性技能——将稳定 SOP/代码做成只读、版本化技能;Agent 提议更新,人或测试门禁批准。
- V4:确有需要再上图与学习策略——存在大量实体变化和时态问题时采用 Graphiti/MAGMA 类图结构;有足够训练任务与奖励信号时再考虑 Memory-R1/AgeMem 类 RL 控制。
不要因为“记忆系统”流行就一开始部署复杂知识图谱或多 Agent memory manager。先以无记忆、全上下文、简单 RAG 为基线,证明记忆在任务成功率—成本—延迟—安全的综合指标上确有收益。2026 年 EvoMemBench 的结果尤其提醒:没有一种记忆形态在所有设置中都占优。
一句话知识框架
可以把智能体记忆记成四句话:
- 工作记忆是当前任务的可执行状态,不只是聊天窗口。
- 情景记忆记经历,语义记忆记事实,程序性记忆记做法。
- 长期记忆的核心难题不是存储容量,而是写入质量、冲突更新、任务匹配、遗忘和安全。
- 2026 年的前沿正在从人工启发式走向可学习记忆策略,但生产系统仍应保持来源、权限、版本、评测和人类控制。