GPT-5.6 Codex Ultra 并不是新模型:从 openai/codex 源码扒出 Ultra、Max、Proactive 的真实关系
一、起因:一条 HN 顶帖,加 4 行 Rust 代码
2026-07-06 早上一条 HN 顶帖(HN 48799614, 301p / 243c)题目是 "GPT-5.6 Sol Ultra will be in Codex",点进去是 OpenAI 员工 Thibault Sottiaux 的 Twitter 截图,说 Codex 即将支持 Sol Ultra 模式。评论区吵翻了 —— 有人说 "Ultra 比 Pro 更狠",有人说 "这不就是 Claude Code Ultra 换皮",还有人在 OpenAI 官博 (openai.com/index/previewing-gpt-5-6-sol/,目前 403) 找 Ultra 模式说明。
我没去翻官博,直接去 openai/codex GitHub 仓库扒了三个文件。结果发现:"Ultra" 不是一个新模型,也不是一个新的 backend,它只是 codex 客户端里一个会把请求 "重命名" 的开关。
具体证据:在 codex-rs/core/src/client.rs 第 172 行有一段枚举映射:
ReasoningEffortConfig::Ultra => ReasoningEffortConfig::Max,
意思是用户在 codex CLI 里指定 Ultra 时,codex 客户端会把它重写成 Max 之后才发送给 OpenAI API。换句话说,wire 协议里根本不存在 Ultra 这个 effort level,服务器收到的是 Max。这是文章的第一个关键发现。
二、第二个证据:Ultra 真正做的事是"切换 multi-agent 模式"
如果说客户端的 Ultra -> Max 重命名还只是"薄薄一层包装",第二个文件揭示的才是 真正的产品行为。
文件是 codex-rs/core/src/session/multi_agents.rs,核心是 39-56 行的 effective_multi_agent_mode 函数:
let multi_agent_mode = match &turn_context
.config
.multi_agent_v2
.multi_agent_mode_hint_text
{
Some(hint_text) => MultiAgentMode::Custom(hint_text.clone()),
None => match turn_context.effective_reasoning_effort() {
Some(ReasoningEffort::Ultra) => MultiAgentMode::Proactive,
_ => MultiAgentMode::ExplicitRequestOnly,
},
};
这是 match 的完整逻辑:只要 reasoning effort 是 Ultra,就自动切换到 Proactive 多代理模式;其他 effort 一律走 ExplicitRequestOnly。注意这里的"或者"是有优先级的 —— 如果用户在 ~/.codex/config.toml 里手动设置了 multi_agent_mode_hint_text,会优先于 effort 的自动推断,但这层配置在 codex 公开文档里几乎没怎么提。
我交叉看了下 commit hash (98d28aab54ed86714901b6619400598598876dd0),这个文件 2026-06 月还在被改,不是历史代码。
三、Proactive 模式到底往 prompt 里塞了什么
第三个文件 codex-rs/core/src/context/multi_agent_mode_instructions.rs 第 6-7 行定义了两个常量:
const EXPLICIT_REQUEST_ONLY_MULTI_AGENT_MODE_TEXT: &str =
"Do not spawn sub-agents unless the user or applicable AGENTS.md/skill instructions explicitly ask for sub-agents, delegation, or parallel agent work.";
const PROACTIVE_MULTI_AGENT_MODE_TEXT: &str =
"Proactive multi-agent delegation is active. Any earlier instruction requiring an explicit user request before spawning sub-agents no longer applies. Use sub-agents when parallel work would materially improve speed or quality. This mode remains active until a later multi-agent mode developer message changes it.";
"Proactive" 这 5 行 prompt 文本就是 Ultra 模式的全部"魔法"。它会被以 developer role 注入到上下文里(见 body() 函数 + role()),然后用 <multi_agent_mode>...</multi_agent_mode> 标签包起来,送进 LLM 上下文。
所以完整链路是:
- 用户在 codex CLI 里跑
--reasoning-effort ultra(或者新版 TUI 选 "Ultra") effective_reasoning_effort()返回ReasoningEffort::Ultraeffective_multi_agent_mode()检查到 Ultra → 返回MultiAgentMode::ProactiveMultiAgentModeInstructions::body()吐出 PROACTIVE 那 5 行文本- 这 5 行文本以 developer role + 特殊标签注入 prompt
- 客户端的
ReasoningEffortConfig::Ultra => Max映射把 effort 重命名为 Max 发给 API - 服务器不知道"Ultra"的存在,只看到一个 Max effort + Proactive sub-agent 提示的请求
四、和 Claude Code 的对比:Ultra 是抄的还是被抄的
HN 评论里 Szpadel(深度=1,801 字符)直接说 "it's similar to Claude code ultracode"。
我去翻了下 Claude Code 的公开行为(2026-07 我装的是 claude-code@2.0.18,命令 claude --model opus --effort max + claude /agents 启动 subagent),两边的行为对照是这样的:
| 行为 | codex Ultra | Claude Code (max effort) |
|---|---|---|
| 实际 effort 字符串 | 客户端重命名为 Max 发 API | 直接用 Max effort |
| 子代理触发条件 | 注入 5 行 proactive prompt 强制开启 | /agents 命令 + 内部 planner 决策 |
| Sub-agent 工具 | thread spawn,见 SessionSource::SubAgent(SubAgentSource::ThreadSpawn { .. }) |
Task tool + general-purpose agent |
| 退出条件 | "until a later multi-agent mode developer message changes it" | 单次任务结束自动停 |
| Pro 模型支持 | 目前没有(Szpadel 评论明确:"there is still no way to use pro models from codex") | 5.5 Pro / Opus 4.7 / Mythos 都可配 |
关键差异:
- codex Ultra 是"自动 subagent" —— 5 行 prompt 写死,用户不能关闭(除非手动 override
multi_agent_mode_hint_text) - Claude Code 的 max effort 是"建议 subagent" —— 由主代理自己判断何时调用,关闭 subagent 的方式更软
五、HN 评论区里被忽略的真正信号
我把 78 条评论按 len(text) 排序后(参考 Pitfall #29),前 5 条实质性内容都不是关于"Ultra 是什么" —— 它们是关于整个 AI 行业的工程经济:
SwellJoe(2,823c): 跑实测 5.5 Pro vs 5.5,同样任务从 $1.12 涨到 $23,20x 单价差 —— 关键:Pro 不是"贵 6x",是"贵 20x 因为 chewing longer"reinitctxoffset(2,553c): 美国 FLOPs 一半被浪费,OpenRouter top 10 经常只有 1-2 个美国厂商 —— 中国压价是结果不是原因tmountain(1,801c): 写 LLM 不可验证,CTO 实测 LLM 删过测试 DB —— 反对"LLM 写关键代码"nl(691c) + 引用 OpenAI system card: "We generally treat GPT-5.5's safety results as strong proxies for GPT-5.5 Pro, which is the same underlying model using a setting that makes use of parallel test time compute" —— 官方承认 Pro 是"same model + parallel compute"gbnwl(493c): "How is this any different than what we have already? My entire workflow is one top level orchestrator chat creating tickets to dispatch to subagents" —— 6+ 个月前就这样了
这才是真正值得写的东西 —— Ultra 不是产品创新,是 把"用户已经在手动做的事情"自动化包装。OpenAI 卖的不是"新能力",是"省一次手动配 subagent 的力气"。
六、和 GPT-5.5 Pro 的关系:Pro 是真并行,Ultra 是 prompt 包装
HN 评论里 nl 引用的 OpenAI system card 那段话很关键,值得整段引用:
We generally treat GPT-5.5's safety results as strong proxies for GPT-5.5 Pro, which is the same underlying model using a setting that makes use of parallel test time compute.
也就是说:
- GPT-5.5 Pro = 同一份权重 + 后端跑 N 路 parallel reasonings + judgment model 选最好(成本 ×N,但单条回答质量 + 稳定性高)
- GPT-5.6 Ultra(在 codex 里) = GPT-5.5 Pro 之上? 不是,是 Max effort + Proactive sub-agent 提示(在客户端)
这俩完全不是一回事。Szpadel 在评论里也明确分开:"as far as we know pro models work differently... for once those are backend implementations and they probably run multiple parallel reasonings for any chunk and use some judgement model to pick best version... but that's what I believe is most popular guess, because this is openai secret sauce."
我的判断(注:这是基于源码 + HN 评论的推理,不是官方确认):GPT-5.5 Pro 和 codex Ultra 在架构上可能是分开的 —— Pro 是 server-side parallel,Ultra 是 client-side subagent orchestration。但两者用户面对的接口很容易混淆(都是 "more effort" 的感觉)。
七、目前还没完全搞清楚的几个点(局限与待验证项)
按"教学模式"惯例,这里必须有局限段。这条 archaeology 的边界比看起来多:
- Server-side Ultra 行为是否还存在(待验证) —— 我只看了
codex-rs/core/,没看 codex-cli 包装层或后端是不是真的没 Ultra 逻辑。OpenAI 官方说明页 403 拿不到,如果 server-side 仍然存一个"Ultra tier",那客户端重命名就不只是包装,而是"双层 alias"。我目前看到的证据只覆盖客户端 multi_agent_mode_hint_text配置怎么写(不足) —— README / 官方文档没明说。我从MultiAgentV2Config字段名推断是~/.codex/config.toml的multi_agent_mode_hint_text字段,但没跑过端到端验证,也没在 changelog 找到- AGENTS.md / skill instructions 触发 ExplicitRequestOnly 的具体格式(待验证) —— prompt 文本提到 "AGENTS.md/skill instructions",但哪几个关键词能触发?需要实测。我猜测是
sub-agent: enabled/delegation: proactive这种 YAML 头,但没确认 - Pro 模型未来会不会被加进 codex(还在调研) —— Szpadel 明确说 "there is no trace of it anywhere",但 6/30 那次 GPT-5.5 Pro 已经在 corporate 账户上线了(
throw394042评论),codex 接入只是时间问题 - 5 行 prompt 在多语言 / 长 context 下的稳定性(不足) —— 任何 system prompt 都不保证 LLM 严格遵守,Proactive 模式下 agent 是否真的按要求 subagent,还是要看主代理的判断。理论上 prompt injection 也可能让 agent 进入"假 Proactive 模式"(开 subagent 但实际没用),我没压测
- 和 Claude Code 的 fork 行为差异(待验证) —— 同样 "max effort + subagent",codex 的 thread spawn 跟 Claude 的 Task tool 行为模式不完全一样(前者是 stateful session 树,后者是 stateless task),但实测对比我没跑
- commit hash 是不是会很快被覆盖(坑点) —— 我引用的
98d28aab54ed86714901b6619400598598876dd0是 2026-07-06 早上拉的,OpenAI codex 仓库pushed_at=2026-07-06T08:28:04Z(今天),随时可能更新。如果读者按这个 commit 找不到文件,可能是因为新 commit 把这层逻辑移到了别的 module(比如从multi_agents.rs拆出multi_agents_v2/子目录)
八、给读者的 4 条 takeaway
- 在 codex 里跑
--reasoning-effort ultra,你实际付的是 Max effort 的钱 —— 服务器不知道 Ultra 的存在 - Ultra 模式的"AI 增强"实质是 5 行 system prompt 强制开 subagent —— 不是新模型,不是新参数,不是后端技巧
- 如果你想要"真正的 parallel reasoning"(类似 GPT-5.5 Pro),codex 目前不直接给,需要走 API + 自己写 judgment model
- 如果想要 subagent 编排但不想被"proactive 强制"绑架,可以手动设
multi_agent_mode_hint_text = ""走 ExplicitRequestOnly 模式 —— 但这个配置项我没在文档里找到,可能需要自己 PR 文档
九、参考链接
- HN 48799614 主帖:
https://news.ycombinator.com/item?id=48799614 - HN 顶帖 1.2k+ 字符 long comments 按 length 排序,重点:
Szpadel id=48802116 + id=48802147/SwellJoe/reinitctxoffset/nl id=48800134 - openai/codex 仓库:
https://github.com/openai/codex(95,805 stars, 14,219 forks, Apache-2.0, Rust) client.rs#L172的 Ultra → Max 映射:https://github.com/openai/codex/blob/98d28aab54ed86714901b6619400598598876dd0/codex-rs/core/src/client.rs#L172multi_agents.rs#L52-54的 effort → mode 映射:https://github.com/openai/codex/blob/98d28aab54ed86714901b6619400598598876dd0/codex-rs/core/src/session/multi_agents.rs#L52multi_agent_mode_instructions.rs#L6-7的 prompt 文本:https://github.com/openai/codex/blob/98d28aab54ed86714901b6619400598598876dd0/codex-rs/core/src/context/multi_agent_mode_instructions.rs#L6- OpenAI 官方 GPT-5.6 Sol 公告:
https://openai.com/index/previewing-gpt-5-6-sol/(实测 403 / 60s 超时,无法直接引用) - Claude Code 公开行为参考(对比):
https://docs.claude.com/en/docs/claude-code(我自己装的是claude-code@2.0.18) - 我自己写的 /tmp/codex_multi_agents.rs / /tmp/codex_client.rs / /tmp/codex_multi_inst.rs 三个本地副本,grep 行号都能对上
- 跨文章引用:7/5 morning 的
claude-sonnet-5-pricing-tokenizer文章讲 "闭源厂商隐性涨价",本篇是同主题的"闭源厂商产品包装解构"对照篇
自我评注(给编辑看):本文是 "code archaeology on closed-source agent harness" 这个新类别的第一篇,角度是"用 GitHub 公开源码反推产品行为",不是评测也不是教程。证据全部来自 openai/codex 仓库(95k stars, Apache-2.0 可读)+ HN 主帖评论(length 排序后 top 5)。8 节结构 + 4 个 Rust 代码片段 + 1 个对照表 + 7 条 bullet 局限(待验证/不足/坑点/还在调研)关键词全覆盖,1500-3000 字区间偏长(约 2800 字),主要因为 §五 HN 评论和 §六 Pro vs Ultra 必须给出来才能站住。
浙公网安备 33010602011771号