奇怪的是,我选的模型明明是 GPT-5.6-Sol。OpenAI 官网写得很清楚:它有 1,050,000 tokens 的 context window。105 万都能装满,我这次任务到底塞了多少东西?

这两天我在 Codex 里跑一个长任务,聊着聊着,屏幕上突然跳出一句:

Codex ran out of room in the model's context window.
Start a new thread or clear earlier history before retrying.

上下文装满了。

奇怪的是,我选的模型明明是 GPT-5.6-Sol。OpenAI 官网写得很清楚:它有 1,050,000 tokens 的 context window

105 万都能装满,我这次任务到底塞了多少东西?

我打开了 Codex 本机的模型缓存。今天拉到的 GPT-5.6-Sol 配置是:

{
  "context_window": 272000,
  "max_context_window": 272000,
  "effective_context_window_percent": 95
}

算下来,这次运行采用的有效上下文是:

272000 × 95% = 258400

官网写 105 万,我这台机器上的 Codex 实际按 25.84 万计算。大约只有四分之一。

你可以先查自己的

Codex 会把当前模型目录缓存到:

~/.codex/models_cache.json

电脑里装了 jq 的话,先让当前 Codex CLI 输出它拿到的模型目录:

codex debug models \
  | jq '.models[]
    | select(.slug == "gpt-5.6-sol")
    | {
        slug,
        context_window,
        max_context_window,
        effective_context_window_percent
      }'

我用 Codex CLI 0.144.3 和 Codex Desktop 内置的 0.144.2 分别执行,拿到的都是 272000 / 272000 / 95

如果你的版本还没有 codex debug models,再直接读取缓存:

jq '.models[]
  | select(.slug == "gpt-5.6-sol")
  | {
      slug,
      context_window,
      max_context_window,
      effective_context_window_percent
    }' ~/.codex/models_cache.json

重点看三个字段:

  • context_window:Codex 当前拿到的原始窗口
  • max_context_window:这份配置允许的上限
  • effective_context_window_percent:实际可用比例

如果你的结果也是 272000 和 95,有效上下文就是 258400

不要直接修改这个 JSON。它是 Codex 拉下来的模型目录缓存,后续还会被刷新;改本地数字也不会凭空多出可用上下文。电脑里同时装了多个 Codex 客户端时,缓存还可能被不同版本先后覆盖,优先看 codex debug models 的即时输出。

GPT-5.6 官网规格、本地 Codex 配置和有效上下文对比

GPT-5.6 官网规格、本地 Codex 配置和有效上下文对比

105 万和 25万,为什么能同时出现

OpenAI 官网展示的是 GPT-5.6-Sol 的 API 模型规格。Codex Desktop、Codex CLI 运行时还会拿到一份产品侧的模型配置。

我这台机器今天拿到的配置,把 GPT-5.6-Sol 限在了 27.2 万;再留出 5% 空间后,任务看到的有效值是 25.84 万。

这块空间也不只装你发出去的文字。下面这些都会占位置:

  • Codex 自己的系统指令
  • AGENTS.md、Skills 和项目规则
  • 之前的聊天记录
  • 读取过的代码、日志和文档
  • 工具调用及其返回结果
  • 给模型输出预留的空间

一个大型仓库任务里,Codex 连续读几十个文件、跑几轮测试、接收大段日志,窗口会比肉眼看到的对话消耗得快。

所以,“我才聊了几十轮”没什么参考价值。真正装进去的,还有你看不到的运行指令和工具结果。

已经有人发现数值变了

7 月 13 日,OpenAI Codex 官方仓库出现了一个相关 Issue:

GPT-5.6 Sol context cut 353K → 258K despite advertised 1.05M

提交者记录到,Codex 模型目录里的原始窗口从 372000 变成 272000,按 95% 计算后,有效上下文从 353400 降到 258400

少了 95,000 tokens,降幅约 26.9%

截至我写稿时,这个 Issue 有 22 条评论和 23 个 reaction,当天以 completed 状态关闭。评论里有人讨论推理优化、显存和性能配置,但没有看到维护者给出明确的变更原因。

因此,目前能确认的只有两件事:

  1. 有用户在 Codex 模型目录里记录到了 353400 → 258400 的变化
  2. 我今天本机的 GPT-5.6-Sol 配置,确实也是 258400

至于所有账号是否统一、是否属于灰度策略、以后会不会再调,现有信息还下不了结论。你自己的缓存结果更有参考价值。

25 万够不够用

普通问答和小功能开发,25.84 万依然很大。

麻烦集中在长时间、重工具、跨模块的工程任务:

  • 一条任务里持续分析整个仓库
  • 反复读取大文件和长日志
  • 多轮修改、测试、回滚再修改
  • 同时加载大量项目协议和 Skills
  • 把需求讨论、架构决策、实现过程全塞在同一个任务里

窗口接近上限后,Codex 会压缩前面的上下文。压缩能让任务继续,但早期细节可能只留下摘要。你会开始看到它重新读文件、忘记某个边界条件,或者需要你再次解释已经确认过的决定。

这才是“缩水”对日常使用最直接的影响:一个原本还能继续跑的长任务,会更早进入压缩、拆分和重新对齐。

Codex 上下文由系统指令、项目文件、工具结果、聊天历史和输出预留共同占用

Codex 上下文由系统指令、项目文件、工具结果、聊天历史和输出预留共同占用

别把整个项目押在一条对话里

本地配置改不了产品给出的窗口,但任务组织方式可以改。

我现在会把长任务拆成几个可以交接的阶段:

  1. 调研完成后,把结论和证据写进项目文档
  2. 方案确认后,记录决策、边界和未解决问题
  3. 每完成一批修改,就留下测试结果和下一步
  4. 新任务直接读取这些文件,避免重新讲完整背景

长期有效的规则放进 AGENTS.md 或 CLAUDE.md,当前项目状态放进单独的跟踪文档,代码变化交给 Git 记录。

这样即使任务被压缩、窗口耗尽或者必须新开对话,项目状态也不会跟着消失。

先看数字,再决定怎么用

我今天查到的结果很明确:

GPT-5.6-Sol 官网模型规格:1,050,000
Codex 本地原始窗口:       272,000
Codex 本地有效窗口:       258,400

放在一起看,Codex 里能用到的有效上下文约为官网模型规格的四分之一。

同一个 GPT-5.6-Sol 名字,不代表每个产品、账号和运行环境都会交付同样大的窗口。

先跑一遍上面的命令,看看你 Codex 里的 GPT-5.6 到底有多大。

参考资料
  • OpenAI GPT-5.6-Sol 模型文档

https://developers.openai.com/api/docs/models/gpt-5.6-sol

  • OpenAI Codex Issue #32806

https://github.com/openai/codex/issues/32806

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐