OpenAI Codex 取消上下文压缩,改走硬切窗口加外部记忆

OpenAI Codex 取消上下文压缩,改走硬切窗口加外部记忆

Codex 把"总结旧对话再塞回去"的压缩机制,换成清空窗口、靠笔记和历史记录续命的新架构

阅读原文
发布日期2026-08-31
热度指数90
阅读时长2344 字

事件:Codex 放弃"摘要压缩",转向硬切窗口加外部记忆

8 月 31 日,知乎热榜上"怎么看 OpenAI 的 Codex 将取消上下文压缩,换成「硬切窗口」和「外部记忆」"话题冲到 152 万热度,起因是开发者从 Codex 开源仓库的提交里发现,OpenAI 正在把沿用已久的上下文压缩机制换成一套新架构。过去,Codex 上下文快满时会先把旧对话总结成一段摘要、再连摘要一起喂回模型继续干;新路径则是清掉旧窗口、开一个全新上下文窗口,任务连续性交给模型自己维护的笔记和可查询的历史记录。

这不是社区猜测。在 openai/codex 仓库里,#27488 让模型可以主动要求开新窗口,#29743 规定 TokenBudget 模式下连手动 /compact 和自动压缩都统一执行 start_new_context_window(),#39827 为 token-budget 会话新增了 notes 与 history 两组工具,#41803 又允许模型默认开启 token budgeting,这些提交从 8 月中旬到 8 月底陆续合并,方向完全一致。讨论源头见 知乎原问题,官方代码见 openai/codex 仓库。

压缩和硬切窗口到底差在哪

传统压缩像"让模型给自己写小抄,然后把原件烧掉":旧对话被压成一段摘要,摘要再被塞回上下文。问题在于这是有损压缩,而且你不知道丢了什么——越长的会话,摘要的摘要层层套娃,最早的关键约束可能早就被稀释没了;压缩本身还要跑一次全量输入的模型调用,又慢又烧钱,会话越长这一刀越贵,甚至出现过"想压缩结果压缩动作本身超窗"的黑色幽默。

硬切窗口则是明牌:旧窗口清掉就是清掉,同时把"工作状态"和"原始事实"分开存放。新路径下,模型维护一份 notes 工作笔记(跨窗口存活,相当于 checkpoint),历史对话则完整存在 history 里按需查询。需要某条旧细节时,不用把整段历史塞回上下文,而是用 window_id 加 item_id 精确读回那一条。类比来说,上下文窗口是内存,notes 是当前任务的检查点,history 是冷存储里的完整转录。

笔记和历史记录怎么用,对写代码意味着什么

对开发者最直接的变化是:如果任务长到跨窗口,Codex 能不能接得上,取决于笔记质量,而不是压缩摘要保住了多少。官方工具描述里,notes 是"跨上下文窗口存活的私有笔记",history 是"窗口重置后恢复过往对话"的只读查询。要精确找回某条记录,需要 window_id 和 item_id 两个参数。

这意味着长任务里,模型会被要求把目标、决策、进度、重要引用写成结构化的笔记,比如"修复 OAuth 登录超时;决定不改 token refresh API,只调客户端 retry;auth/session.rs 已完成,login_test 还剩 2 个失败"。实测中,跨窗口续跑任务时最值得观察三点:新窗口是否还记得任务目标和约束、能否按需翻回旧的工具输出、以及 notes 写得好不好是否直接决定续跑质量。上游提交见 PR #39827(新增 notes 与 history 工具)。

对谁有影响:重度用户要重新适应,小白用户可能变难

受影响最大的是两类人。一是每天跑长任务、多轮重构的重度用户:以前靠自动压缩硬撑的长会话,现在会被更频繁地切窗口,能不能续上完全看新机制;好处是原始对话不再被摘要污染,排查问题时能翻到真实历史,这恰恰是压缩模式最被诟病的一点。二是刚上手的小白:压缩至少是厂商兜底,改成外部记忆后,笔记记不记、记得好不好,直接影响任务连续性,体验短期内大概率变差。

对团队而言,这是把"记忆"从模型脑子里搬到硬盘上,本质是工程化的进步,但依赖外部记忆的 Agent 会引入新问题:模型不知道自己忘了什么,就不会主动去查;检索还可能捞回过期信息。社区里已经有人给出实操建议:任务开始前把目标和约束写进 plan 文件、维护简陋但抗压的进度文件、单独记录"为什么选 A 不选 B"的决策、把任务拆到一个窗口能干完。这些做法在硬切窗口时代会从"加分项"变成"必需项"。

怎么验证新机制是否生效

想验证自己用的 Codex 是否已经走上新路径,可以看几条线索。一是升级到最新版 Codex CLI 或桌面应用,观察上下文快满时是出现"生成摘要"还是"切换窗口"的行为差异;二是看会话里模型是否开始调用 notes、history 这类工具,出现窗口切换后是否带着笔记继续工作;三是在长任务中故意制造跨窗口场景,检查任务目标是否还能被准确复述。

需要提醒的是,这套新架构目前在官方仓库中处于逐步开启状态,#41803 只是让模型"默认启用 token budgeting",并非所有用户所有模型都已强制切换,部分路径仍在灰度。如果你遇到窗口切换后任务失忆、笔记查询失败,这属于新机制的已知磨合期问题,建议到 openai/codex 的 issues 区反馈,那里已经有大量关于 token budget、窗口切换的讨论。

成本、风险与下一步行动

成本结构会变。压缩机制每次触发都要为全文摘要付一次模型调用费,会话越长越贵;硬切窗口省掉了这笔重复总结的开销,但换来的是模型主动查询 history 的额外调用,以及跨窗口续跑的不确定性。对重度用户,月度 Token 账单的构成会发生肉眼可见的变化,值得盯一个月对比。

风险方面,最大的两个坑:一是"未知的未知"——agent 不知道它忘了什么,凭残缺上下文也能写出自洽但错误的结果,需要靠强制读取纪律来缓解;二是记忆污染——外部记忆里存着早已过时的方案,被检索出来当成金科玉律,需要版本管理和过期机制。编辑判断是:方向本身是对的,把记忆从"模型脑子里"搬到"可查询的硬盘上"符合长程 Agent 的演进趋势,但短期体验会有阵痛,重度用户应当把"笔记纪律"和"任务拆分"当成基本功来练,而不是等模型自己变聪明。

来源与说明

本文由 AI 潮汐编辑部基于官方公告与公开资料整理,补充了行业影响、适用场景和行动建议,帮助你在阅读原文前先理解这条信息为什么重要。

原始来源:https://github.com/openai/codex/pull/39827

如发现事实、价格或链接有误,可通过 联系我们 提交更正。

常见问题

我的 Codex 现在会被强制切窗口吗?

不一定。新路径目前是逐步灰度开启,官方提交允许模型默认启用 token budgeting,但并非所有账号、所有模型都立刻强制切换。升级到最新版后观察行为即可,传统压缩在未开启 TokenBudget 的会话里仍会保留。

硬切窗口后,Codex 会忘掉我之前说的话吗?

模型视角的上下文会被清空,但你的原始对话完整存在 history 里,模型可以按 window_id 和 item_id 精确查询。关键是模型是否记得去查——所以笔记质量直接决定续跑效果,建议任务关键约束写进项目文件而不是只留在对话里。

这个改动是好事还是坏事?

方向上是进步:有损压缩让你不知道丢了什么,硬切窗口至少是明牌,原始记录可恢复,长任务可排查性更强。短期代价是笔记依赖模型和用户的"纪律",小白用户可能觉得不如以前省心。

我需要为这个改动做什么?

三个动作:升级 Codex 到最新版体验新路径;长任务开始前把目标、约束、决策写进项目文件(如 AGENTS.md、plan 文件);把大任务拆成单窗口能完成的小块,减少对上下文管理的依赖。