我是安徽最忧郁程序员无隅

在这里插入图片描述

用 Codex 写代码,最直观的感受往往是:确实好用,但复杂任务一跑久,模型调用量也会跟着上去。

很多人会直接把默认模型换成更便宜的型号。这样做虽然能降低单次调用价格,却可能让规划变差、工具往返变多,最后用更多时间和 Token 完成同一个任务。

更有效的做法不是把所有模型一起降级,而是按照任务职责分配模型:强模型负责关键判断,轻模型承担高频、边界清楚的工作。

本文基于当前 Codex 官方配置文档,讲清楚这套分工如何配置,以及什么时候不该为了省钱强行使用轻模型。


一、先说结论:省钱靠分工,不是全换便宜模型

一次 Codex 任务并不等于一次模型调用。

主线程需要理解需求、规划任务和汇总结果;子 Agent 会独立搜索代码、修改文件或运行测试;执行 /review 时,还可以使用单独的 Review 模型。每个子 Agent 都会产生自己的模型与工具调用,因此多 Agent 工作流通常比单 Agent 消耗更多 Token。

问题在于,这些工作对模型能力的要求并不相同。

  • 主模型面对的信息最不完整,需要处理歧义、拆分任务并决定下一步,应该优先保证质量;
  • Review 的目标相对清楚,但仍要识别逻辑错误和边界风险,适合质量与成本更均衡的模型;
  • 子 Agent 如果只负责搜索、测试或一个局部修改,可以使用更便宜的模型;
  • 上下文压缩可以调整触发阈值,但当前公开配置中没有单独的 compact_model 字段。

因此,更稳妥的分工不是“主模型用 Sol,其他全部 Luna”,而是:

Sol 负责模糊且关键的判断,Terra 负责通用执行与 Review,Luna 只接边界清楚、结果容易验证的窄任务。

按照本文写作时 OpenAI 官方模型页列出的价格,GPT-5.6 Sol 每百万输入/输出 Token 分别为 4 美元和 20 美元,Terra 为 2 美元和 12 美元,Luna 为 0.2 美元和 1.2 美元。价格差距很明显,但最终能省多少,还取决于任务路由、缓存命中、返工次数和实际输出长度。


二、看懂 Codex 的四段调用链

在这里插入图片描述

1. 主模型:决定任务会不会跑偏

主模型是整条链路的协调者。它要理解用户真正想解决的问题,判断需要读取哪些内容,决定是否拆分子任务,并在多个结果之间做最终取舍。

这里如果判断错了,后面的执行越快,偏离目标也可能越远。因此,主模型通常是最不适合激进降级的位置。

2. 子 Agent:最适合按任务粒度降级

子 Agent 接到的任务通常比主线程具体,例如“扫描认证模块的异常处理”“运行测试并总结失败原因”或“只修改这个配置文件”。任务边界越清楚,对全局推理能力的依赖就越低。

不过,子 Agent 并不是免费并行。官方文档明确说明,每个子 Agent 都会执行自己的模型和工具工作,所以会增加 Token 消耗。只有当任务能够独立并行,或者能把大量噪声挡在主线程之外时,子 Agent 才真正划算。

3. Review:可以换模型,但只影响 /review

review_model 是 Codex 的正式配置项,但它的作用边界需要说清楚:它覆盖的是 /review 使用的模型,不会自动接管所有你口头描述为“代码审查”的子 Agent。

Review 要检查逻辑、边界条件和潜在回归,通常比简单搜索更依赖判断。预算敏感时可以尝试 Luna,但更稳妥的默认选择是 Terra,并给它较高的 reasoning effort。

4. Compact:目前不能单独指定模型

上下文持续增长后,Codex 会进行自动压缩。公开配置提供了 model_auto_compact_token_limit,可以控制触发压缩的 Token 阈值,但当前配置参考中没有单独的 compact_model

也就是说,我们可以先优化调用量更大的子 Agent 和 /review,不要编造一个并不存在的压缩模型配置。


三、推荐配置:主模型、Review 和子 Agent 怎么分

1. 稳妥版:Sol 规划,Terra 执行和 Review

打开用户级 Codex 配置文件:

  • macOS / Linux:~/.codex/config.toml
  • Windows:C:\Users\<用户名>\.codex\config.toml

加入下面的配置:

model = "gpt-5.6-sol"
model_reasoning_effort = "high"
review_model = "gpt-5.6-terra"

[agents]
default_subagent_model = "gpt-5.6-terra"
default_subagent_reasoning_effort = "medium"

这套配置适合大多数项目:主线程保留较强的规划和综合能力,通用子 Agent 使用 Terra,/review 也交给 Terra。

如果任务主要是常规开发,而不是跨模块重构或复杂故障定位,也可以先把主模型的 reasoning effort 从 high 调到 medium,再通过实际任务比较质量和耗时。reasoning effort 越高,通常意味着更多时间和 Token,不应该无条件拉满。

2. 激进版:给窄任务单独准备 Luna Worker

如果你经常处理格式整理、定向搜索、简单测试或批量替换,可以定义一个专门的低成本 Worker,而不是让所有子 Agent 都使用 Luna。

先在 config.toml 中声明这个角色:

[agents.worker]
description = "处理边界清楚、结果容易验证的执行任务"
config_file = "agents/worker.toml"

然后创建 ~/.codex/agents/worker.toml

model = "gpt-5.6-luna"
model_reasoning_effort = "medium"

这里有一个容易忽略的细节:只创建 worker.toml 不够,还要在 [agents.worker] 中通过 config_file 声明这个角色。

使用时,应明确让 Codex 把窄任务交给 worker。涉及架构决策、复杂调试或大范围写入时,仍然使用主模型或 Terra 子 Agent。

在这里插入图片描述

3. 第三方 Provider:分工逻辑不变

Codex 支持自定义模型 Provider。Provider 需要配置 base_url、密钥对应的环境变量和 wire_api = "responses",然后通过 model_provider 选择它。

model = "<强模型 ID>"
review_model = "<均衡模型 ID>"
model_provider = "your-provider"

[model_providers.your-provider]
name = "Your Provider"
base_url = "<Responses API 地址>"
env_key = "YOUR_PROVIDER_API_KEY"
wire_api = "responses"

[agents]
default_subagent_model = "<轻量模型 ID>"
default_subagent_reasoning_effort = "medium"

第三方服务的模型名称、接口地址和密钥类型可能随套餐变化,必须以对应厂商的最新文档为准。不要把密钥直接写进 config.toml,只填写环境变量名称。

另外,官方文档说明子 Agent 默认继承父 Agent 的 Provider。选择子 Agent 模型时,需要确认该 Provider 确实提供对应模型。


四、三个容易踩的坑

1. 轻模型便宜,不代表整个任务更省

如果 Luna 因为判断能力不足而重复搜索、反复修改,或者最终需要主模型返工,那么单价优势很快会被额外调用抵消。

判断是否适合 Luna,可以看两个条件:任务能否用一句话描述清楚,以及结果能否通过测试、Diff 或固定规则快速验证。只要其中一个条件不满足,就优先使用 Terra。

2. 并行子 Agent 可能省时间,但通常不会省 Token

多个子 Agent 同时扫描不同模块,可以缩短等待时间,也能减少主线程中的日志污染。但每个 Agent 都有独立的上下文和工具调用,总 Token 往往会上升。

所以不要为了“看起来更 Agent”而拆分任务。只有相互独立、可以并行、返回结果能够被压缩汇总的工作,才适合交给多个子 Agent。

3. Review 不应该一味追求最低价

Review 是代码进入下一步之前的质量门。如果审查模型漏掉高风险问题,后续修复成本可能远高于模型差价。

默认使用 Terra 更均衡;只有在审查规则非常固定,例如检查格式、约定或简单变更时,再考虑 Luna。安全、并发、数据一致性和复杂业务逻辑审查,应该提高模型和 reasoning effort。


五、省钱之后,怎么验证没有把效率省没了

模型分工不是一次配置后永远正确。最可靠的方法,是选择几类自己经常执行的任务,分别跑原配置和新配置,然后比较:

  • 任务是否一次完成;
  • 总耗时有没有明显增加;
  • 工具调用和返工次数是否上升;
  • 测试是否通过;
  • Review 能否发现预先埋入的问题;
  • 总 Token 或实际费用是否下降。

不要只看单个模型的价格,也不要只看某次任务的 Token。真正需要优化的是“完成一个合格任务的总成本”,其中既包括模型费用,也包括等待时间和人工返工。

我的建议是先从稳妥版开始:Sol 负责主线程,Terra 负责通用子 Agent 和 /review。运行一段时间后,再把最重复、最容易验证的任务交给 Luna Worker。

最终的省钱原则可以压缩成一句话:

关键决策不要省,重复执行按边界降级;轻模型失败后的返工成本,不能超过它省下来的模型差价。


参考资料

Logo

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

更多推荐