这次更新最值得看的不是分数。

官方给的说法很直接:新模型在训练阶段就针对自家的 harness 做了优化,任务表现提升,跑得更快,输出用量和 token 成本都降了。几个指标一起往好的方向动,这在模型发布里不常见。多数时候我们看到的只是单项上涨,另外几项靠用户自己承担。

但这句话还有下半句:想吃到收益,客户端要升到指定版本。也就是说,提升有一半不在模型里,在模型外面那层程序里。

harness 是包在模型外面的那层东西:拼请求、管历史、挂工具、控思考预算。同一个模型换一层外壳,表现可以差出一截。这次被翻出来的三处改动,都围绕同一件事——别让前缀缓存失效。

训练目标变了,评测对象也变了

以前评模型,输入是一段对话,输出是一个答案,变量基本只有模型。

现在模型在训练时见过某套外壳的请求结构:system 消息放在哪、工具怎么声明、历史怎么组织。推理时请求长得像训练数据,模型就更顺。

代价是可迁移性。换个外壳,请求结构变了,训练时学到的那点默契就没了。所以这类发布里的分数,严格说是「模型加外壳」的分数,不能直接搬去比较别家的客户端。

这也解释了一个细节:升级要求写到 rc 版本。功能还在 RC,说明接口没冻结,收益和风险绑在同一个版本号上。

改动一:系统提示挪进历史

原来的做法是系统提示固定在 messages 开头。想改一句,就得重写第一条,前缀一变,后面整段历史全部重算。

新做法允许 role 为 system 的消息出现在 messages 的任意位置,模型把最新的一条当作完整的系统提示。改提示时,把它追加在当前这轮 user 消息之后,开头那条不动。

两个前提不能漏:

  • 必须发完整的新提示,不能只发改动部分
  • 追加的位置在本轮 user 之后,不是随便找个地方插

前缀缓存的命中条件是前缀逐字节一致。这个改动本质上是在「可变」和「不可变」之间划了一条线:开头永远不变,变化往后放。

改动二:对话中途加工具,缓存不掉

工具声明通常也在最前面。会话跑了一半要加个工具,按老办法得改 tools 数组的开头,缓存同样失效。

这里的做法分两步:

  1. 新工具追加到 tools 末尾,标上 defer_loading: true
  2. 在历史里插一条 system 消息,内容是 {"type":"tool_addition","tool":{"type":"tool_reference","name":"..."}}

请求头还要带上 anthropic-beta: mid-conversation-tool-changes-2026-07-01。这套做法用真实 API 验过:加工具之前的那段对话照样命中缓存。

defer_loading 的作用是把工具定义推迟加载,声明位置不变,前缀就不动。这个思路可以单独拿走,跟用哪家模型没关系。

一次长会话里,缓存是这样保住的
  1. 1固定开头系统提示和工具声明放在最前,之后不再改
  2. 2追加新提示在本轮 user 消息之后插一条 system
  3. 3追加新工具放 tools 末尾,标 defer_loading
  4. 4下一轮请求前缀没变,历史部分继续命中缓存
前提是开头不动,变化只往后加

改动三:思考强度按调用分配

思考预算也能单独设。output_config.effort 有 low、high、max 三档,thinking 可以整个关掉,默认是开的。

真正省钱的不是档位本身,是分调用给预算。搜索、生成标题这类辅助请求,关掉思考,延迟和 token 一起降。主任务该想多久想多久。

这件事听起来小,但它是「按任务分配算力」最便宜的实现。很多团队的做法是一刀切:要么全开,要么全关。

哪里会翻车

第一,能力不是全产品线都有。前两项只对 flash 档声明了,pro 档没有。文档里的一句话,换个模型就不成立,别默认整条线都能用。

第二,带日期的 beta 头会变。mid-conversation-tool-changes-2026-07-01 这种命名,意思是接口还在动。上线要锁版本,还要写降级路径:beta 头不被认,就退回老办法。

第三,缓存的前提很硬。开头动一个字符、工具顺序换一下,甚至序列化时字段顺序变了,命中就没了。日志里要能看见 cached tokens 这类计数,否则省没省全靠感觉。

第四,对照组选的是上一代。发布方的比较对象不是同代最强,这种对比只能说明代际差。看到「提升明显」,先问一句跟谁比。

第五,旧会话能不能续。历史结构变了,升级之后的长会话续接要单独测。这类问题不会写在发布说明里。

怎么验证这次升级值不值

别只看一个数。三项一起看:任务成功率,或者人工接管率,加上完成时间、输出 token。只动一项,多半是任务选得偏。

按任务类型拆开。写代码、查资料、改配置,缓存命中的比例不一样,收益也不一样。

固定变量。外壳版本、模型档位、思考档位、任务集,四个都固定,再跑两遍看波动。第二遍还能不能找出新东西,比第一遍的绝对值更有信息量。

最后一句判断:这次值得抄的是三个工程手法,不是分数。前缀缓存、工具增量加载、思考预算,放在任何一套外壳里都能做。模型为外壳训练这件事会越来越多,评测的门槛也会跟着变,从跑个分,变成把整套请求复现出来。