智能体外壳(harness)。
你读过的每一个智能体基准分,都是两样东西的成绩——一个模型,以及它被放进去跑的那层外壳——而图表上只写了其中一个的名字。外壳就是包在权重外面的那圈东西:循环、工具目录、上下文策略、停止条件。它是归你所有的那一半、没人会公布的那一半;而在多数令人失望的智能体项目里,出错的正是这一半。
模型、框架、外壳——三样不同的东西。
这几个词常被混着用,而这个区分是承重的。模型是 API 后面的一堆权重:给它消息,它返回文本或一次工具调用。框架是你拿来搭东西的库——LangGraph、某个 agent SDK,你 import 进来的那个。外壳是你真正跑起来的那套具体装配:这条系统提示、这十九个工具连同这些描述、这套淘汰策略、这个停止条件、这种重试行为、这份思考预算。
你可以用框架搭出一层外壳,也可以用一个 while 循环搭出来;同一个框架上可以跑两层截然不同的外壳。区分它们的检验方法是:换掉模型、其余一切照旧——那"其余一切"就是外壳。具体而言,它替模型做了七个模型自己永远碰不到的决定:
- 有哪些工具、粒度多粗、用什么措辞描述。描述是你写的提示词文本,而工具选择会随它移动。
- 什么进上下文、什么被清出去——在工具边界处截断、对旧轮次做摘要、一个五万 token 的文件是按值放进去还是按引用放进去。
- 循环何时停——步数上限、token 上限、一次"目标已达成"检查,或者干脆什么都没有——而后者才是常态。
- 工具出错时会怎样——模型看到的是一条用得上的信息、一段堆栈,还是一次它根本不知情的重试。
- 智能体不问就能做什么——哪些调用自动放行、哪些必须有人点头、哪些直接拒绝。
- 输出怎么解析——严格 schema、宽松正则,还是一个悄悄改变了"模型说了什么"的修复循环。
- 买多少思考——每步的努力度或推理预算,它同时是一个质量旋钮和一个成本旋钮。
这七条没有一条住在权重里。而它们每一条都会改变结果。
基准分里有一半属于外壳。
实验室公布一项智能体成绩时,公布的是一个二元组,却只点了其中一个的名。Google 自己为 2026 年 8 月 13 日发布的 Gemini 3.7 Flash 所记的评测说明写明:编码结果是用一套 mini SWE-agent 外壳、在高思考档下自行计算的——脚手架与努力度设置属于这次测量本身,而不是无关紧要的附带条件。这是通行做法而非疏漏;要给一项智能体任务打分,就绕不开先选一层外壳。
这一效应的量级很容易被低估。同一次 Gemini 3.7 Flash 发布中,Terminal-Bench 2.1 上约为 85.8%,Terminal-Bench 3.0 上约为 14.9%。同样的权重、同一周,只是换了一套更难的外壳与任务组合:这两个数字里任取其一单独去看,都会像是一次代际飞跃或一场崩塌。由此得出两条实用规则:
- 跑在别人外壳上的模型对比,是关于他们那层外壳的证据。它告诉你的是:在他们的工具目录、他们的上下文策略、他们的努力度预算之下,哪个模型胜出。换到你这边,排序可能反转,而且确实会——最常见的原因是他们的外壳留给模型的重试余地远大于你的。
- 要固定的不只是模型版本,还有评测版本。一个分数只能与同一套件、同一版本、同一脚手架下的另一个分数相比。跨基准版本作比较,是把一次真实的退步当作升级发布出去的最常见方式。这正是读懂基准通篇在讲的事,只不过智能体套件连脚手架一起打包,把这件事又推得更尖锐了一层。
换个有用的说法:一个公布出来的智能体分数,是一层调好的外壳所能触及的上界,而不是买下模型就随之到手的属性。你第一天的数字一定更低,而那道差距就是你的外壳——这其实是好消息,因为它正是你这周就能动手修的那部分。
你的质量住在外壳里,而外壳是更便宜的那一半。
换模型是一次重新资格认证:新的拒答画像、新的工具方言、新的上下文上限,得跑一整轮评估才敢用。改一句工具描述则是一次部署。既然不对称到这个地步,外壳上的功夫在单位风险回报上遥遥领先——可它偏偏是团队最后才碰的东西,因为"升级模型"是一个开会就能拍的决定,而"我们的工具报错没法读"不是。
这些杠杆,大致按"最后查出来是它的问题"的频次排序:
- 工具粒度。四十个扁平且互相重叠的工具,会制造出任何模型都修不好的选择错误。更少、边界更清、命名更可分辨的工具,稳定地赢过换一个更大的模型——见面向智能体的工具设计。
- 工具错误信息。错误就是提示词。
400 Bad Request什么也没教;而"缺少必填字段customer_id;请先调用search_customers"能让这次失败一步收场,而不是六步。 - 上下文策略。你带着的东西,此后每一步都要付一次钱,而模型能分给它的注意力反而更少。上下文工程从头到尾都是外壳层的事。
- 停止条件。缺一条终止规则不是成本 bug,是正确性 bug:没有停止规则的智能体,最终会就它并没做完的活儿给出自信的输出。见规划与终止。
- 努力度预算。多想一会儿是一个真实的质量杠杆,也带着一份真实的账单;它该被显式控制,而不是听凭厂商默认值。
这件事更难听的版本是:相当一部分"我们试过智能体,不好使",其实是把一个前沿模型丢进了这样一层外壳——工具目录铺得漫无边际、原始 API 报错直接回灌给模型、步数没有任何上限。模型从来就不是那道约束。
把它当作一个带版本的产物,因为它本来就是。
既然行为由外壳决定,那么外壳一变,行为就变——而外壳一直在漂移,因为另一个团队改动的一句工具描述,就是一次没人记录在案的提示词变更。三个习惯能让这件事显形:
- 把这个四元组命名出来。行为是(模型、提示、工具、策略)。四项全部钉到版本上,把由此得到的哈希打在每一条 trace 上,你才答得出"上周二为什么表现不一样"——正是灰度发布与版本化里的那套纪律。
- 一次只动一项。模型升级和提示重写一起上线,产出的评估变化谁也归因不了,最后两边一起背锅。
- 评估装配体,而不是模型。你的评估集跑在你的外壳上;厂商在他们外壳上的分数,对你而言是一个尚未验证的假设。见智能体评估。
这也是读懂 2026 年这个平台市场最清楚的一条线索。托管智能体运行时恰恰就是厂商供应的外壳:你买到的是一个循环、一条工具调用通路、一套上下文策略,以及一组由别人调好并负责维护的安全控制。这是一件真实的产品,而这笔交易正是本文所描述的那一笔——你不再拥有系统里质量落差最大的那一半,换来的是不必自己把它建起来。
下一次升级模型之前,先拿一天花在外壳上。数一数你有多少工具,把重叠的砍掉;把最高频的五条工具错误当成模型来读一遍,然后重写;给循环加一个硬性步数上限;别再把文件内容整个塞回对话记录。然后在旧模型上重跑你的评估。如果数字动了——而它通常动得比一个模型代际还大——你就刚刚搞清楚了自己的质量究竟从哪儿来,而且拿到它没有付出一次重新资格认证的代价。
延伸阅读:智能体循环,外壳所包裹的那个机制;智能体框架,它下面那层库;智能体成本控制,上下文策略对账单做了什么;以及基准全景,哪些智能体套件才值得一读。