Codex config.toml 开启 1M 上下文窗口:完整配置指南与 Token 成本深度分析
前言
GPT-5.6 Sol 的百万上下文窗口此前仅对 API 用户开放,近期已向 ChatGPT 和 Codex 账户全面放开。配置操作本身很简单,但 OpenAI 明确指出:默认配置是在性能与成本之间权衡后的结果,超出默认窗口后 token 消耗翻倍不止。
本文完整梳理:如何开启、开启后会发生什么、以及你的任务是否值得开启。
一、配置方法:三行写在哪、怎么写、有什么坑
1.1 全局配置(推荐)
Mac/Linux 上编辑 ~/.codex/config.toml,在文件最顶部写入:
model = "gpt-5.6-sol"
model_context_window = 1000000
model_auto_compact_token_limit = 900000
保存后重启桌面端,开启新对话即生效。
1.2 常见踩坑点
这三行必须放在所有
[section]标题之前。
TOML 的解析逻辑是:遇到 [profiles] 或 [tools] 等节头,前面的全局键值就已处理完毕。若将这三行夹进某个 section,它们会变成该 section 的子配置而非全局配置,导致配置不生效且无任何报错——你会一直以为已经开启,实际上并没有。
验证是否生效:开启新对话后输入 what model are you using?,让 Codex 自行报告当前模型。
二、不想修改全局配置的两种替代方案
2.1 临时 CLI 方式(单次会话生效)
codex -m gpt-5.6-sol \
-c model_context_window=1000000 \
-c model_auto_compact_token_limit=900000
注意:
-c参数值为 TOML 格式,不是 JSON。格式写错会导致参数解析失败。
2.2 Profile 方式(按需加载)
适合「某些任务用大上下文,其他任务用默认」的场景。将这三行写入 ~/.codex/large-context.config.toml,需要时通过 codex --profile large-context 加载。
版本兼容提示:Codex 0.134.0 起
--profile行为有破坏性变更,不再读取config.toml里的[profiles.<name>]表,历史 Profile 设置需迁移至独立的~/.codex/<name>.config.toml。使用过 Profile 功能的用户请先确认版本和文件结构。
2.3 三种方式对比
| 方式 | 是否持久化 | 影响范围 | 适用场景 |
|---|---|---|---|
修改 ~/.codex/config.toml |
是 | 全局默认 | 日常都用大上下文 |
CLI -c 参数 |
否 | 单次会话 | 临时试用,不想动配置 |
| Profile 独立文件 | 是 | 按需加载 | 不同任务用不同配置 |
三、Token 消耗机制:开启后到底多花多少
3.1 一个关键事实:输入 token 才是大头
以一组真实会话数据为例:一整天的工程工作,总消耗 119,743,174 tokens,其中输出仅 219,381 tokens,不足总量的 0.2%。
产出了约 20 万 token 的代码和回复,却带入了 1.19 亿 token 的上下文。
结论:让回答变短对省钱几乎没有作用。 贵的不是模型输出了什么,而是每一轮对话都要将整个上下文重新带入。
3.2 上下文窗口扩大的实际影响
将上下文窗口从默认值扩展到 100 万 token,每轮可携带更多历史信息,模型视野更广,但每轮的输入 token 也同步增长。这正是 OpenAI 所说「超出默认窗口后 token 消耗翻倍不止」的实际含义。
3.3 两个需要知道的数字
- 上述数据基于 GPT-5.5 公开 API 单价估算,不等于 Codex 订阅用户的边际成本,直接用 API 单价推算账单会高估实际费用。
- Codex 中实测可用上下文约为 82 万 token,而非整 100 万——系统存在预留长度,规划任务规模时需留出这部分余量。
四、上下文更长,模型是否更智能?
评测数据给出了一个反直觉的答案。
MRCR v2 评测结果:GPT-5.6 Sol 在 1M 上下文下,性能从 91.5% 降至 73.8%,下降约 17.7 个百分点。MRCR v2 是长文档检索任务,测量的是模型在超长上下文中定位关键信息的能力。
结论:1M 上下文是双向代价。 不是「贵但更强」,而是「贵且在某些场景更弱」。
受影响最明显的场景
需要模型在极长上下文中精确定位某个细节,例如:排查跨多个文件、历史很长的 bug,模型需要记住三十轮前某个变量的定义。这类场景下,1M 上下文更容易导致模型漏掉或混淆关键信息。
受影响不明显的场景
任务较为集中,即便上下文较长,真正需要关注的信息密度不高,模型主要执行生成而非检索任务。
五、决策框架:该不该开大上下文
倾向开启大上下文
- 跨大型仓库排查,需要模型同时参考大量文件
- 长时间连续的架构或重构任务,不希望频繁中断切割上下文
- 任务对精确检索要求不高,主要需要模型在大背景下维持连贯性
倾向使用默认配置
- 单文件或小范围改写,上下文本身用量有限
- 需要模型精确定位长上下文中的某个具体信息
- 日常问答和代码补全,对 token 消耗较敏感
六、通用的 Token 消耗控制策略
无论是否开启大上下文,以下三点优先级最高:
- 及时拆分长会话:用交接摘要衔接,避免单个会话无限增长。
- 日志放文件,按需读取:大段日志不要直接粘贴进上下文,改为让模型按需读取文件。
- 规则和背景写进 AGENTS.md:稳定的上下文信息固化为配置,不要每次重复粘贴。
核心逻辑一致:输入 token 是成本大头,管理每轮带入的信息量才是降本最直接的手段。把上下文做薄,往往比把窗口开大更值得优先考虑。
总结
配置本身门槛不高,所有步骤均可按本文操作。真正需要想清楚的是:100 万 token 的窗口开给什么任务,以及如何管控输入防止成本失控。
| 核心结论 | 说明 |
|---|---|
| 配置位置 | 必须在 config.toml 所有 section 之前 |
| 实际可用上下文 | 约 82 万 token,非整 100 万 |
| 成本驱动因素 | 输入 token,而非输出 |
| 性能影响 | 长文档检索任务下降约 17.7% |
| 最优控制策略 | 拆分会话 + 文件化日志 + 固化背景信息 |
如果需要使用 Claude Code,可以私我。也欢迎有需求的企业进行深度合作。
更多推荐


所有评论(0)