1. 为什么“重要任务就开 Ultra”是个坑
先说结论:GPT‑5.6 Sol 里,reasoning.effort和 Codex 的 Ultra 根本不是一回事。前者控制单次请求投入多少推理,后者是 Codex 里一种多子 Agent 并行的工作模式。把它们混为一谈,是我用 Sol 最久的一个误区。
我试过在一个架构规划任务上直接开 Ultra,逻辑很简单——任务重要,那就让模型想得最透。结果 Sol 分析完需求查架构,查完架构研究边界条件,研究完边界又去比较替代方案,一个问题刚收敛又冒出三个新问题。一个小时过去,它还在规划。我反复提醒“不要过度思考、尽快收敛”,能短暂改变方向,过一会儿它又找到一个看起来很合理的新问题继续查。
问题不在 Sol 想太多,而在于我给它选了一种鼓励广泛探索的模式,却期待它像执行者一样快速收尾。这篇就围绕 GPT‑5.6 Sol 在 Codex 场景下的reasoning.effort与 Ultra 档位选择,结合 TaoToken 统一 Key/API 通道,给出可复制的config.toml与settings.json骨架,并演示怎么用 API 调用验证不同 effort 档位的实际响应差异。适合正在用 Codex Desktop、或者通过 API 调 Sol 做编码任务的开发者。
2. 先把概念拆开:effort 与 Ultra 不是一回事
在讨论怎么选之前,必须把两个容易混淆的东西分开。
根据 GPT‑5.6 的文档,API 里的reasoning.effort支持这几档:
| effort 档位 | 典型取向 |
|---|---|
| none / low | 更关注延迟,减少额外推理 |
| medium | 默认的平衡起点 |
| high / xhigh | 当更多推理能带来可测量质量提升时使用 |
| max | 面向最困难、质量优先、需要更多探索与验证的任务 |
也就是说,API 推理强度的最高档是max,不是 Ultra。GPT‑5.6 Sol 的模型页也标注 medium 是默认值。
Ultra 则是 Codex 里的一种工作模式。它由一个模型协调多个子 Agent,并行处理相对独立的工作流,再综合结果。这类方式适合能被清晰拆分的复杂任务,可能缩短墙钟时间,也可能提高最终质量。
注意:API 里设置
reasoning.effort: "max"并不等于开启 Codex Ultra。Ultra 涉及并行子 Agent 的任务协调,是另一层执行机制。
所以更准确的理解是:reasoning.effort控制单次请求投入多少推理;Ultra 还可能改变任务的执行形状,让探索从一条路径扩展成多个并行工作流。我之前判断失误的关键,就是把 Ultra 当成了“比最高推理档再高一点”,忽略了它会扩大横向搜索范围。
3. 任务重要性不等于推理强度
过去我判断档位只有一个维度:任务越重要,档位越高。但实际开发里,任务的重要性和不确定性不是一回事。
一个任务可以非常重要,但如果目标、修改范围、接口、实施步骤和验收条件都已明确,接下来的核心工作就是忠实执行,而不是继续探索设计空间。反过来,一个看似普通的 Bug,也可能涉及并发、缓存一致性、历史兼容或难以复现的状态问题,规模不大却充满未知,反而需要更强推理。
我现在会先问两个问题:Sol 现在是在做决策,还是在执行已经做好的决策?剩余问题是一条需要深入的路径,还是多个可以独立调查的方向?
这两个问题比“任务重要吗”更能决定选什么模式。下面这张表是我结合官方原则和个人经历总结的选择框架,不是官方规定:
| 任务形状 | 更合适的选择 | 原因 |
|---|---|---|
| 目标和路径明确,只需实现与验证 | medium 起步 | 重点是稳定执行,而非扩展设计空间 |
| 实现中仍有关键未知 | high 或 xhigh | 需要在落地过程中持续判断 |
| 极难、质量优先,需要更多验证 | max | 愿意用延迟和成本换取进一步探索 |
| 多个方向相对独立且都值得调查 | Ultra | 能并行拆分并综合多个工作流 |
| 问题彼此强依赖,需频繁共享中间结论 | 单 Agent 顺序推进 | 并行拆分可能带来重复调查和协调成本 |
4. 用 TaoToken 统一 Key 接入 Sol
要在 Codex 或自己的脚本里调 Sol,先得有一个能稳定访问的 API 通道。TaoToken 提供统一的 Key 和 API 入口,把模型调用收敛到一个地址上,省得每个工具各配一套。
官网入口在这里:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
API 基地址是:https://taotoken.net/api
拿到 Key 的路径是控制台里的 API Keys 页面,直接去这里创建:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite
创建完 Key 之后,接入文档在:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
如果你只是想先在网页里对比不同 effort 档位的回答差异,可以直接用模型对话页:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite
长期跑编码任务、想让 Codex 或 Agent 持续调用,建议看 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite
Claude Code 相关的接入说明在:https://taotoken.net/claude-code-anthropic?utm_source=taotoken_aicg_blog_end&utm_content=claude_code&utm_campaign=rewrite
5. 可复制的 config.toml 与 settings.json 骨架
Codex Desktop 的配置一般放在用户目录下的.codex/config.toml。下面是一个以 medium 为默认、把高强度档位留给特定场景的骨架,把base_url指向 TaoToken:
# ~/.codex/config.toml model = "gpt-5.6-sol" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY" # 默认走平衡档,执行类任务不盲目拉满 [profiles.default] model = "gpt-5.6-sol" reasoning_effort = "medium" # 规划/决策类任务单独开一个 profile [profiles.planning] model = "gpt-5.6-sol" reasoning_effort = "high" # 极难、质量优先时才用 [profiles.hard] model = "gpt-5.6-sol" reasoning_effort = "max"Key 通过环境变量注入,不要写死在配置文件里:
export TAOTOKEN_API_KEY="你的_TaoToken_Key"如果你用的是 VS Code 侧的 Codex 插件或类似工具,配置通常落在settings.json。下面这份骨架把默认档位和按任务切换的档位都留出来:
{ "codex.model": "gpt-5.6-sol", "codex.provider.baseUrl": "https://taotoken.net/api", "codex.provider.apiKeyEnv": "TAOTOKEN_API_KEY", "codex.reasoning.effort": "medium", "codex.profiles": { "default": { "reasoning.effort": "medium" }, "planning": { "reasoning.effort": "high" }, "hard": { "reasoning.effort": "max" } } }提示:把
medium设成默认,是为了让执行类任务不被过度推理拖慢。真正需要高强度的规划任务,再显式切到planning或hard。
6. 用 API 调用验证不同 effort 的实际差异
配置对不对,光看文档没用,得跑一次对比。下面用 Python 的 Responses API 风格演示,把base_url指向 TaoToken,然后分别用 medium 和 high 跑同一个任务,观察响应差异。
from openai import OpenAI client = OpenAI( api_key="你的_TaoToken_Key", base_url="https://taotoken.net/api", ) task = "按照已经确认的设计方案完成实现,并运行测试验证。不要扩大修改范围。" for effort in ["medium", "high"]: resp = client.responses.create( model="gpt-5.6-sol", reasoning={"effort": effort}, input=task, ) print(f"=== effort={effort} ===") print(resp.output_text[:500]) print()跑下来你会看到:medium 通常更快给出收敛的执行方案,high 会多花一些推理在边界判断上。如果 high 的首轮通过率明显更高、返工更少,那它值得;如果只是多绕了几圈、结论和 medium 差不多,那就没必要升档。
不要只比较首次响应速度,要比较总交付时间:
总交付时间 = 首次执行时间 + 修复返工时间 + 人工干预时间可以从真实项目里挑几类代表性任务,分别记录首次完成时间、一次通过率、人工纠正次数、是否修改了任务之外的文件、返工时间、总 Token 与成本。只有更多推理带来可测量的质量增益时,才升级档位。
7. 本篇常见错排查
报错一:401 Unauthorized。多半是TAOTOKEN_API_KEY没注入或拼错。先确认环境变量在当前 shell 里生效:echo $TAOTOKEN_API_KEY,再确认base_url是https://taotoken.net/api,末尾不要多加斜杠。
报错二:model not found。检查模型名是否写成gpt-5.6-sol,别把 Codex 里的显示名直接当 API 模型名用。
报错三:配置改了但没生效。Codex 的config.toml改动后需要重启会话;settings.json改动后重载窗口。profile 名要和调用时指定的名字一致,大小写敏感。
现象四:开了 high 反而更慢更乱。这通常不是档位问题,而是任务本身适合执行而非探索。把 effort 降回 medium,并在提示里明确“不要扩大修改范围”,往往比继续升档有效。
现象五:以为设了 max 就等于 Ultra。再强调一次,API 的max只是单次推理强度上限,Ultra 是 Codex 的多子 Agent 并行模式,两者不在同一层。
8. 让推理预算跟着未知走
想明白任务形状之后,我也理解了为什么反复提醒“不要过度思考”效果有限。一边用 Ultra 告诉系统这是值得大量探索的复杂任务,一边又在提示里要求尽快停止,就像一边踩油门一边喊开慢点。更关键的是,“不要过度思考”没告诉模型哪些问题值得继续查、最多比较几个方案、达到什么条件就算完成。
对重要的规划任务,我现在会明确给一条收敛规则:目标不是穷尽所有可能性,而是在证据充分后形成可靠决策。先识别真正影响核心决策的变量,最多深入比较 2 到 3 个有实质差异的方案;发现新问题时先判断它是否有较大概率改变核心设计,不会改变的就记录为后续事项,不在本轮展开;当现有证据足以支持一个明显更合适的方案时立即收敛,输出最终方案、关键取舍、风险、验证方式和剩余不确定性,然后结束规划。
我的默认工作流是把规划、执行、异常分析拆开:规划阶段需要做高价值取舍时提高推理强度;执行阶段方案已明确时从 medium 开始;出现真实未知时切到 high 或 xhigh;只有关键设计假设被推翻才回到高强度规划;只有多个独立方向都值得研究时才考虑 Ultra。
一个很实用的判断句是:如果我不能清楚说明要并行调查哪几个独立方向,那我大概率还不需要 Ultra。真正重视一个任务,是把计算资源放在最有决策价值的地方,而不是无脑拉满。需要长期跑编码和 Agent 任务的话,可以从 Coding Plan 入手把通道固定下来:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite