Codex 上下文

Codex Context Window 与 Compaction:上下文为什么越用越重

上下文窗口不是套餐额度。它更像当前任务的工作台:提示、文件、日志和历史都要占位置;Compaction 会整理工作台,但不能替你重新定义任务。

个人观察
长会话后期更容易出现重复读取、遗忘局部约束或回答变慢。
已核实
OpenAI 将 compaction 描述为在保留继续任务所需状态的同时减小上下文大小。
适用边界
压缩不是无损归档,也没有一个适用于所有仓库的固定触发点。

先看结论

  • 上下文窗口容量与计划额度是两个不同概念。
  • Compaction 保留相关状态并缩小上下文,但压缩质量取决于任务是否清晰。
  • 新主题、独立项目和大量历史噪音通常值得开启新会话。

上下文的四层材料

  1. 01仓库规则
  2. 02当前目标
  3. 03读取材料
  4. 04工具输出
稳定指令、当前任务、读取材料和工具输出共同占用上下文;越靠近当前目标,价值越高。

工作台里放了什么

系统与仓库指令、你的任务描述、Agent 读取的代码、工具返回、测试日志、图片描述和之前的结论都会进入当前工作上下文。短提示并不代表任务轻,因为真正占空间的往往是后续读取和输出。

上下文窗口限制的是模型一次能够有效处理的材料,套餐额度限制的是一段时间内可使用的资源。把两者混在一起,会让诊断走错方向。

Compaction 实际做什么

当上下文增长时,系统可以把此前交互压缩成更小的状态表示,让任务继续。理想情况下,关键目标、已完成工作、剩余事项和重要约束会保留,冗长细节被折叠。

它不是完整会话备份。任务同时包含多个项目、反复改变目标或依赖某段精确日志时,压缩摘要更难保留每个细节。因此,清晰的任务边界也会提高压缩后的可继续性。

什么时候继续,什么时候新开

同一功能、相同验收标准、剩余步骤清楚时,可以继续并让 compaction 工作。新项目、完全不同的目标、旧日志占主导,或需要重新建立事实基线时,新会话通常更干净。

开新会话前留下一个短交接:当前提交、已完成项、未完成项、关键文件、不能改的边界和验证命令。这样不是丢上下文,而是主动选择高价值上下文。

降低上下文噪音的四个动作

让 Agent 先搜索再读取,限定日志行数,按主题批处理改动,把长期规则放入 AGENTS.md 或技能文件。对已经结束的讨论不要反复粘贴全文。

目标不是把输入压到最短,而是提高每一段上下文的信息密度。必要的规格可能很长,重复的成功日志即使很短也没有价值。

  • 相关文件优先,不做无边界全仓扫描。
  • 保留失败附近日志,而不是完整成功输出。
  • 一个任务只保留一个主要目标。
  • 压缩后重新声明关键验收边界。

rootchen 的工作台比喻

我把上下文看成桌面:材料多不是问题,找不到当前任务才是问题。Compaction 是整理桌面,新会话则是换一张干净桌子。

来源与延伸阅读

  1. Compaction 官方说明 · OpenAI
  2. Codex Prompting Guide · OpenAI