OpenAI 发布 GPT-5.6 构建者指南:同样的效果,账单从 33 美元降到 1.33 美元

六家线上跑 Agent 的创业公司交出实测数据;官方图表里还藏着一条没写进正文的:推理档位关到底,反而更贵。
作者:OpenAI08-14 · 16 分钟⚑ 方法教程
🎧 听播客版0:00 / --:--
0:00 / --:--
深度 · 小互解读
一分钟速览
  • OpenAI 把一份给开发者的省钱手册摆了出来:同一道搜索测试考到 84 分,上一代花 33.27 美元,这一代最小的型号花 1.33 美元。
  • 六家已经把 Agent 跑在线上的公司各交了一条实测数字,输入 token 少 21%、未缓存输入少 28%、成本降到十八分之一,改的全是配置,不是模型。
  • 而官方图表里还藏着一条它自己没写进正文的:把推理档位关到底,账单不降反涨。
⚑
这是 OpenAI 自己发的材料。文中的跑分、成本和六段客户评价都由 OpenAI 提供并挑选,本文另外补读了五份官方 API 文档,把指南只写了一两句的机制补全,凡是补来的都标了出处。
开篇

OpenAI 发布了一份给开发者的 GPT-5.6 构建者指南,主题是怎么把 Agent 的账单砍下来:型号选哪个、推理档位开多大、三个新的 API 开关怎么用,全是能直接照着改的配置。六家已经把 Agent 跑在线上的创业公司,各交了一条实测数字。

它推翻的是过去搭 Agent 的默认姿势,上最贵的旗舰模型,把推理拉满。这个姿势之所以成为默认,是因为过去只有旗舰扛得住长上下文和一大堆工具调用。到了 5.6 这一代,中小型号多想一会儿就能顶到上一代旗舰的水平,价钱只是零头。

GPT-5.6 本身怎么回事,站内有发布解读
OpenAI 正式发布 GPT-5.6:综合智能跑分逼近 Claude Fable 5,成本减半,ChatGPT、Codex 合并

全篇路线图:六处能今天就动手改的地方

省钱分两层。第一层是两个旋钮:推理档位、型号,改的是参数,一行配置的事。第二层是三个架构开关,外加一个缓存断点,改的是请求本身怎么组织。下面这张表就是全文的目录,前两行对应两个旋钮,后四行对应四个开关,每一行后面都有一节展开。

#
改什么
官方给的数字
1
推理档位从默认往下调一档,但别一路关到底
低档打赢上一代高档
2
流程里机械的那一步换成小型号 Terra 或 Luna
$33.27 → $1.33同一分数带
3
长任务打开持久化推理和原生压缩
13.3% → 38.3%token 还少 6 倍
4
工具返回一堆数据时,让模型写代码在外面筛完再进来
少 21%输入 token
5
能拆开的活派给子 Agent 并行干
默认 3 个并发子 Agent
6
稳定的 prompt 前缀钉一个缓存断点
少 28%未缓存输入
前两行是选型号和调档位,后四行是架构层面的改动。每一行后面都有一节展开,含参数名和取值。
旋钮

第一个旋钮:低档打赢上一代高档

从 GPT-5 那一代起,每代模型追的是同一件事:用更少的 token 干更长的活。5.6 继续这条线,Harness(模型外面那层调度代码:怎么发请求、怎么接工具、怎么循环)一个字不改,性能更强、花钱更少。

指南里给出的最直接的一条:在 Agents' Last Exam 这个 Agent 评测上,把 Harness 完全固定不动,GPT-5.6 Sol 开「低推理」的成绩超过了 GPT-5.5 开「高推理」。档位是花钱的主要旋钮,低档位打赢上一代高档位,等于同一件事的价钱直接掉一档。这一项指南没有给出具体分值。

GPT-5.6 SolGPT-5.6 TerraGPT-5.6 LunaGPT-5.5Claude Fable 5Claude Opus 4.8Gemini 3.1 Pro Preview$0$1,000$2,000$3,000API cost (USD)4050607080Index score
官方原图。每个数据点的成本与得分逐个取自原文图表的无障碍标签(非估读),本站按原图同一坐标系、同一官方配色重绘。横轴是跑完整套评测的 API 总花费,纵轴是编程指数得分;同一条线上的点,是同一个模型的六个推理档位。GPT-5.6 那三条线全部挤在左上角,右上角那个孤零零的方块是 Claude Fable 5 顶档,花了 $3,771.84。

能自己核对的对照在两张跑分图里。下面三组都是同一张图上的真实数据点,左边是上一代,右边是这一代:

BROWSECOMP · 搜冷门事实的能力
GPT-5.5 极高档(Xhigh)
84.36 分 跑完整套 $33.27
→
GPT-5.6 Sol 中档(Medium)
83.41 分 跑完整套 $2.05
分数低 0.95 分,账单少 94%。这一代用中档就够到了上一代最贵那一档的位置。
编程指数 · ARTIFICIAL ANALYSIS CODING INDEX
GPT-5.5 极高档(Xhigh)
76.40 分 跑完整套 $1,714.28
→
GPT-5.6 Terra 顶档(Max)
77.40 分 跑完整套 $941.72
中号型号的顶档,分数反超上一代旗舰最贵那一档 1.0 分,账单少 45%。
编程指数 · 小型号对上一代旗舰
GPT-5.5 高档(High)
72.50 分 跑完整套 $939.57
→
GPT-5.6 Luna 顶档(Max)
74.60 分 跑完整套 $537.40
最小的型号开到顶,分数比上一代旗舰的高档还高 2.1 分,账单少 43%。

两张图的成本量级差得远:搜索评测整套跑完只要几美元,编程指数整套要几百上千美元,题量和任务复杂度不同,别把两张图的金额横着比。上面每组对照都在同一张图内部。

省下来的到底是什么?是瞎折腾的那一部分。Hex 这家做数据分析的公司把模型丢进他们现成的 Harness 里,低推理档给出了他们见过最好的结果:

我们把 GPT-5.6 丢进现有的 Harness 里,低推理档给了我们最好的结果。它知道数据什么时候就是不存在,不会追着坏线索跑,用更少的 token 就走到了正确答案。

Izzy Miller,Hex 的 AI 研究负责人

「知道数据不存在」这句是关键。旧模型查不到东西时会换个关键词接着刨,每刨一轮,工具返回的内容都要当成输入 token 计费一次。会止损的模型省的正是这些空转的轮次。

往下调有效,但关到底反而更贵

降档能省钱,那把档位一路关到底是不是最省?把官方两张图里每个数据点摊开看,答案是不。

下面这个盘可以拨:选一个推理档位,四个型号的账单和分数同时跟着变。账单条的满格是 GPT-5.5 极高档跑完整套搜索评测的 33.27 美元,所有条都按这个尺子量。

BROWSECOMP · 拨一格看四个型号怎么变
GPT-5.6 Sol旗舰
账单
$1.97
分数
69.67
账单
$0.50
分数
65.32
账单
$2.05
分数
83.41
账单
$3.48
分数
87.52
账单
$4.59
分数
88.78
账单
$6.36
分数
90.36
GPT-5.6 Terra中号
官方图上没给这一档。
账单
$0.20
分数
50.47
账单
$0.47
分数
67.38
账单
$1.53
分数
79.30
账单
$1.85
分数
81.52
账单
$3.12
分数
87.52
GPT-5.6 Luna小号
官方图上没给这一档。
账单
$0.08
分数
45.73
账单
$0.23
分数
58.85
账单
$1.03
分数
80.02
账单
$1.33
分数
84.04
账单
$1.42
分数
83.25
GPT-5.5上一代旗舰
账单
$1.42
分数
34.68
账单
$2.72
分数
57.82
账单
$18.95
分数
78.12
账单
$30.02
分数
83.89
账单
$33.27
分数
84.36
官方图上没给这一档。
拨到「极高」那一格看一眼:最下面一行的账单条拉满了整条轨道($33.27),Luna 那行细得几乎看不见($1.33),两行的分数条却一样高。这就是这份指南想让你看到的那件事。

而拨到最左边那一格,会看到跟直觉相反的东西。关掉推理并不省钱。两张图上各有一个证据:

  • 搜索评测里的 Sol:关掉推理花 $1.97 拿 69.67 分;开到最低档只花 $0.50,拿 65.32 分。也就是说,关掉推理这个动作没省下钱,反而多花了 3.9 倍,换来的是多 4.3 分。
  • 编程指数里的 Luna:关掉推理花 $123.66 拿 37.30 分;开到最低档花 $74.84,拿 42.40 分。这一组又贵又差,多花 65% 的钱,分数还低了 5.1 分。

另一头也有拐点。Luna 在搜索评测上从「极高」开到「顶格」,账单从 $1.33 涨到 $1.42,分数却从 84.04 掉到 83.25。档位开到顶,未必加分。

为什么会这样

不让模型想,它就只能靠多调工具、多绕几轮来撞答案,而每一轮工具返回的内容都要当成输入 token 计费。思考本身要花钱,但它买的是「少走弯路」,这笔账在难任务上通常是划算的。

动手处

调档位的方向是从低往上试,看着账单和分数两条线一起走,走到拐点就停;而不是从顶格往下砍。最低档往往是性价比最高的那一格,最左边那一格(完全不推理)在这两张图上都不划算。

旋钮

第二个旋钮:小型号能省 25 倍

档位这个旋钮拧完,第二个是换型号。GPT-5.6 家族有三个:Sol(旗舰)、Terra(中号)、Luna(小号)。

过去中小型号只配干边角料,原因是长上下文和大量工具调用它们扛不住,一旦任务链条拉长就掉链子。这一代变了,靠的是测试时计算。

测试时计算 test-time compute

让模型在回答之前多想一会儿,想的时间就是算力,也是钱。同一个学生交卷前多花十分钟检查,跟换一个更聪明的学生,这是两条不同的提分路子;小型号走的是前一条,模型本身没变大。

结果就是 Luna 和 Terra 常常能打到 GPT-5.4、GPT-5.5 的水平,价钱却低一大截。指南里点名的那组对照,来自 BrowseComp,一个专考「能不能搜出犄角旮旯里的冷门事实」的评测:

GPT-5.5 · 极高档 三个月前84.36 分
$33.27
GPT-5.6 Luna · 极高档 最小的那个型号84.04 分
$1.33
分数差 0.32 分,账单差 25 倍。两条都是跑完整套 BrowseComp 题目的总花费。
GPT-5.6 SolGPT-5.6 Sol UltraGPT-5.6 TerraGPT-5.6 LunaGPT-5.5Claude Mythos PreviewClaude Opus 4.8Gemini 3.1 Pro Preview$0$7$14$21$28$35API cost (USD)30%50%70%90%Score
官方原图。每个数据点的成本与得分逐个取自原文图表的无障碍标签(非估读),本站按原图同一坐标系、同一官方配色重绘。同一套图放到搜索评测上,横轴整个只有 35 美元宽。GPT-5.6 三条线全部压在最左边 7 美元以内,而上一代那条粉线一路拉到最右端。三条横向虚线是竞品成绩(图上只给了分数,没给对应成本),右上那颗星是多 Agent 的 ultra 档。
这个 $1.33 还是旧价。指南里注明,发布之后 OpenAI 又降过一次价,图上所有成本数字都是降价前测的。

Hypha 这家做文档 Agent 的公司给了另一个角度的数字:

Luna 保住了 GPT-5.5 提取准确率的 98%,成本只有十八分之一。这让我们的 Agent 能用得起高质量的文档理解,而且这个价钱在多得多的场景里都算得过账了。

Serhii Shchoholiev,Hypha 的 Agent 工程负责人

小型号该塞进流程的哪一段

三类活最适合交给它们:量特别大的、用户在等着的(对延迟敏感的交互)、Agent 流程里反复要做的那几步。

指南举的例子落在一家法律科技公司,Agent 分析之前得先把手写备忘录解析成文字。这个解析步骤不需要判断力,过去却跟着整条流程一起用旗舰模型。把它单独拆出来换成 Terra 或 Luna,省下的是实打实的钱,而后面真正需要判断的那一步照旧用 Sol。

这两张图是 OpenAI 自己跑的,图上除了自家模型还标了 Claude Fable 5、Claude Opus 4.8、Claude Mythos Preview 和 Gemini 3.1 Pro Preview。BrowseComp 那张图里,竞品只以横向参考线出现,只给了分数(Claude Mythos Preview 87.9%、Gemini 3.1 Pro Preview 85.8%、Claude Opus 4.8 84.4%),没给对应的成本,所以没法拿它们跟上面这组价钱做对照。本文的自画图只呈现 GPT-5.6 家族内部的档位与成本关系。

动手处

把流程拆开看,找出那些不需要判断力的机械步骤,解析、提取、分类、格式转换、翻译,单独换成 Terra 或 Luna,判断力那一步留给 Sol。整条链都用同一个型号,是上一代留下的习惯。

架构

三个架构开关,两个就翻了近三倍

型号和档位这两个旋钮拧到头,也就这样了。剩下的省钱空间在架构里,具体说,在于 Agent 每一轮到底往上下文里塞了些什么。

指南把提效方法归成三类,并且强调 GPT-5.6 是带着这三件事一起端到端训练的,模型本来就懂怎么配合它们,无需在外面搭一层技巧去哄它:

1
复用已经做过的功

让推理过程跨轮次留下来(持久化推理),再用原生压缩把长对话压短。模型不用每一轮都把前面的事重新想一遍,也不会因为上下文被裁而丢掉线索。

2
该并行的地方拆开并行

原生多 Agent 编排:主 Agent 把能拆的活派出去,几个子 Agent 同时干,最后汇总。

3
确定性的活挪进代码

程序化工具调用:把筛选、聚合、编排这些不需要智力的动作搬到模型的上下文窗口外面去,模型的 token 只留给判断。

这三件事一起开有多大差别,指南给了一个硬例子。在 ARC-AGI-3 这个评测上,GPT-5.6 Sol 用标准 Harness 拿 13.3%;只把「保留推理」和「压缩」两个开关打开,分数跳到 38.3%,同时输出的 token 还少了约 6 倍:

13.3% → 38.3%
ARC-AGI-3 得分。模型没换、Harness 没重写,只改了两个设置
约 6 倍
同一次改动带来的输出 token 减少幅度,分数涨了,字还写少了

分数接近三倍,token 反而少了六分之五。这两个数字同时出现,说明省下来的正是那些「重新想一遍」和「重新组织一遍上下文」的空转。

这次调优 OpenAI 单独写过一篇复盘,站内有解读
OpenAI 只打开两个 API 设置,GPT-5.6 Sol 在 ARC-AGI-3 的分数从 13.3% 涨到 38.3%
动手处

这三件事在 5.6 上是改配置,不用改模型,也不用重写 Harness。下面四节分别讲每个开关改哪一行、取值是什么、什么时候不该开。

开关

开关一:别让模型每轮重头再想

先看第一个开关,治的是长任务里最贵的浪费:模型把之前做过的功白做一遍。

持久化推理:上一轮的思考带进下一轮

过去模型每一轮的思考过程,答完就丢了。下一轮它只看得见对话记录,看不见自己上一轮是怎么想的,于是从头再想一遍。5.6 支持把之前几轮的推理条目直接带进下一轮的上下文,参数是 reasoning.context:

取值行为谁的默认
current_turn只让本轮的推理可用,不把之前轮次的推理带进下一次采样GPT-5.6 之前的模型
all_turns把之前轮次里能对得上的推理条目一起带进下一次采样GPT-5.6 家族
auto跟随所选模型的默认值;不写这个字段等同于 auto—

两个容易踩的点。第一,all_turns 只在这次请求够得着之前的响应时才有效,要么用 previous_response_id 串起来,要么把完整的响应历史重放一遍;第一次请求时两种取值没有区别,因为还没有之前的推理。第二,它给的只是连续性:那些推理条目仍然加密不可读,API 不会返回推理文字,你看不见模型想了什么。

原生压缩:撞到阈值就自动打包

对话总会越滚越长。原生压缩的做法是设一条线:请求里加上 context_management,写明 compact_threshold(比如 20 万 token)。渲染出来的上下文超过这条线,服务端自动跑一遍压缩,在同一个响应流里吐出一个「压缩条目」,然后把前面的上下文裁掉,接着往下推理,不需要你另外调一次接口。

compact_threshold 这条线 早几轮 上下文还短,一切正常 第 N 轮 撞线,服务端自动压一次 压完之后 加密块 整条变短,接着往下跑 前面十几轮的状态和推理,全被打包进这一个块里,人打不开也读不懂
压缩把之前的状态和推理打包成一个不透明的加密条目,人打不开也读不懂。本站示意图,按官方文档描述的流程绘制。

这里最容易理解错的是压缩块的性质。它不透明、人读不懂,官方文档里的原话是「opaque and not intended to be human-interpretable」。它跟「让模型写一段对话摘要」是两回事:摘要是自然语言,写多少、丢什么由模型现场发挥;压缩条目是模型在训练时就学会了怎么打包、怎么拆开的结构,把之前的状态和推理用更少的 token 原样带走。

打个比方

像把一屋子文件塞进真空压缩袋。袋子你打不开也看不见里面装了什么,但模型下一轮拆开就知道之前发生过什么。写摘要则像让人手抄一份要点清单,抄的人觉得不重要的,就永远丢了。

打开服务端压缩的最小写法:阈值到了自动压,循环里什么都不用改(官方示例;model 换成了本文语境的 gpt-5.6,原文档用的是 gpt-5.3-codex)
while keep_going:
    response = client.responses.create(
        model="gpt-5.6",
        input=conversation,
        store=False,
        context_management=[{"type": "compaction", "compact_threshold": 200000}],
    )
    conversation.extend(response.output)
    conversation.append({"type": "message", "role": "user",
                         "content": get_next_user_input()})
把压缩条目跟其他输出条目一起接在下次的输入数组后面就行。store=False 是为了满足零数据留存(ZDR)的要求。

还有一个独立的 /responses/compact 端点,给需要自己掌控时机的场景用:你送一整个上下文窗口进去,它还你一个压缩好的窗口,完全无状态。用它的时候有一条硬规矩,返回的窗口原样传给下一次调用,不要自己裁剪,因为那个窗口里除了压缩条目,还留着上一轮里需要保留的条目。

反过来,用服务端压缩加 previous_response_id 串联时,也不要手动裁剪条目。只有走无状态的输入数组模式时,才可以把最近一个压缩条目之前的东西丢掉,让请求体小一点、长尾延迟低一点。

动手处

长任务(跑很久的编码 Agent、深度调研)把 reasoning.context 确认成 all_turns,5.6 默认已经是,但从早期模型迁移过来的代码如果写死了 current_turn,等于白白关掉了这个开关。压缩则是在请求里加 context_management,配一个 compact_threshold。

开关

开关二:让模型写代码筛数据

长任务的功不白做了,但还有一处更常见的浪费:上下文被中间结果撑爆。

Agent 干的活其实分两种。一种要判断力,这份合同有没有问题、该不该继续查下去;另一种纯粹是搬运数据,筛选、合并、排序、去重、求和。麻烦在于,过去这两种活都得在模型的上下文里干。

指南举的例子是这样:Agent 去拉了 100 份文件回来,要按日期筛一遍,再找出里面相关的交易。老办法下,这 100 份的内容全都进上下文,模型一条条读过去。三个后果一起来,慢、贵,而且上下文越塞越满,模型反而越读越糊涂(这个现象叫 context rot,上下文腐烂)。

程序化工具调用(Programmatic Tool Calling)换了个做法:模型直接写一段 JavaScript 去指挥这些工具。这段代码能并行发起互不相干的调用,能写循环和条件判断,中间结果全留在 OpenAI 托管的运行环境里,最后只把筛完的那个结果交回模型手上。

老办法 工具调用 拉回 100 份 上下文窗口 模型 一条条读 又慢又贵 程序化工具调用 工具调用 拉回 100 份 模型现写的 JavaScript 并行调用 · 筛选 · 合并 · 求和 跑在上下文窗口外面 上下文窗口 只进 1 条 模型 只出判断力
同样是拉回 100 份文件,区别在于筛选这一步在上下文里干,还是在外面干,本站示意图,按官方文档描述绘制。

那段代码跑在什么地方

跑在一个全新的、隔离的 V8 运行时里,每次执行都是干净的。这个环境的边界画得很死:

  • 有的:JavaScript,支持顶层 await;能调你在这次请求里开放的那些工具;能用 text(...) 或 image(...) 输出结果。
  • 没有的:Node.js、装包、网络访问、通用文件系统、子进程、console,以及两次执行之间的任何状态。
  • 你的函数仍然在你自己的服务器上跑:程序执行到你的工具时会暂停,把调用吐给你,你跑完把结果连着原样的 caller 字段回传,程序才接着往下走。一次运行可以这样暂停很多回。

哪些工具允许被代码调用,由你说了算。每个工具上标一个 allowed_callers:

取值行为
不写,或 ["direct"]只能由模型直接调用
["programmatic"]只能被程序里的代码调用
["direct","programmatic"]两种方式都行

支持被代码调用的工具类型有:普通函数和自定义工具、MCP 工具、apply_patch、本地和托管的 shell、代码解释器。MCP 工具的审批策略照旧生效,设了需要审批,程序会停在那儿等你批。

标一个只许代码调用的工具:给函数补上 output_schema,生成的 JavaScript 才敢直接用返回字段(官方示例,已删节)
{
  "type": "function",
  "name": "get_inventory",
  "parameters": {
    "type": "object",
    "properties": { "sku": { "type": "string" } },
    "required": ["sku"],
    "additionalProperties": false
  },
  "output_schema": {
    "type": "object",
    "properties": {
      "sku": { "type": "string" },
      "available_units": { "type": "number" }
    },
    "required": ["sku", "available_units"],
    "additionalProperties": false
  },
  "allowed_callers": ["programmatic"]
}
parameters 描述入参,output_schema 描述这个函数返回的 JSON 长什么样。两个都定义清楚,模型写出来的代码才能可靠地取字段,而不是靠猜。

什么时候别用它

这个开关不是开了就一直赚。官方按任务形态给了一张对照表,判断标准是这一段的控制流可不可预测、代码能不能把结果变小:

任务形态该用哪种
一次查询或一个动作直接调用
好几条结果,代码能筛选、连接、排序、去重、聚合、校验程序化调用(前提是程序能返回一个更小的结构化结果)
前后有依赖、但数据怎么流是可预测的连续调用程序化调用(前提是代码能推出后面的参数,且失败行为写清楚了)
自适应搜索、语义判断,每个结果都该影响下一步决定直接调用
写操作、需要审批的动作默认直接调用,为的是保住一条清楚的授权边界
最终的引用核对、原生产物校验直接调用,除非程序完整保留了原始输出并逐项校验过

两种模式都开的时候,还得告诉模型哪一段走哪条路。「高效使用程序化工具调用」这种话没用,它没有划出边界。官方给了一段可以直接抄的模板:

路由模板:把方括号换成你自己的阶段、工具和停止条件(官方模板)
<tool_orchestration>
Use Programmatic Tool Calling for [bounded stage] using only [eligible tools].
Run independent calls concurrently when safe. Use only documented tool input
and output fields.
Process and reduce the intermediate results, then emit exactly [program result shape],
including the evidence needed for the final answer.
Stop when [condition] is met. Retry transient failures at most [R] times.
Do not repeat completed calls or perform side-effecting actions. If a required
result is still missing, return a clear structured failure.
Use direct tool calls for [semantic judgment, approval, or final validation].
</tool_orchestration>
这段话规定了五件事:哪一段用代码、哪些工具可用、结果要精简成什么形状、什么时候停、重试几次、哪一段留给直接调用。中间任何一件说不清楚,模型就会自己发挥。

Rogo 这家做金融研究的公司,把这套用在了拉财报、协调工具、算数字这条链上:

做金融研究,难的地方在于可靠地把文件拉全、把工具协调好、把数字算对。我们的评测里,GPT-5.6 用程序化工具调用达到了跟原来一样的评分标准,同时少用了 21% 的输入 token。这就是「一个能聊金融研究的 Agent」和「一个真能把金融研究做完的 Agent」之间的差别。

Alex Wang,Rogo 应用 AI 团队
动手处

请求里加上 programmatic_tool_calling 这个托管工具,再给每个工具标 allowed_callers,给函数补 output_schema。两种模式都开时,用上面那段 <tool_orchestration> 模板把边界划清楚。写操作和要审批的动作别交给代码。

开关

开关三:主 Agent 派活并行干

确定性的活能挪出去,能拆开的活也该同时干。

一个任务如果能切成几块互不依赖的工作,单个 Agent 只能一件件排队做,多个 Agent 可以同时开工。5.6 把这套编排做进了 API:主 Agent(叫 /root)负责拆任务、派活、等结果、最后汇总成一个回答,你的应用不用自己写编排逻辑。

/root 拆活 · 汇总 /root/researcher 查资料 /root/reviewer 审代码 /root/implementer 写实现 /root/implementer/tester 子 Agent 还能再派子 Agent 三个同时在跑 各有各的上下文 干完把结果回传给 /root
子 Agent 共享同一个模型和同一套工具,路径是树形的,深度和总数都没有硬上限,本站示意图,路径命名照官方文档。

Qualia 拿一堆开放式研究问题喂给一队 Agent 跑,GPT-5.6 Sol 一上手就对了。它比 GPT-5.5 有明显提升,比我们测过的几乎所有模型都跑得快,很快成了我们默认用的 OpenAI 模型。

E Chi,Quadrillion 创始人

GPT-5.6 是我们见过 OpenAI 最好的编排者。我们一次性甩给它六份需求(写、做、还要把六份都讲一遍),它全程没丢线索,质量也没散架。

Jon Bell,Obvious 联合创始人兼首席产品官

好处有三条,而且是三件不同的事:并行执行省的是墙上时钟时间;上下文各管各的,每个子 Agent 只拿到一个边界清楚的任务,互不相干的工作不会在同一个上下文里打架,准确率反而更高;协调由模型做主,派生、传话、等待都是它自己调度。

怎么开、怎么管

要改的地方怎么写
开关multi_agent.enabled: true;目前是 beta,请求里带 responses_multi_agent=v1
并发上限max_concurrent_subagents,默认 3,官方建议大多数场景就用 3。这个数管的是整棵树同时活跃的子 Agent(含孙辈),不含根 Agent
上限树的深度和子 Agent 总数没有固定上限
什么时候派加一句 developer message,跟给根 Agent 的指令叠加生效

模型自己对「该派几个、什么时候派」有判断,但这件事管得住。官方给了两句现成的,一保守一激进,直接贴进 prompt 就行:

管住多 Agent 什么时候派活的两句话(官方给的,英文原样贴进 prompt 即可)
保守:只在用户明确要求时才派

Do not spawn subagents unless the user explicitly asks for subagents,
delegation, or parallel agent work.

激进:并行能明显提升速度或质量时主动派

Proactive Multi-agent delegation is active. Use subagents when parallel
work would materially improve speed or quality.
派子 Agent 是要多烧 token 的。把话说清楚,能让它只在多花的 token 换得到更好结果时才派人。

运行过程中你会在输出里看到六种协作动作,它们由服务端托管,你的应用不需要执行、也不用给它们返回结果:

动作干什么
spawn_agent造一个子 Agent,派给它第一个任务
send_message给已有的 Agent 留言,不启动新一轮
followup_task给非根 Agent 追加任务,启动或恢复它的一轮
wait_agent等自己的信箱有动静
interrupt_agent打断另一个 Agent 正在进行的一轮,但不删它的上下文
list_agents拿到当前整棵树、各自状态和最后一条任务消息

四种情况别开

这个开关有四种明确的反面场景:

  • 每一步都直接依赖上一步,本来就是一条有序的推理链,拆不开。
  • 任务小到一趟就能跑完,派人的开销比干活还大。
  • 几个 Agent 会抢同一份可变资源,频繁写同一个共享状态,并行只会打架。
  • 你需要一个固定确定的执行图,模型自己调度就意味着执行路径不完全可预测。

另外,如果整件事的时间本来就卡在某一个慢的外部操作上,多派几个 Agent 也快不了。

开了多 Agent,这几件事会跟着变

官方文档单列了几条限制,其中第一条会直接影响上一节讲的压缩:

  • 压缩会被自动打开。multi_agent.enabled 一设成 true,服务端压缩就隐式启用,哪怕你的请求里压根没配 context_management。压缩对根 Agent 和每个子 Agent 分别独立生效,各自保住自己的上下文;想改阈值,仍然可以显式写一个 compact_threshold 盖过默认。
  • 独立的 /responses/compact 端点用不了了。想自己掌控压缩时机的那套做法,在多 Agent 下不支持。
  • reasoning.summary 不支持。
  • max_tool_calls 不支持。靠这个字段兜底控制工具调用次数的,开多 Agent 前要另想办法。

ChatGPT 里那个 ultra 档位,底下就是这套机制。在 BrowseComp 那张图上它单独占一个点:GPT-5.6 Sol Ultra 顶格档拿到 92.18 分,花 12.17 美元,比 Sol 单独跑顶格档的 90.36 分高 1.8 分,账单差不多是两倍。

动手处

打开 multi_agent.enabled,max_concurrent_subagents 保持默认 3,再用上面那句 developer message 定它什么时候该派活。先确认你的任务真能拆成互不依赖的几块,拆不开的任务开了这个开关,只是把 token 花在协调上。

成本

最后一个开关:缓存断点设错更亏

前三个开关都是净赚。最后一个不一样,它可能倒亏钱。

指南里关于缓存写了两句好消息:整个模型家族的缓存存活时间延长到至少 30 分钟,缓存断点(cache breakpoint)现在可以在上下文里确定性地设置。Ploy 那边的实测是这样:

我们给一个 29,000 token 的共享 prompt 加上了缓存断点和按工作区区分的 key,未缓存的输入砍掉了 28%。30 分钟的缓存窗口也是个大解锁:我们的 Agent 可以跨多次运行复用同一份上下文,不用每次都从头加载。

Lorenzo Gentile,Ploy 的 AI 工程师

但官方文档里的一张对照表说明了指南没提的一件事:GPT-5.6 把缓存的匹配方式改了。

 GPT-5.6 及以后早期模型
怎么匹配只在断点处精确匹配自动尽力复用能对上的前缀
显式断点支持(隐式缓存同时也在)不支持,全自动
最小可缓存前缀1,024 token1,024 到 2,048 token,看模型
写缓存收费未缓存输入价的 1.25 倍不额外收费
存活时间精确 30 分钟,用 prompt_cache_options.ttl 设看模型,各不相同

默认情况下,系统把一个隐式断点放在最新的那条用户或工具消息上,而且不会像老模型那样自动往前找最长能对上的前缀。三档计价说清楚就是三句话:

0.1×
命中缓存读进来的 token,便宜十倍
1.25×
写进缓存的 token,比原价贵两成半
1×
既没读到也没写进去的,原价

把这两件事放一块,倒亏钱的路径就出来了。假设你的 prompt 是「一段几万字的稳定指令 + 一个时间戳 + 用户这次的问题」,你什么都不设:

断点在默认位置(最新那条消息上)
时间戳和用户消息都排在断点前面
第 1 次
稳定指令(29,000 token)
时间戳 1
问题 1
第 2 次
稳定指令(29,000 token)
时间戳 2
问题 2
第 2 次请求的前缀在断点处对不上第 1 次(时间戳变了),整条重新写一遍缓存。每次都按 1.25 倍计价往里写,一次都读不到,比压根不用缓存还贵两成半。
断点钉在稳定内容的结尾
会变的东西全排到断点后面
第 1 次
稳定指令(29,000 token)
时间戳 1
问题 1
第 2 次
稳定指令(29,000 token)
时间戳 2
问题 2
断点前的内容一个字没变,第 2 次直接命中,这 29,000 token 按 0.1 倍计价;断点后面怎么变都不影响。这就是 Ploy 那 28% 的来路。

断点标在哪一个内容块上,那个块连同它前面渲染的所有内容就是可复用的前缀。所以规则只有一条:找出每次请求都不变的那部分,把断点画在它的最后。

把断点钉在稳定内容结尾,并关掉隐式断点(官方示例,已删节)
{
  "model": "gpt-5.6",
  "prompt_cache_key": "support:knowledge-base-v1",
  "prompt_cache_options": { "mode": "explicit" },
  "input": [
    {
      "type": "message",
      "role": "developer",
      "content": [
        {
          "type": "input_text",
          "text": "Follow the shared support policies and reference material...",
          "prompt_cache_breakpoint": { "mode": "explicit" }
        }
      ]
    }
  ]
}
mode: "explicit" 会关掉那个默认的隐式断点,免得每次变动的尾巴又被写进缓存一份。注意:设了 explicit 却一个显式断点都没标,这次请求就完全不走缓存,也不产生写入费。

断点可以设多个,用在 prompt 里不同部分变动频率不一样的时候(共享指令很稳、参考资料偶尔更新),这样每次请求都能复用最长的那段没变的前缀。但有两个上限要知道:每次请求最多写 4 个新缓存(超过 4 个断点,只有最后 4 个会被写;隐式模式下最新那条消息的断点先占掉一个名额),读缓存时最多回看最近 50 个断点,多个断点都能对上时,服务端从最长的那段匹配前缀读。

三种模式怎么选:隐式(默认)适合对话式地往后追加内容、前面历史不变的场景;隐式加显式断点适合共享前缀和增长的历史都值得复用;只用显式适合前缀稳定、后面每次都不一样且几乎不会被复用的场景。

还有个跟延迟有关的:给相关请求配同一个 prompt_cache_key,能提高它们落到同一台推理机器上的概率,那台机器上正好有之前写好的前缀,延迟也跟着降。

动手处

把 prompt_cache_breakpoint 标在稳定内容的最后一个内容块上,配一个稳定的 prompt_cache_key。先确认断点前的内容真的一个字都不变,时间戳、随机 ID、用户名混进去,就是每次花 1.25 倍写一份没人读的缓存。前缀不到 1,024 token 则完全不进缓存。

速查

六处改动的参数速查

整篇能带走的东西,就是下面这张表。

要改的写在哪取值 / 默认官方给的效果
推理档位reasoning.effort从最低档往上试,别从顶格往下砍低档打赢上一代高档
换小型号model机械步骤用 Terra / Luna,判断留给 Sol同分数带 $33.27 → $1.33
持久化推理
+原生压缩
reasoning.context
context_management
all_turns(5.6 默认)/ current_turn / auto
{"type":"compaction","compact_threshold":200000}
两项一起开:13.3% → 38.3%,输出 token 少约 6 倍
程序化工具调用加 programmatic_tool_calling 工具 + 每个工具的 allowed_callersdirect / programmatic / 两者输入 token 少 21%
多 Agentmulti_agent.enabledtrue;max_concurrent_subagents 默认 3(beta)ultra 档在 BrowseComp 拿 92.18 分
缓存断点prompt_cache_breakpoint + prompt_cache_key钉在稳定前缀的最后一块;ttl 只支持 30m未缓存输入少 28%

只写在官方文档里的限制

  • 缓存前缀不到 1,024 token 就完全不进缓存。这个数算的是断点为止渲染出来的整个前缀,不只是你标记的那一块。
  • 每个 prompt_cache_key 的流量控制在每分钟 15 个请求左右。超了命中率会掉,大流量要用稳定的、确定性的 key 去分片。
  • 复用一次会刷新 30 分钟寿命,而且刷新不再收写入费。30 分钟从写入那一刻算起,每次被复用重新计时。
  • 派子 Agent 会多烧 token。拆不开的任务、要频繁写同一份共享状态的任务,开了只是把钱花在协调上。
  • 程序化工具调用的沙箱没有网络、没有文件系统、装不了包、跑完不留状态。代码只能通过你这次请求里开放的工具跟外界打交道。
  • 每次请求最多写 4 个新缓存,读缓存最多回看最近 50 个断点。断点设多了,只有最后 4 个会被写进去。
  • 开多 Agent 会隐式打开服务端压缩,而且 /responses/compact 端点、reasoning.summary、max_tool_calls 都不再支持。这一条最容易踩:你以为压缩没开,其实它自己开了。

缓存不命中时按这四条查

症状查什么
cached_tokens 是 0断点为止的前缀够不够 1,024 token;之前有没有请求写过同一个前缀;相关请求用的是不是同一个 prompt_cache_key
每次请求都在写缓存断点前面是不是混进了时间戳、变动的用户输入或工具调用历史,把显式断点挪到稳定前缀的结尾
读和写同时都不为零隐式模式下这是正常的(读到旧前缀、又把新追加的内容写进最新断点)。不想缓存新内容就切成只用显式
用了显式却没命中确认至少有一个内容块标了 prompt_cache_breakpoint,且到标记处的前缀满 1,024 token

指南收尾的那句话,就是这张表的总结:过去每一步都得上前沿模型的活,现在靠换小型号、调推理档位、加上架构上的选择,能用零头的价钱做到同等甚至更好的结果。

✅ GPT-5.6 省钱清单
上面那张六行参数表 + 七条只写在官方文档里的限制(1,024 token 起、每分钟 15 个请求、复用刷新不再收费、多 Agent 多烧 token 且会隐式开启压缩、沙箱没网络、每次最多写 4 个缓存),照着核一遍就能改完。
来源
The builder's guide to GPT-5.6OpenAI·openai.com·2026-08-13
本站说明
两张跑分图的数据点,是从原文内联图表的无障碍标签里逐点抄出的原值,不是从图上估读;原图为 OpenAI 自测,其中竞品只以横向参考线出现、只给分数不给成本。正文里的参数名、取值、默认值、计价倍率、1,024 token 下限、每分钟 15 个请求、六个协作动作、程序化工具调用的沙箱边界与选择标准表,来自上面五份官方 API 文档,指南正文只写了一两句,这些是补读来的。两张跑分图按原图的坐标系与官方配色重绘,数据点未做任何取舍;文中另有三张机制示意图为本站绘制。
↑ 正文结束
✓ 本篇全文免费开放

会员可复制、下载全文 Markdown,还能让你的 AI 订阅和提问。

阅读原文 ↗
📮 新解读第一时间进邮箱

读完觉得有用?留个邮箱,每篇新解读发布就送达,随时退订。