释放模型:前沿的 harness 设计

Replit 反驳 model router:router 永远比它选中的模型弱,不如让 core loop 自己决定每一步用哪类 subagent、多大算力。四个 harness 原语加实测数据,结论是 harness 越少插手越好。

中文
复制
白底上由彩色小方块组成的抽象点阵图案,几条颜色不同的点带从左上向右延伸并逐渐交汇

模型路由器如今随处可见,但有一个根本性的局限。无论它靠的是精巧的启发式规则,还是一个逐轮读取、挑选 LLM 的小模型,路由器的能力永远比不上它所挑选的那个模型。Replit Agent 把决定权交给模型本身。主 agent,也就是核心循环,决定子 agent 的档位和投入程度,并随着任务推进调整自己的。有了这份自由,GPT-6 Astra 把常规实现交给成本更低的子 agent,自己判断哪些 token 值得花。在 DeepSWE 和 Terminal-Bench 上,Replit Agent 相对单独运行的 Astra 都是帕累托最优:已公布的 Astra 基线里,没有哪个成本更低而得分更高。相比 sidekick 架构——同样的配置,但只有一个长期存活的 worker——它还分别高出 11 分和 16 分。

为什么我们少做脚手架

编程 agent 用一种压缩、满是行话的语体写作,绰号“Claudish”;每个前沿模型的文风都足够独特,仅凭文本就能辨认出来 [7]。所以我们设计 harness 时,让每个模型按自己的方式工作,同时保留它仍然需要的护栏,目标是以最低成本保证质量。每出一个新模型,我们都要回头重测那些原本笃信的结论,并快速试验那些建立在涌现行为之上的技术。所谓解放模型,就是让它自己决定该想多深、何时把活交出去、交给谁。

解放模型

harness 提供选项、守住护栏;每一步由核心循环决定。

1 该想多深

投入程度逐步设定,在最新的模型上还能在一轮之内改变,且不会造成 cache miss。

2 何时把活交出去

交接换来上下文管理和并行;小任务则什么都不派生。

3 交给谁

前沿是参差不齐的,所以每个专家都跑在最擅长其本职工作的模型上。

示意图:核心循环每一步做出的三个决定

图 1:释放模型:核心循环在每一步做出的三个决策。

可组合的委派原语

在开始用 GPT-6 Astra [2] 做实验时,我们发现这个模型很擅长委派。GPT-6 系列也是 OpenAI 首个支持在回合中途调整 effort 而不破坏缓存的模型。

为了用上这些能力,我们打磨了四个 harness 原语。它们让核心循环在每一步只有少量选择:派发哪一类 subagent、用什么规模和 effort、是否回到已经交代过任务的某个 subagent,以及思考多深:截至 2026 年 9 月,Replit Design 在 Design Arena 的 Builders 排行榜上排名第一 [8]。每一类都有自己的模型和工具。目前,有哪些专家仍由 harness 决定;核心循环决定何时用、怎么用。

  • Subagent 档位与 effort。 分为 small、standard、large 三档,成本和能力逐级上升,档位之内还有 effort 等级。两者对每个 subagent 都适用,由核心循环在每次派发时选定。比如,机械性的重命名交给 small、低 effort,而为顽固 bug 生成假设则交给 large、高 effort。
  • 可复用的 subagent。 核心循环可以回到已经交代过任务的 subagent,而不必从头开始。并不存在一个贯穿整个会话的固定助手:任意数量的 subagent 会跨类型、跨档位保持热状态,由核心循环决定唤醒哪一个。OpenAI 较新模型上更长的缓存生命周期压低了这样做的成本。在 GPT-6 系列 [2]、Fable 5.1 [3] 以及这些供应商此后发布的模型上,调整 effort 会保留缓存。在其他模型上,调整 effort 和切换模型都会重建缓存。我们训练了一套升级系统,在每一步检查轨迹,让 effort 与任务难度匹配。它不像路由器那样只对请求判断一次,而是在回合中途根据正在进行的工作做出反应。

Astra 和 Fable 5.1 [3] 的代码质量也让我们减少了 code-review subagent 的使用,而 eval 分数没有下降。我们此前没有在任何模型上见过这种工程水平。

新模型会自行分派任务

Astra 和 Fable 这类前沿模型每 token 成本更高,放在更小的模型旁边显得不划算。但我们观察到,它们会自然地把任务分派给成本更低的子智能体,把自身的 token 留给真正需要它们的决策。Replit Agent 生产环境,每个模型各一周:Fable 5 在 2026 年 8 月,Fable 5.1 和 Astra 在 9 月。三个模型在生产环境中如何处理这一决策:

Fable 5Fable 5.1GPT-6 Astra
派发子智能体的轮次32%21%36%
把工作交给通用 worker 的轮次0.9%2.3%20%
回到已有子智能体的派发17%29%42%

表 1:Replit Agent 生产环境中的任务分派,各模型均为中等推理强度。

三个模型都会分派任务,但方式各不相同。在中等强度下,Fable 系列很少把工作交给通用 worker:它们派出只读的 explorer 和 reviewer,把实现留给自己。Astra 是我们见到的第一个会主动、无需提示就把工作交给通用 worker 的模型,而且一旦向某个 worker 交代过任务,它倾向于回头找同一个,而不是重新开始。这个回访率随每一代模型都在上升。

我从厂商页面添加服务时,它从来不把我带回厂商那边。能修一下吗?AgentExplorerWorker AWorker BTester

示意图:2026 年 9 月 17 日的一个生产轮次,根据 trace 绘制

图 2:2026 年 9 月 17 日的一个生产轮次,根据 trace 绘制。核心循环派出了一个 explorer、两个 worker 和一个 tester;在它的五次 worker 派发中,有三次是回到已经交代过任务的 worker。

结果

我们的运行结果是四次重复的均值;误差线为 95% 区间,即均值 ± 1.96 SE,与 DeepSWE 排行榜一致 [4]。Astra 的数据来自已发布的 mini-swe-agent 基线 [4] [9],排行榜给出区间的地方我们也给出区间。我们对比两个基线:一是 Astra 单独跑 mini-swe-agent,取各排行榜上已发布的成绩;二是 sidekick 架构,配置完全相同,只改一处:把它的子智能体原语换成一个长期存活的 worker。每张图都以得分为纵轴、每任务成本为横轴,因此最高效的配置位于左上角。我们的运行排除了三个 GPU 任务。Replit Agent 以每任务 2.53达到492.25 达到 42%,在 xhigh 下以 5.86达到601.84 达到 33%。

图表:DeepSWE v1.1 与 Terminal-Bench 4.0 上得分与单任务成本的关系

DeepSWE:得分与单任务成本

113 个任务、4 次重复的均值。GPT-6 Astra 单独运行于 mini-swe-agent,公开 v1.1 排行榜。

Terminal-Bench 4.0:得分与单任务成本

63 个任务、4 次重复的均值,不含 GPU 任务。GPT-6 Astra 单独运行于 mini-swe-agent,Artificial Analysis 排行榜。

在两个基准上,Replit Agent 都胜过 sidekick 架构,分别高出 11 分和 16 分。sidekick 成本更低,代价是让出六分之一到三分之一的得分。Astra 单独运行得分更高,靠的只是花更多钱:其最佳配置比 Replit Agent 高 2 分和 11 分,成本却是后者的两倍多。两个基线都无法在成本和得分上同时取胜。我们运行 Replit Agent 时完全采用它交付给用户的形态,未改动提示词或 harness。

harness 设计的苦涩教训

在我们看来,这些结果正是 Sutton 苦涩教训的一个实例 [6]。把人类知识硬编码进 agent,短期有效,长期停滞,最终会被随算力扩展的通用方法超越。僵化的 harness 把模型逼进一种工作方式,可组合的 harness 则让模型自己选择。模型越聪明,harness 就越不该替它做决定。

相比规定得更细的架构,这种做法带来三点好处:

  • 押注模型的 scaling law。 依赖模型自身判断力的委派,会随每一次发布而变强。下一代模型的早期预览延续了这一趋势。
  • 贴合任务。 小任务不派生任何东西,搜索派生一个 explorer,构建任务拆成互相独立的部分时派生一个团队。
  • 复用而不持久化。 子 agent 保留自己的上下文,以备模型需要取回;除非模型取回,否则什么都不持久保留。

用 Sutton 的话说,harness 应该让模型自己去发现如何执行工作,而不是规定我们会怎么做。把模型放开。

致谢

来源: Replit← 返回首页