配置指南 · 约 6 分钟读完

Codex 上下文窗口:怎么开到 100 万 token

Codex 出厂的上下文上限是按性能和成本调过的,不是模型的物理上限。想让它一次记住更多代码、更多命令输出、更长的对话历史,得自己把上限抬上去——以及知道抬上去要付出什么。

GetPlus AI 编辑部最后更新:配置项以官方文档为准

还没装 Codex?先看Codex 安装总教程。装完不知道怎么用,看Codex 使用教程

三行配置直接抄

打开 ~/.codex/config.toml,把下面三行加进去。保存之后退出客户端重开,再新建一个会话——已经开着的会话不会跟着变。

~/.codex/config.toml

model = "gpt-5.6-sol"

model_context_window = 1000000

model_auto_compact_token_limit = 900000

模型名换成你实际要用的那个,窗口数字也要跟着换。

What each line does

三行分别在干什么

三行不是可以随便调换的等价设置:第一行决定天花板存不存在,第二行决定你要用到多高,第三行决定什么时候开始收拾旧对话。

为什么留两层余量

  • 窗口比标称值低 5 万

    防止实际计费口径和你算的不完全一致时直接撞墙。宁可少用一点,也不要在任务跑到一半时被截断。

  • 压缩阈值再低 10 万

    压缩历史这个动作本身要读旧内容、写摘要,也要吃 token。卡到窗口边缘才触发,压缩自己就没地方站了。

01

model

选模型

上下文窗口是模型自带的能力。模型本身不支持这么大的窗口,后面两行写多大都没有意义。

02

model_context_window

设定上下文预算

告诉 Codex 这次可以用多大的上下文,单位是 token。这是你给它划的上限,不是模型的物理上限。

03

model_auto_compact_token_limit

设定压缩触发点

用量到这个数就自动压缩历史。要留在窗口下面一截,给压缩动作本身留出余地。

The classic mistake

最容易踩的坑:写错位置就不生效

这三项必须放在配置文件的顶层,也就是文件里第一个方括号标题出现之前。TOML 的规则是:一旦出现方括号段落,后面所有的键都归这个段落管,直到下一个段落开始。

不生效

[某个段落]

some_key = "..."

# 这两行现在属于 [某个段落]

# 不是全局配置,Codex 读不到

model_context_window = 1000000

model_auto_compact_token_limit = 900000

生效

# 顶层,任何段落标题之前

model = "gpt-5.6-sol"

model_context_window = 1000000

model_auto_compact_token_limit = 900000

[某个段落]

some_key = "..."

如果你用 profile 把不同项目的配置分开管,那就在对应的 profile 段落里各写一份,顶层那份只作为默认值。写在顶层却期待某个 profile 生效,同样属于位置写错。

Try before you commit

只想试一次,不改默认值

命令行直接覆盖,退出这个会话就恢复原样。-c接的是同名配置项,写法和配置文件里一样。

建议的顺序

先用这条命令跑一天真实任务,确认体感和账单都能接受,再往配置文件里落。改默认值容易,改回来时你已经忘了原来是多少。

终端

codex -m gpt-5.6-sol \

-c model_context_window=1000000 \

-c model_auto_compact_token_limit=900000

Not working?

改完没生效,按顺序查这四件事

这个顺序是按出现频率排的。绝大多数「配置无效」最后都停在前两条,不必一上来就怀疑模型或账号有问题。

  1. 1

    没重启客户端

    改配置不会热加载。必须完全退出 Codex 客户端再重新打开,光保存文件不生效。

  2. 2

    还在老会话里

    重开之后要新建会话。接着聊之前那个会话,仍然按旧的上限走。

  3. 3

    写进段落里了

    这三行前面只要出现过方括号标题,它们就归那个段落管,全局配置读不到。

  4. 4

    模型本身不支持

    给一个 20 万窗口的模型配 100 万,多出来的部分并不存在,请求会被截断或直接报错。

What it costs

开大之后要付出什么

上下文不是越大越好。官方把默认值调小是有原因的,三笔账要一起算。

压缩机制不是缺陷,是设计。它主动扔掉噪音,让模型把注意力留给真正相关的内容。

每一轮请求都要把上下文里的内容重新送一遍。窗口塞到 90 万再问一句话,这一句话的成本远不是「一句话」的成本。

上下文越长,第一个字吐出来的等待越久,来回对话的体感会明显变钝。

未必更准

超长上下文里塞满不相关的旧文件和旧命令输出,模型反而更容易被无关内容带偏。压缩机制存在的意义之一,就是主动扔掉噪音。

Decide first

什么时候值得开

先确认自己属于哪一类再动手。默认值确实是调过的,抬上去之前要有具体理由。

值得开

  • 大型 monorepo,一次任务要横跨十几个包才看得明白
  • 长时间的重构或迁移,中途丢掉早期约定就要返工
  • 工具输出特别大:整份构建日志、大批测试报告需要一起看

不值得开

  • 日常修 bug、写单个功能,默认窗口完全够用
  • 只是怕它忘事:先把关键约定写进项目说明文件,让它每次都读到,比撑大窗口便宜得多
  • 还没算过账:先按当前用量跑几天,确认真的撞到了上限再改

FAQ

Codex 上下文常见问题

Codex 的上下文窗口默认是多少?

Codex 出厂的上下文上限是按性能和成本调过的,通常小于模型本身支持的窗口,也会随版本调整。想知道当前默认值,以你所用版本的官方文档和客户端内显示为准,不要照抄别人截图里的数字。

改完 config.toml 没生效,最常见的原因是什么?

按顺序查四件事:一是没有完全退出客户端再重开;二是重开后仍在使用旧会话,需要新建会话;三是配置写到了某个方括号段落下面,不在文件顶层;四是所选模型本身不支持这么大的窗口。

上下文开大了会更费钱吗?

会。每一轮请求都要把上下文里已有的内容重新送一次,上下文越满,同样一句话的开销越高,首字响应也越慢。开大之前建议先用命令行参数试跑几天真实任务,确认账单和体感都能接受。

model_auto_compact_token_limit 设成多少合适?

设成比窗口低一截的数,不要贴着窗口写。压缩历史本身也要读旧内容、写摘要、消耗 token,卡在边缘才触发时压缩过程会没有余地。窗口 100 万时,压缩阈值取 90 万是一个稳妥的起点。

是不是所有模型都能开到 100 万 token?

不是。窗口大小由模型决定,配置文件只能在模型支持的范围内做限制,不能凭空扩大。换模型时先确认该模型官方记录的窗口,再按同样的思路往下留出余量。

只想试一次,不想改默认配置怎么办?

用命令行参数临时覆盖。启动 Codex 时带上 -m 指定模型、-c 指定同名配置项即可,退出这个会话就恢复原样,不会影响 config.toml 里的默认值。

Official references

本文依据与继续阅读

模型名称、上下文窗口大小和配置项都会随版本更新。文中的数字用于说明配置方法,实际数值请以你所用版本的官方文档和客户端内显示为准。

Next routes

按你当前的问题继续

本页只讲上下文窗口怎么配。安装、登录和第一个开发任务请转到对应教程,避免在这里混用过期命令。

用量不够用时再考虑套餐问题:先看剩余用量,再决定要不要补充额度。