跳到主要内容
SUN / 笔记
← 全部文章

智能体记忆系统

更新日期:2026-08-12
适用范围:LLM Agent、对话助手、代码智能体、具身智能体与多智能体系统。本文把认知科学术语当作工程类比,而不是声称当前智能体拥有与人类相同的记忆机制。

先给结论:记忆不是数据库,而是一条受控的信息生命周期

智能体“有记忆”,不等于把全部聊天记录塞进向量库。一个可用的记忆系统至少要回答六个问题:

  1. 写什么:原始观察、用户事实、任务轨迹、失败教训,哪些值得保存?
  2. 怎么表示:文本片段、结构化事实、事件、图关系、程序/技能,还是模型参数?
  3. 放在哪里:当前上下文、线程状态、外部数据库、知识图谱、技能库还是模型权重?
  4. 何时整理:同步写入、后台提取、会话后反思,还是跨多个轨迹再抽象?
  5. 如何取回:按关键词、向量相似度、时间、实体、因果关系、任务阶段或策略检索?
  6. 何时更新或遗忘:新事实怎样覆盖旧事实,错误经验怎样撤销,敏感数据怎样删除?

因此更准确的定义是: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 升级为混合、时态和任务感知

一个稳健流程通常包括:

  1. 用用户、组织、Agent、权限和记忆类型做硬过滤;
  2. 对查询做实体、时间、意图和任务阶段解析;
  3. 并行执行向量相似度、BM25/全文、时间邻近、实体/图邻居检索;
  4. 去重和 cross-encoder/LLM 重排;
  5. 做冲突检测、来源可信度与新鲜度校正;
  6. 在 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 的结果尤其提醒:没有一种记忆形态在所有设置中都占优。

一句话知识框架

可以把智能体记忆记成四句话:

  1. 工作记忆是当前任务的可执行状态,不只是聊天窗口。
  2. 情景记忆记经历,语义记忆记事实,程序性记忆记做法。
  3. 长期记忆的核心难题不是存储容量,而是写入质量、冲突更新、任务匹配、遗忘和安全。
  4. 2026 年的前沿正在从人工启发式走向可学习记忆策略,但生产系统仍应保持来源、权限、版本、评测和人类控制。

相关笔记

相关文章

强化学习笔记 →上下文工程 →Mission: 掌握多模态 LoRA 与 QLoRA →