[控场AI]
· 6 分钟阅读· 3,442 字

Codex 15天内默认模型两次变脸,你的评测跟上了吗?

Codex 15天内默认模型两次变脸,你的评测跟上了吗?

Codex 默认模型半月三变,不记录模型与配置的 agent 评测结果将失去可比性。

文章梳理了 9 月 29 日至 10 月 14 日 Codex 默认模型的三次变更,指出最隐蔽的一次是新 TUI 线程会静默继承服务端默认值,用户什么都没改模型却可能已更换。默认模型实际由 CLI 内置 catalog 按优先级决定,并非团队主动选择;Claude Code 的别名指向同样存在这一现象。作者强调,任何关于 agent 能力的论断都隐含了具体模型,而推理强度、账户类型同样会改变结果,因此最小记录应包含模型、推理强度、账户类型和 commit 四个字段,并给出用 profile 与 codex exec 固定配置并写入 runs.tsv 的脚本方案。

9月29日到10月14日,Codex 的默认模型经历三次变更,而你的代码仓库 diff 一片空白。如果你习惯直接使用默认模型跑 agent,你的评测结果可能早已不可比。

Codex 默认模型变更示意

三次变更,没有一次写入你的代码

据 OpenAI Codex 仓库的 release notes 和文档,15 天内发生了三件事:

  • 9月29日:Codex CLI 0.159.1 将 GPT-6.1 Sol 设为内置 catalog 的最高优先级(PR #49318),不指定模型时直接用它。
  • 10月8日:0.162.0 让新的 TUI 线程遵循 app server 的模型默认值(PR #50013),同时移除了模型选择器里的“(default)”标记(PR #51235)。
  • 10月14日:GPT-5.5 从 Codex 退役,仅影响 ChatGPT 登录用户(API key 会话不受影响),推荐迁移到 GPT-6.1 Sol 或 GPT-6 Luna。

最隐蔽的是 10 月 8 日那次:新开的 TUI 线程会悄悄继承服务端默认值,除非启动时显式覆盖。你什么都没改,模型却可能换了。

“默认”是谁选的?一个 catalog 文件

从 PR #49318 可以看到,默认模型不是团队里任何人选的,而是 CLI 内置 catalog 文件按优先级排序的结果。Codex 并非孤例:Claude Code 的 opus、sonnet、haiku 别名也会随时间指向推荐版本,要固定版本得写全名如 claude-opus-5-5。

移动靶适合聊天——你总想用最新模型。但对任何需要测量、比较、向队友承诺的事情,它就是噪音来源。

评测测量的是模型,就必须记录模型名

Agent 评测未必是正式套件,更多时候是一句团队消息:“Codex 做迁移比 Claude Code 差”“改了 AGENTS.md 之后变好了”。每句话都是关于某个模型的论断。如果用的是默认模型,你甚至不知道测的是谁。

隐藏变量不止模型一个。推理强度(reasoning effort)同样会改变结果,而 PR #50013 让它也走服务端默认值。账户类型也影响行为:GPT-5.5 退役只打击 ChatGPT 登录,API key 会话毫发无损,同一个 gpt-5.5 配置在两种登录方式下含义不同。

任何 agent 结果的最小记录应包含四个字段:模型、推理强度、账户类型、运行的 commit。缺了它们,前后对比就是两个没有解释的数字。

推理强度(reasoning effort)是 agent 类产品中控制模型在回答前进行多少内部推理的配置项,通常分为 low、medium、high 等档位。档位越高,模型会生成更长的思维链(chain of thought),在复杂迁移、调试和重构任务上往往表现更好,但延迟与 token 成本也显著上升。反过来,同一个模型在 low 与 high 下的输出质量差异,有时比换一个模型还大。因此推理强度是不能被忽略的实验变量:如果两次评测的模型名相同、强度不同,结论依然不可比。这正是 PR #50013 让推理强度也走服务端默认值后带来的额外风险。

按任务固定模型,并写进日志

日常使用中,Codex 的 profile 是最干净的固定方式。在 ~/.codex/ 下建一个文件:


Codex profile 是 CLI 的配置预设机制:在 `~/.codex/` 目录下放置以 `.config.toml` 结尾的文件,启动时用 `--profile <名字>` 引用,其中的键值会覆盖全局配置。它适合把“模型 + 推理强度 + 沙箱策略”绑定成一组可复用的运行参数,避免每次手动指定。需要注意 profile 只固定客户端侧的解析结果,并不能阻止厂商最终下线某个模型;它保证的是“当前配置可被稳定复现”,而不是“该模型永远可用”。

`codex exec` 是 Codex 的非交互式运行模式,适合脚本化与 CI 场景。它与交互式 TUI 的关键区别在于:默认在只读沙箱中运行,agent 无法写文件;要让它修改代码并触发测试,必须显式传 `--sandbox workspace-write`。此外 `-c key=value` 可覆盖任意配置键,值若不是合法 TOML 会被当作字符串处理,因此 `-c model_reasoning_effort=medium` 是合法写法。退出码会原样返回给脚本,便于把 agent 步骤的成败与后续测试结果分开记录。
# ~/.codex/pinned.config.toml
model = "gpt-6.1-sol"
model_reasoning_effort = "medium"

用 codex --profile pinned 启动。PR #50013 保证显式 profile 启动会保持解析后的配置,即使新 TUI 线程也不会被服务端默认值覆盖。

需要对比的实验,把固定和记录写进同一个脚本。codex exec 支持 -m 指定模型、-c 设置任意配置键(非合法 TOML 的值会被当作字符串):

#!/usr/bin/env bash
set -u
task="$1"
model="gpt-6.1-sol"
effort="medium"
account="chatgpt"   # 或 "apikey"

codex exec -m "$model" \
  --sandbox workspace-write \
  -c model_reasoning_effort="$effort" \
  "$task" > last-run.log
agent=$?
npm test > test.log 2>&1
tests=$?

printf '%s\t%s\t%s\t%s\t%s\t%s\t%s\n' \
  "$(date -u +%FT%TZ)" "$(git rev-parse --short HEAD)" \
  "$model" "$effort" "$account" "$agent" "$tests" >> runs.tsv

codex exec 默认在只读沙箱运行,所以要加 --sandbox workspace-write 让 agent 能改代码再跑测试。agent 列保留 Codex 自己的退出码,agent 步骤失败不会被测试结果掩盖。换掉 npm test 为你自己的检查,account 按机器的登录方式设置——这样 runs.tsv 每一行都带有四个字段,前后对比才有依据。

固定的代价也在 10 月 14 日体现过:固定在 gpt-5.5 且用 ChatGPT 登录的人必须改配置。OpenAI 列出了需要更新的一串位置:工作区默认值、保存的模型设置、托管配置、自定义 agent、定时任务和仍选择 gpt-5.5 的脚本。这是良性的断裂——改一行 diff、重跑任务、对比新旧行。

工具能做什么,不能做什么

作者开发的 Hermes IDE(需要声明利益相关)在 ⌘N 新建任务时强制选择 agent、模型、推理强度和账户,支持按 agent 保存多个账户,并可作为预设复用。每个会话显示自己的花费和所用模型,Claude Code 和 Codex 并排运行时模型信息位置一致。

但它不写你的 runs.tsv,也挡不住厂商退役你选的模型。它把选择变成显式动作并保持可见,记录仍然是你的责任。

所以,上次评测到底是谁跑的?

翻出你最近分享给团队的那个结果——一个基准测试、“这个 agent 更擅长 X”的结论、改 prompt 前后的对比。你能说出是哪个模型、哪个推理强度产出的吗?

如果说不出,你测的其实是一个 catalog 条目。固定的代价是一行配置,不固定的代价是每次结论都可能建立在移动的地基上。

#Codex默认模型#GPT-5.5退役#agent评测#LLM observability#模型固定#Codex CLI#Claude Code模型别名
分享:

相关推荐