Skip to main content

模型档位、推理强度与速度

模型选择不是“永远选最强”,速度也不是“把所有开关都调快”。一次 Codex 任务的实际体验,通常由四个变量共同决定:
  1. 模型档位决定基础能力、工具使用能力和处理复杂代码的上限。
  2. 推理强度决定同一个模型愿意投入多少分析资源。
  3. 服务层级决定请求在服务端的速度优先级,以及可能增加的用量成本。
  4. 上下文和任务组织决定模型是否需要反复寻找信息、修正误解和重新执行。
因此,速度、成本和质量不是三个互不相关的开关。一个过大的上下文可能让最快的模型反复返工;一个过低的推理档位可能省下几十秒,却多出几轮人工纠错;一个高优先级服务层级可能缩短等待,但并不会弥补错误的任务边界。 本页只讨论如何做这些选择、如何配置、如何测量,以及如何在 Codex 版本变化时重新确认。模型名称、可用档位、服务层级和命令行参数都可能随账号、入口、地区与版本变化,示例不能代替本地结果。

先确认当前能力

在修改配置前,先确认你正在使用哪个 Codex、从哪里启动、当前账号能看到什么。不要直接把旧文章里的模型名写入配置,也不要把一次实验的结果当成所有入口都相同。
进入交互会话后,优先查看:
重点记录以下信息: 如果 /model、/status 或帮助中的名称与本文不同,以本机显示为准。遇到未知字段、无效值或模型不可用,不要连续猜字段名;先恢复到最小配置,再逐项验证。

一张决策表

先用任务的四个维度做判断,再决定模型和推理档位:
  • 范围:只改一个位置,还是跨多个模块和入口?
  • 不确定性:根因明确,还是需要探索和假设验证?
  • 错误代价:错了只是返工,还是会影响数据、权限、生产行为?
  • 重复次数:偶尔执行一次,还是每天批量运行数十次?
这不是固定配方。正确做法是先选一个成本可接受的起点,跑一组代表任务,再根据“首次通过率、总耗时和人工修复时间”调整。只看模型回复的等待时间,会把返工成本隐藏起来。

模型档位怎么选

主力模型

主力模型适合复杂编程、跨文件修改、工具调用、代码审查、架构取舍和需要自己验证的工作。它不一定每次都最快,但当任务需要理解多个约束时,较高的一次命中率通常能减少往返。 适合使用主力模型的信号:
  • 你无法用一句话描述预期 diff;
  • 根因尚未确定,需要读取代码、日志和测试;
  • 修改会影响公共接口、数据格式、权限或并发行为;
  • 需要比较多个方案并解释取舍;
  • 轻量模型已经出现遗漏、重复试错或测试修复循环。

轻量模型

轻量模型适合边界清楚、结果容易机械验收的工作,例如批量清理 import、格式化、补简单断言、生成局部测试骨架或读取文件并提取固定信息。它的价值不只是单次便宜,而是可以承担更多相互独立的短任务。 使用前要给它明确文件范围和验收命令。一个“简单”任务如果需要它自行推断架构,就已经不再是轻量任务。轻量模型也不应默认承担安全审查、复杂迁移或最终设计决定。

即时响应模型

某些版本提供专门优化即时反馈的模型或研究预览模型。它适合短问答、快速查看局部代码和高频小步迭代,但通常不应因为响应很快就承担高风险的最终修改。是否可用取决于账号和入口;在 /model 中看不到时,不要修改配置强行启用。

不要依赖过时名称

旧教程中的模型名称可能已经弃用、改名或只在 API 侧可用。模型不可用时按下面顺序排查:
  1. 在 /model 查看当前账号实际可选列表。
  2. 查看 codex --help 与官方模型文档的当前说明。
  3. 检查是 ChatGPT 登录、API key 还是其他提供方。
  4. 检查 profile、项目配置和命令行是否覆盖了模型。
  5. 将配置恢复为已确认可用的模型,再进行下一步实验。
不要把“模型名称能写进 TOML”当成“模型真的可调用”。有效性必须由启动、会话状态和一次无害请求共同确认。

推理强度是什么

model_reasoning_effort 控制支持推理的模型投入多少分析资源。它不是权限开关,也不是质量保证;高档位仍然可能理解错需求,低档位也可能正确完成简单任务。 常见档位从低到高大致包括: 档位可选范围依模型而不同。一个模型拒绝 xhigh,不代表配置语法错误;一个模型接受 medium,也不代表另一个模型会接受它。切换模型后应重新确认推理档位。

什么时候提高推理强度

出现以下情况时,先把当前模型提高一档,再考虑换模型:
  • 第一次方案忽略了已经提供的边界条件;
  • 测试能通过,但实现没有解释清楚并发、错误恢复或兼容性;
  • 模型在多个候选根因之间来回摇摆;
  • 需要从较多文件中建立因果链,而不是只做局部编辑;
  • 你愿意等待更久,但不想改变模型和上下文组织。
提高后必须重新运行相同的验证。不能用“回答更长”证明质量更高,应比较测试、diff、边界覆盖和人工修复时间。

什么时候降低推理强度

以下任务通常可以降低档位:
  • 变更位置和目标都已明确;
  • 预期 diff 很小且有现成测试;
  • 任务可以按文件列表批量拆分;
  • 失败后容易回滚,且不会触发外部副作用;
  • 你在同一个短反馈循环里重复执行类似动作。
不要把 low 当成“更聪明地省钱”。如果降低档位导致多两轮纠错,总时间和总用量可能反而更高。

服务层级与快速模式

服务层级与推理强度解决的是不同问题:
  • 推理强度回答“模型投入多少分析资源”;
  • 服务层级回答“请求以什么速度优先级处理”。
一些 Codex 版本提供 service_tier,常见值可能包含 flex 和 fast。flex 偏向弹性成本,fast 偏向响应速度;具体可用值、资格和是否需要 feature flag 必须查看当前版本说明。不要因为配置文件接受字符串就假设服务端使用了它。 可能的配置形态如下,仅用于说明验证思路:
某些版本将快速能力与 feature flag 配合使用,形态可能类似:
实际键名和默认值以本机配置参考为准。若会话内提供 /fast,应先查看:
再按当前版本支持的形式临时打开或关闭。服务层级只改变排队和响应侧的取舍,不会:
  • 提高沙箱权限;
  • 绕过审批;
  • 让过时模型重新可用;
  • 自动缩短过长上下文;
  • 替代测试和 diff 审查。

什么时候值得使用快速层级

适合开启快速层级的情况:
  • 你正在进行短而密集的交互式迭代;
  • 延迟确实阻塞了人工决策;
  • 当前模型和推理档位已经正确;
  • 你能接受更高的 credit 或 API 成本;
  • 任务不会因为追求响应速度而减少验证。
不适合长期默认开启的情况:
  • 大量后台任务,对单次响应延迟不敏感;
  • 还没有测过它是否真的改善端到端时间;
  • 任务瓶颈是上下文、测试或并行冲突;
  • 账户额度紧张,或成本上限不明确。

速度、成本和质量的真实账本

把一次任务的成本拆成四部分:
模型等待只是第一项。对开发任务来说,返工时间往往更大。一个更快的轻量模型如果第一次通过率明显下降,最终可能比主力模型更慢、更贵。 建议至少记录这些指标: 质量不能只用“回答是否看起来合理”衡量。对代码任务,至少需要一个可重复的验收信号:测试退出码、类型检查、构建结果、基准数值、diff 范围或人工审查清单。

配置层级与一次性实验

长期默认适合放在用户级 config.toml,但实验应优先用命令行覆盖,避免一次试验改变所有项目。用户级配置通常位于:
一个保守的默认示例:
不要把未确认的模型名和实验字段直接复制进去。一次性实验优先采用当前版本支持的命令行形式,例如:
或者使用专用参数(参数名以 codex --help 为准):
-c 的值按 TOML 解析,字符串需要双引号。命令行覆盖通常只影响当前进程,不会改写配置文件。实验结束后启动一个普通会话,确认默认值没有被意外改变。

上下文减负:先减少无效计算

上下文管理经常比换模型更能改善端到端速度。模型需要处理的输入越多,找到关键事实、保持约束和复核结果就越困难。

只提供相关材料

目标文件、直接依赖、失败测试和完整错误位置应优先进入上下文。不要为了“让模型了解项目”一次性提供整个仓库。可以先列目录和搜索,再读取命中的小范围文件。
文件引用、IDE 当前选区和完整 traceback 比二手概括更可靠,但原始材料也应截断无关部分。日志只保留能定位问题的时间段、请求 ID 和堆栈;不要把令牌、Cookie 或客户数据贴入会话。

一个任务一个会话

同一问题的连续定位适合留在同一个会话,便于保留决策和失败尝试。不相关的需求应新开会话,不要让早期的 API 迁移讨论影响后面的 CSS 修改。 下面这些操作的语义不同: 会话长到出现重复读取、忘记约束、日志反复输出时,先保存状态,再使用当前版本支持的 /compact。压缩后重新核对目标、非目标、修改文件、测试结果和下一步。关键接口契约、失败原因和回滚点不要只依赖自动摘要。

什么时候新开而不是压缩

如果任务目标、模块或分支已经改变,新会话通常比继续压缩更清楚。压缩适合“仍然是同一个任务,只是过程太长”;新会话适合“要做另一项工作,或需要干净地重新评估”。

并行提速:提高吞吐而不是制造冲突

并行适用于互相独立的工作单元,例如:
  • 分别为不同模块盘点测试缺口;
  • 对不同目录做只读分析;
  • 在一个隔离工作区实现功能,另一个隔离工作区运行基准;
  • 主任务修改代码时,让子代理探索文档或检查独立测试。
并行前先检查三个条件:
  1. 每条线的输入、输出和文件边界明确。
  2. 写入任务使用独立 worktree、分支或目录。
  3. 汇总结果不会把大量重复日志塞回主会话。
同一个工作区让多个代理同时写文件,不能算提速。它可能造成互相覆盖、锁文件冲突、测试结果失真和无法判断改动来源。fork 只复制会话上下文,不能代替 Git worktree。 一个可审查的并行布局:
汇总时只带回结论、命令、退出码和关键数值,不要把三个代理读取过的完整文件重复贴入主会话。并行的收益应以“总完成时间”和“冲突后的额外时间”比较,而不是以启动了多少代理计算。

基准实验一:同一任务比较推理档位

实验目标是测量档位变化,而不是证明某个档位永远最好。选择一个有真实验收命令、但可以重复运行的中等任务,例如给已有函数补边界测试并修复一个明确失败分支。不要使用生产数据、真实外部请求或会改变共享分支的任务。

准备实验记录

分别运行 low、medium 和模型支持的 high。每次使用新会话、相同工作区初始状态和相同任务文字。记录:
  • 首次响应时间;
  • 完成到验收通过的总时间;
  • 读取和修改的文件数;
  • 测试命令与退出码;
  • 返工请求数;
  • 你人工修正的分钟数;
  • 状态中能看到的用量信息。
结果表可以这样写: 至少重复三次,或使用三项同难度任务。单次结果受服务排队、缓存和任务偶然性影响,不能据此修改全局默认。选择档位时比较总耗时和人工修正,而不是只比较首次响应。

基准实验二:模型档位和成本权衡

本实验固定推理强度,比较主力模型和轻量模型。任务必须可以拆成相同输入、相同验收的独立样本,例如对一组不相关文件执行同一种局部重命名或补测试。不要让两个模型修改同一工作区。
用下面的思路计算一个粗略的“有效成本”:
不要把这个数字当成财务账单,它的用途是让隐性返工可见。轻量模型若适合批量机械任务,往往有较高吞吐;若任务包含隐含架构约束,主力模型的一次通过率可能更重要。 按失败类型分类,而不是只写“失败”:

基准实验三:服务层级是否真的提速

服务层级的实验应使用短任务和多个时间点。固定模型、推理档位、上下文和验收命令,只切换 flex 与当前版本支持的快速层级。记录服务配置是否在 /status 中反映出来;如果状态看不出有效值,不能声称实验已成功切换。
比较中位数,而不是只看最快一次。若快速层级只让模型等待减少少量时间,却显著增加用量,那么它可能只适合交互式高峰,不适合批量任务。若端到端时间几乎不变,瓶颈可能在测试、上下文读取、网络或人工审查。 服务层级实验不能使用需要外发真实数据的任务,也不能通过关闭审批或沙箱来制造“更快”的假象。速度优化不改变安全边界。

动态版本核验清单

每次升级 Codex、切换登录方式、换账号、改变 profile 或发现行为变化时,重新做以下核验:
检查配置时,先备份再改动,并保留最小字段。TOML 能解析不代表 Codex 认识字段;未知字段可能被忽略、警告或在新版本中变成错误。出现配置报错时,删除最近增加的实验字段,确认基础配置能启动,再按官方当前说明逐项加回。 建议在个人记录中保存:
不要把 token、Cookie、内部 URL、客户数据或完整的敏感日志写入这份记录。

三种可直接采用的工作配置

下面只展示决策形态。<模型> 必须替换为本地 /model 确认的名称,档位必须是该模型支持的值。

日常开发

适合普通功能、测试和局部调试。遇到复杂问题时在当前会话临时提高推理,而不是永久把所有任务锁在最高档。

批量机械任务

只适用于文件边界、改动模式和验收命令都明确的批量任务。每条并行线使用独立目录,完成后统一检查 diff 和测试。

复杂分析或高代价变更

先用只读或计划阶段确认范围,随后再允许写入。复杂不等于应该开启快速层级;先保证上下文精准和验证完整,再判断等待时间是否值得用服务层级换取。 如果你要试验快速服务,优先用命令行临时覆盖或会话内开关,实验完成后恢复默认。不要把高成本快速模式和最高推理强度一起写成机器级默认,除非已经用真实工作负载测过且明确接受额度消耗。

失败排查

模型切换后仍像旧模型

检查是否复用了旧会话、是否有 profile 或命令行覆盖,以及 /status 显示的有效模型。重启一个新会话,用无害短任务确认,不要只根据界面标题判断。

推理档位报错

先确认模型支持的档位,再检查字符串拼写和参数位置。删除 xhigh、none 等不确定值,回到已确认的 medium 或本地默认。模型支持范围改变时,重新阅读当前帮助。

配置写了但速度没有变化

服务层级可能未启用、需要 feature flag、账号不符合资格,或瓶颈根本不在模型等待。分别测量模型响应、工具执行、测试和人工审查时间;不要用“感觉更快”作结论。

降档后返工变多

先比较总耗时和首次通过率。如果失败集中在上下文遗漏,缩小并补足输入;如果失败集中在边界推理,再提高档位或换主力模型。只调快模型而不改变任务描述,通常不能解决根因。

并行后出现冲突

立即停止互相覆盖的写入任务,查看每个 worktree 的 git status 和 diff。把任务按文件和职责重新隔离;不要用会话名称推断文件已经隔离。合并前逐条运行测试,确认结果来自正确的代码版本。

上下文压缩后质量下降

让 Codex 复述目标、约束、已验证结果和不确定项,并重新读取关键文件。必要时开新会话,把可验证状态写入任务记录。不要把关键接口或失败原因只依赖压缩摘要。

一套日常操作顺序

每次遇到新任务,可以按下面顺序执行,但每一步都应结合实际任务缩短或展开:
  1. 用范围、不确定性、错误代价和重复次数判断任务档位。
  2. 在 /model 和 /status 中确认当前模型、推理和服务状态。
  3. 只提供相关文件、完整错误坐标和可执行验收,不把无关仓库塞入上下文。
  4. 先从主力模型 + medium 或轻量模型 + low 开始。
  5. 若答案浅或漏边界,提高推理;若任务机械且稳定通过,降低档位或换轻量模型。
  6. 若等待确实是瓶颈,再对服务层级做一次可测量的临时实验。
  7. 可并行的独立任务使用 worktree 或只读子任务隔离。
  8. 用测试、构建、diff 和实际行为验收,而不是只看回复长度。
  9. 记录总耗时、返工、用量和失败类型,形成下一次选择的依据。
  10. 升级或换账号后重新执行动态版本核验。

最终验收

模型和速度配置完成后,至少确认:
  • /model 显示的模型确实是你要使用的模型;
  • 当前模型支持并实际接受所设置的推理档位;
  • 服务层级或快速模式的状态已由本地状态、帮助或实验结果确认;
  • 配置修改只发生在预期的配置文件,实验没有污染项目;
  • 上下文只包含相关材料,没有秘密、客户数据和生成产物;
  • 并行任务有文件或 worktree 隔离;
  • 质量比较使用了测试、构建、diff 或基准,而不是主观“看起来更好”;
  • 成本比较包含返工和人工审查,不只看模型单次价格;
  • 未知模型、字段、档位和服务能力都标记为需动态核验。

小结

模型档位解决能力上限,推理强度解决投入多少分析,服务层级解决等待优先级,上下文和并行组织决定这些资源能否有效转化为结果。日常默认可以从主力模型 + medium + 弹性服务开始;边界清楚的批量任务再降到轻量模型和 low;高不确定性、高代价任务提高推理或换更强模型;快速层级只在测量证明等待是瓶颈、且成本可接受时使用。 最终选择依据应是端到端数据:首次通过率、总耗时、返工轮数、人工修正和实际用量。每次版本、账号或入口变化后,都回到 /model、/status、--help 和无害基准实验重新确认。 参考资料:参考/codex/30-models.md、参考/codex/31-speed.md、参考/codex/13-prompting.md。动态模型、推理档位、服务层级和命令以当前 Codex 版本及官方文档为准。