一个Coding Agent的模型调用账单,中位数从$2.88掉到$0.097,PR修复率没有变差。LangChain团队成员Sydney Runkle在开源项目Open SWE里做的这件事,关键动作不是换了更便宜的模型,而是把路由逻辑挪了个地方。

这个位置的选择,比路由策略本身更值得琢磨。

路由不放在网关层

常见的做法是在统一网关层做模型分发,请求进来,按规则丢给不同层级的模型。这套逻辑在通用API场景里跑得通,但放到Agent Harness里就有点钝。

Runkle的建议是把路由放进Harness内部。原因在于,只有Harness才知道当前这一步任务到底在干什么——是读文件、改代码,还是处理一个跨模块的复杂修复。网关层看到的是一个请求,Harness看到的是任务上下文和复杂度粒度。

感知不到粒度,分发就只能靠猜。

三档分发,顶级模型只吃一成任务

Open SWE里的做法是按任务难度划成三个等级:

  • Fast:轻量任务,用便宜快速的模型
  • Balanced:中等复杂度,走中间档
  • Performance:只有约10%的复杂任务才需要顶级模型

这个比例是整套方案的成本支点。绝大多数请求并不需要最强模型,但如果没有分级,它们会一视同仁地消耗最贵的算力。

层级之间的成本差异可以拉到30倍。把九成任务从顶级模型上挪走,账单自然就下来了。

该省的省、该花的花

实验数据给出的结论很直接:在不影响PR修复率的前提下,中位数成本从$2.88降到$0.097。

质量没有为成本让路,这是这套方案能成立的前提。如果省钱省到修复率下滑,那路由就只是把问题从账单转移到了结果上。

Runkle抛出的问题也很实在——路由为什么要建在Harness里,不能建在网关层?答案藏在上下文里:任务难度的判断依据,只有贴近执行现场的那一层才拿得到。