Codex 记忆机制的两条路

长任务续航有压缩历史和主动换窗两条路,差别在于细节是否保留、恢复责任放在哪里。

用 Token Budget、History 和 Notes 理解长上下文任务的接力机制

长上下文任务有两种续航方式。

一种是把历史压成摘要,让模型带着摘要继续。另一种是换一个新的工作窗口,把旧记录留在外部,再用 History 和 Notes 按需找回。

这两条路解决的是同一个问题:任务还没结束,Context Window 先快满了。

区别在于,一个把旧信息重新打包后自动带入新上下文,另一个把工作区清空,把恢复责任拆给笔记和历史检索。

图:压缩和换窗对应两种完全不同的任务接力方式

摘要式压缩把历史变短,也会把细节变少

Compaction 的思路很直接。

当上下文快满时,系统把旧消息、工具结果、模型判断和任务进度整理成一份 summary,再把这份 summary 放进后续上下文。

它的优点是模型不用主动找旧信息。新一轮推理开始时,摘要已经在上下文里。

它的风险也来自这里。摘要会有损:

  • 长日志可能只剩结论
  • 失败路径可能被合并成一句话
  • 文件名、命令、错误码可能被漏掉
  • 被推翻的判断可能继续留在摘要里

对简单任务来说,这种损失可以接受。对排查、迁移、实验复盘这类任务来说,被删掉的细节往往正是下一步需要核对的证据。


Token Budget 让模型提前知道空间余额

另一条路径从预算感知开始。

运行时把当前窗口编号、窗口总容量和剩余 token 写进模型可见的上下文。模型不再只能等系统触发压缩,而是能在任务中途看到自己还剩多少空间。

这一步只负责提供事实:

事实 作用
当前 window id 区分正在使用第几个工作窗口
context window 容量 说明当前模型最大可承载多少 token
剩余 token 帮助模型判断是否需要提前腾出空间
阈值提醒 在空间下降到关键比例时提醒模型

预算感知不等于自动切换。它只是让模型拥有规划能力。

模型真正要判断当前任务阶段是否适合换窗口,以及旧上下文继续保留是否还有价值。


new_context 开启新工作区,不生成摘要

当模型判断需要换窗口时,可以调用 new_context

这个动作不会把旧历史总结成一段话,也不会创建新任务。它只是请求运行时在当前任务内开启一个新 Context Window。

运行时随后完成几件事:

  1. 等当前模型响应和工具调用收口
  2. 记录一次上下文切换事件
  3. 推进 window id
  4. 用系统指令、开发者约束、工具、权限和环境重建初始上下文
  5. 替换当前活跃历史
  6. 写入 checkpoint,保证任务可以恢复

新窗口是干净的。它不自动携带上一窗口里的长日志和旧对话。

这让模型获得空间,也避免过期信息继续干扰后续判断。


History 负责回查,Notes 负责接力

换窗口之后,旧内容不能消失,否则任务会断。

这里需要两类记忆。

机制 定位 适合保存什么
History 只读历史索引 原始消息、工具结果、旧窗口条目、完整证据
Notes 可写工作笔记 当前目标、已确认结论、失败路径、下一步、验证命令

History 的价值是准确。需要核对用户原话、错误日志或命令输出时,模型可以回到原始记录。

Notes 的价值是快。换窗前,模型把当前任务骨架写成短笔记。换窗后,先读 Notes 就能恢复方向,不必把几万 token 的旧历史重新塞进窗口。

这两者配合后,旧信息有了更细的使用方式:

  • 默认不进入新窗口
  • 任务需要时按点召回
  • 先读短状态,再查原始证据
  • 读完后继续更新 Notes

摘要和换窗的关键差异

维度 摘要式压缩 换窗加记忆
旧信息处理 压成 summary 保留原始历史,默认不带入
新窗口内容 自动携带摘要 只带启动上下文和必要提示
细节保留 取决于摘要质量 History 保留完整记录
状态接力 摘要承担 Notes 承担
模型角色 被动接受压缩结果 主动判断何时保存和换窗
主要风险 摘要遗漏或污染后续推理 Notes 没写好会断线

两条路径并存,适合的任务不同。

摘要式压缩适合自动化续航,换窗加记忆适合长任务、强证据和阶段边界清晰的工作。


这套设计带来的启发

长上下文管理不能只靠扩大窗口。

窗口再大,也会被日志、工具结果、失败分支和中间推测填满。更好的方向,是把上下文管理拆成四件事:

  • 让模型知道剩余预算
  • 让模型在阶段边界主动申请新窗口
  • 让运行时确定性地完成切换
  • 让外部记忆保存原始证据和短状态

这样一来,模型不用背着所有历史继续推理,也不会因为换窗失去任务连续性。

它能在新的工作区里继续做事。需要旧证据时,再从 History 中精确取回。需要任务骨架时,先读 Notes。

长任务需要的不是一份越来越长的聊天记录。更可靠的是一套能放下、能接上、能回查的记忆机制。

推荐阅读

大模型迎合评测要测什么

Agent 边界不能只写在提示词里

Agent 记忆系统难在取舍

数字分身 Agent 的工程内核

"你是专家"这句 Prompt 该删了吗