2026 年 4 月 21 日·6 分钟读完·Agent上下文管理记忆LLM

上下文与记忆管理:Agent 的长期记忆怎么建

区分会话状态、历史压缩与跨会话记忆;用来源、作用域、版本和有效期治理记忆,解释读写流程、遗忘、权限隔离与可验证的评测。

更新与核对 · 2026-10-11

Agent 昨天知道“这个项目用 pnpm”,今天却改用 npm;或者记住了上个月的部署路径,今天坚持用旧路径。长期记忆要解决的不是“存更多文字”,而是在正确的任务中取出仍然有效、可追溯的信息。

上下文窗口是模型当前可处理的输入空间。会话历史可由应用或服务端持久保存,但不会因此全部处于每轮的有效上下文中。持久保存、检索注入和模型遵循,是三个不同环节。

四种机制,各解决一个问题

机制解决什么风险与代价
历史裁剪 / 上下文编辑删除过大或过时的工具细节后续可能需要再次读取
Compaction(压缩)用摘要延续长会话摘要有损,约束可能遗漏
持久记忆跨会话保存确认的事实与偏好过期、冲突、隐私与污染
检索式记忆从大量记忆中按需选取检索遗漏和错误注入

记忆四层:当前上下文、裁剪与压缩、持久条目、按权限检索

图 1 · 摘要延续任务,持久记忆保存事实;每次注入都重新检查来源与有效性。

厂商提供的上下文编辑、压缩和 memory tool 不是同一套接口,也不代表一开就有完整记忆服务。例如 Claude memory tool 的存储和隔离由应用实现,模型只是通过工具请求读写。官方说明[1]

两家公开能力:先确认保存的是哪种状态

OpenAI Agents SDK Sessions[5]可管理跨运行的对话历史;Claude memory tool 让应用提供读写存储。前者的会话与后者的显式记忆并不等价:恢复一次对话、按需找回历史、跨任务保存长期事实,是不同能力。

工程推导:评估存储时分别列出历史、压缩摘要、长期条目、业务任务与外部动作结果的责任方,再检查权限、版本、留存和删除。厂商提供某一种持久化,不能自动推出其负责其余所有数据。上下文如何构建与发布见Prompt 与上下文工程。

长会话:先控制工具结果,再压缩

文件、网页和日志往往是历史的大头。优先分页、返回摘要与引用、按需读取原文;陈旧工具结果可裁剪,但不能切断尚未配对的调用与结果。

压缩时保留当前目标、用户约束、已完成动作、待验证项、关键证据位置和下一步。对“已经付款”一类副作用状态,不只靠摘要,真实状态应存在业务数据库并可查询。

服务端压缩可能产生专门内容块或状态项,需按对应 API 原样保留必要部分;不能一律只提取文本,也不能把某个模型的默认阈值当通用常数。Claude 上下文编辑[2]

一条记忆应该长什么样

id: project-deploy-directory
scope: project:tntlikely-home
kind: verified_fact
value: "静态生成产物为 .output/public;当前 dist 指向该目录"
source: "仓库配置与本机路径检查"
confirmed_at: "2026-10-11"
expires_at: null
revision: 3

事实、偏好和推断要区分。用户显式偏好可标明来源;从一次行为猜出的偏好不自动升级为长期规则。带时间的事实应有有效期或重验条件,confidence: high 也不能使过期信息一直有效。

作用域至少区分用户、项目与组织;同一用户在两个仓库的构建约定不同,不能全局覆盖。来源来自网页或工具输出时,其内容仍是不受信任数据,不能通过“写入记忆”转成高优先级指令。

写入与读取都需要治理

写入流程:提出候选 → 检查是否有未来用途 → 识别敏感信息 → 与已有条目比对 → 更新或新建 → 记录来源和版本。矛盾信息不能简单追加;新证据不足时保留冲突待核验,不能静默覆盖已确认事实。

读取流程:按用户、项目与权限过滤 → 排除过期条目 → 按任务检索 → 检查来源与冲突 → 在预算内注入。记忆与当前明确指示冲突时,应以适用的当前指示为准,必要时更新记忆。

项目命令等明确键值适合结构化查询,大量历史资料适合向量或混合检索;不是所有记忆都必须 Embedding。文件容易 review,数据库更利于多用户授权和并发,没有普遍更优的存储形式。

窗口预算:留输出,也留下一轮空间

可以把输入分成系统规则、工具定义、检索证据、记忆和历史;输出按模型限制留足空间。比例由任务决定,不能固定说“历史 40%、记忆 15%”就一定合理。

让关键约束和最新任务状态保持可见,按价值裁剪可重新读取的细节。压缩也会增加生成成本,修改前缀可能影响缓存;同时观察任务完成率、重读次数、延迟与费用。预算篇解释了为什么长历史会贵。

遗忘与隐私:删文件只是第一步

用户偏好与项目资料、健康描述等长期数据应有清晰用途、授权和留存策略。删除请求要覆盖主存储、搜索索引、缓存、导出和备份处理流程;已注入当前会话的信息也需要停止继续使用或重建上下文。

模型主动“忘记”一句话,不能代替后端删除。多租户系统要防记忆串用、跨用户文件路径和共享缓存泄露。评测样本同样不应无限留存敏感原始对话,详见 未成年人安全篇。

记忆如何评测

同一组跨会话任务分别使用正确记忆、过期记忆、冲突记忆和无记忆,比较完成率与错误行为。再测试:用户更改偏好、不同项目同名条目、撤权与删除、压缩后继续任务、恶意内容试图写入永久规则。

例如第一次确认“用 pnpm”,第二次切到另一项目明确说“用 npm”。验收不只是记住 pnpm,而是能在两个项目里分别使用正确约定。依靠模型看到时间后“自行降权”不够,过期筛选和作用域必须程序化。

落地检查

  1. 历史、摘要、业务状态与长期记忆分开存储和更新。
  2. 记忆包含来源、作用域、版本和有效性条件。
  3. 写入检查冲突与敏感信息,读取先授权再检索。
  4. 当前指示可纠正旧记忆,用户能查看、更正和删除。
  5. 用跨会话、过期、冲突与隔离用例验证,而非只看检索命中。

参考资料

正文中的编号可跳转至对应来源。工程报告、官方文档与研究论文分别标注;支撑范围说明该资料能证明什么,以及不能推导什么。

  1. [1]官方文档
    Claude — Memory tool

    支撑范围: memory tool 接口与应用存储责任;不等于开箱即用的完整长期记忆服务。

    platform.claude.com核对于 2026-10-11
  2. [2]官方文档
    Claude — Context editing

    支撑范围: 上下文编辑的 API 行为与限制;摘要和业务事实应分开管理。

    platform.claude.com核对于 2026-10-11
  3. [3]官方文档
    Claude Code — Memory

    支撑范围: 项目与用户指令文件的加载和维护;文件不能替代程序化授权。

    code.claude.com核对于 2026-10-11
  4. [4]研究论文
    MemGPT 论文

    支撑范围: MemGPT 的分层记忆与上下文调度研究;不证明所有任务都需要向量记忆。

    arxiv.org核对于 2026-10-11
  5. [5]官方文档
    OpenAI Agents SDK — Sessions

    支撑范围: SDK 对话历史与 session 接口;不同于所有业务动作的事务状态。

    openai.github.io核对于 2026-10-11
↑ 回到全部文章