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。
运行时随后完成几件事:
- 等当前模型响应和工具调用收口
- 记录一次上下文切换事件
- 推进 window id
- 用系统指令、开发者约束、工具、权限和环境重建初始上下文
- 替换当前活跃历史
- 写入 checkpoint,保证任务可以恢复
新窗口是干净的。它不自动携带上一窗口里的长日志和旧对话。
这让模型获得空间,也避免过期信息继续干扰后续判断。
History 负责回查,Notes 负责接力
换窗口之后,旧内容不能消失,否则任务会断。
这里需要两类记忆。
| 机制 | 定位 | 适合保存什么 |
|---|---|---|
| History | 只读历史索引 | 原始消息、工具结果、旧窗口条目、完整证据 |
| Notes | 可写工作笔记 | 当前目标、已确认结论、失败路径、下一步、验证命令 |
History 的价值是准确。需要核对用户原话、错误日志或命令输出时,模型可以回到原始记录。
Notes 的价值是快。换窗前,模型把当前任务骨架写成短笔记。换窗后,先读 Notes 就能恢复方向,不必把几万 token 的旧历史重新塞进窗口。
这两者配合后,旧信息有了更细的使用方式:
- 默认不进入新窗口
- 任务需要时按点召回
- 先读短状态,再查原始证据
- 读完后继续更新 Notes
摘要和换窗的关键差异
| 维度 | 摘要式压缩 | 换窗加记忆 |
|---|---|---|
| 旧信息处理 | 压成 summary | 保留原始历史,默认不带入 |
| 新窗口内容 | 自动携带摘要 | 只带启动上下文和必要提示 |
| 细节保留 | 取决于摘要质量 | History 保留完整记录 |
| 状态接力 | 摘要承担 | Notes 承担 |
| 模型角色 | 被动接受压缩结果 | 主动判断何时保存和换窗 |
| 主要风险 | 摘要遗漏或污染后续推理 | Notes 没写好会断线 |
两条路径并存,适合的任务不同。
摘要式压缩适合自动化续航,换窗加记忆适合长任务、强证据和阶段边界清晰的工作。
这套设计带来的启发
长上下文管理不能只靠扩大窗口。
窗口再大,也会被日志、工具结果、失败分支和中间推测填满。更好的方向,是把上下文管理拆成四件事:
- 让模型知道剩余预算
- 让模型在阶段边界主动申请新窗口
- 让运行时确定性地完成切换
- 让外部记忆保存原始证据和短状态
这样一来,模型不用背着所有历史继续推理,也不会因为换窗失去任务连续性。
它能在新的工作区里继续做事。需要旧证据时,再从 History 中精确取回。需要任务骨架时,先读 Notes。
长任务需要的不是一份越来越长的聊天记录。更可靠的是一套能放下、能接上、能回查的记忆机制。
推荐阅读
原文地址: https://www.cveoy.top/t/topic/qHAa 著作权归作者所有。请勿转载和采集!