Control the Harness, Control the Cost:企业 coding-agent 路由与治理

发布于 2026年9月27日 作者 Remy

企业 coding agent 的账单,谈判桌上通常先对着价目表吵:哪一档模型贵、合同折扣多少、月活席位怎么算。Accenture Responsible AI 的 Abbasi、Aqrawi、Kwartler 在 arXiv:2609.28919(预印本标注 2026-09-24;HTML)把责任挪了一层:价目表只列出费率;真正决定「按哪一档费率买多少 token」的,是 harness——选哪个模型、读什么上下文、怎么用 prompt cache、子代理默认跟谁。 企业买来 Claude Code、Codex 一类产品却停在厂商默认上,等于把账单和治理都交给了默认配置。[1]

论文在仿真的 10,000 席企业上给出区间:按 Anthropic 2026-09-21 公开价目表,缓存安全路由收回约 14–21% 模型花费,约合 $3.3M–$5.0M/年(as-is 约 $23.7M/年)。摘要与正文结果一致;下文数字都标出处与条件,不外推合同折扣。[1]

站内已经写过 扩张 harness 而不是堆上下文、ECC 外围操作系统、Strands 生产运行时、Jev 接到 Claude Code。那些文分别谈「控制长进代码」「外围配置面」「SDK 层循环」「Jev 当决策头」。本篇换到 路由与成本治理:Jev 仍是分类器,但问题是 cache 边界上怎么搬任务、企业如何从观测爬到控制面主权。注意:站内 Jev 当 Rubric 评委 谈的是评价侧相关误差与 cascade,不是本篇的会话路由;对照时别混。OpenSpec / SpecHarness 那条线是「规格控笔」;本篇是「harness 控钱」——一句就够。[2]

账单归因错位:价目表吵完,默认仍在烧钱

Harness 在循环里替用户跟模型说话:用户一句话开启一轮 turn;模型可调工具;harness 执行并把结果塞回;再请求。一轮带 (k) 次工具步的 turn,是 (k{+}1) 次 API 请求,每次都带上截至目前的整段对话。 十八步工具的 turn 会把同一段上下文再送十九次。厂商对「与近期同模型请求共享精确前缀」的输入打折——prompt cache——但缓存绑在单一模型上:换模型等于整段冷写。企业若只谈单价、不谈「谁在选模型、谁在管理缓存 TTL、子代理是否继承父模型」,账单会在默认里长大。[1]

论文把买第三方 harness 转嫁给企业的风险压成四条(§3,对照二十款 harness 的耦合矩阵 Table 8):

  1. 耦合:绑死一家模型价目与限额;Claude Code 文档写明经网关走非 Claude 模型不受支持。
  2. 不可审计:闭源 harness 无法核对发送内容、版本间 prompt 变化、重试与子代理行为。
  3. 控制面不随身:MCP / AGENTS.md / Agent Skills 可跨产品搬运,模型策略、遥测语义、子代理与计费不可搬运。
  4. 技能放大:同一 harness 上新手验证成功约一半、更多会话直接放弃;静态仓库说明文件补不齐,harness 配置却能零边际成本覆盖所有人。

四条都落在「用户与模型厂商之间那一层」。成本只是最先能标价的那一条。

再摊开一点。耦合不是二元开关:Kiro 一类几乎只认自家云;Claude Code 可在前面挂网关,但文档仍限定在 Claude 家族;Codex、OpenCode、Goose、Cline、多数中国厂商开源 harness(Qwen Code、DeepSeek Harness、Kimi Code 等)则接受企业自有或第三方 endpoint——模型耦合是各厂商的设计选择,不是「agent 产品」的必然属性(§2.2 / Table 8)。不可审计与耦合叠加:账单由闭源循环写成时,采购连「缓存标记有没有被剥掉」都难核。控制面分裂的日常形态是:工程用 A、咨询用 B,两套 skill、两套 MCP、两套策略,遥测对不上——可搬运的是连接器与说明格式,不可搬运的是模型策略与计费语义。技能差距则直接进单位成本:Anthropic 对约 40 万会话的分析里,新手验证成功约 15%、放弃约 19%,中高阶约 28–33% / 5–7%;同一花费买到的核实成功大约差一半。论文的结论很硬:培训随人头扩,harness 配置边际成本为零。[1]

Harness 默认如何烧钱:turn、缓存、交叉定价

该定价的是 turn,不是单次 request

聊天路由器常按「每条请求估难度再选模型」设计,并默认每次放置几乎免费。Agent harness 里不是:请求带着已缓存的对话。把对话前缀记为 (C)、本 turn 新增 (D)、工具步 (k),热缓存下大约读取 ((k{+}1)C + Dk/2)、写入约 (D)。把 turn 挪到另一模型,读变冷写并付写入溢价;用户若回到原模型,再付一次冷写。中途切换必须赚回缓存写入。[1]

论文从价目表推出回本请求数(§4.2 式 (1))。在 Anthropic 2026-09-21 表上:Fable 5.1→Sonnet 5,带回程约 291 次请求、不回程约 46;Opus 5→Sonnet 5 约 27 与 8。天真的「每请求换模型」在仿真里一旦计入误路由纠错链,往往比钉死更贵;GitHub Copilot 文档也写过沿缓存自然边界路由、中途切换曾抬高成本。[1]

长会话上,价目表最高档可能更便宜

长 agentic 会话由缓存读主导,而缓存读按模型计价。同一表上 Fable 5.1 缓存读约 $0.25/百万 token,Opus 5 约 $0.50,尽管 Fable 输入/输出单价是 Opus 的两倍。十八工具步/turn 时,上下文超过约 65k token,Fable 单 turn 可比 Opus 更便宜;六步时约 211k(Table 2)。用「标价高低」排序的路由器会在长会话上判反。[1]

对 TraceLab、SWE-chat 约 一万条真实 Claude Code 会话按 token 重定价:在 Opus 上花费 ≥$100 的长会话里,51%(TraceLab)/ 80%(SWE-chat) 在 Fable 上更便宜;头部 1% 会话承载约 31–53% 花费。案例研究里,约四分之三的节约来自这一交叉(crossover)——不是「凡事都降到小模型」。[1]

停顿与五分钟缓存

API 侧缓存寿命常见 五分钟。两份公开语料里,17–27% 用户 turn 跟在超过五分钟的停顿后,等于整段对话再付一遍(常按更高写入价)。无此类停顿时节约可到约 24%;停顿偏多(TraceLab)时约 7%;把缓存寿命调到 一小时,相对今日账单约再抬三点到约 17%(Table 4)。分类器再准,也挡不住过期缓存把每次回来变成全量冷写。[1]

还有一个容易被价目表掩盖的旋钮:reasoning effort(推理力度)。有界任务上降力度常省钱(Anthropic 公开知识工作跑分里,medium 可在约 70–87% 成本上贴近默认准确率);长程多步任务上方向可能反过来——更高力度若减少总调用次数,总成本可能更低。分类法的复杂度与输出形态轴正好描述任务形状,因此 effort 是同一分类器的自然第二输出;但多数模型上每个 effort 档自带缓存,中途改力度会像换模型一样作废缓存。路由应落在 turn 边界。案例研究主结果不依赖 effort 路由,它属于论文标明「仿真外杠杆」的一项(§4.7 / §8)。[1]

冷返回时的处置也有价差。对过期后仍要接上的 300k 上下文、一万次返回(Opus、五分钟缓存假设):整段重发约 $18,750;先剪到 30k 约 $1,875(−90%);用 Opus 自己摘要反而可能比重发更贵;用 Sonnet 摘要约能砍半(Table 6)。角色不同策略不同——聊天型工作宜每次冷返回就剪/便宜摘要并按交付物新开会话;工程宜任务内保留推理、大批清陈旧工具结果、在任务边界 compact。组织托管设置应压过个人默认。[1]

方法:缓存安全路由 + Jev 标定概率 + 只在确定时搬

三条执行缝,不碰正在跑的对话

算术推出一组规则(§4.4),核心是:只在不必重建运行中对话缓存的地方搬工作。

  • 会话起点:会话还小时选定模型,绝不中途改写主会话模型。
  • 侧道(side lane):小而有界的请求开独立会话,用精简 project ledger 播种,而不是整段 transcript;返回后用一次空请求刷新主会话缓存,结果以附注追加,不改历史。
  • 子代理启动时:子代理是新会话,选模型在缓存意义上几乎免费;短会话写多读少,正是顶档模型最贵的形状。二十款里至少七款文档写明子代理默认继承父模型——Claude Code 可用 pre-tool hook 在启动前改 launch 参数(含模型)。[1]

工作例:805k token 会话里改一行,原地 Fable 约 $0.88,ledger 侧道 + Sonnet 约 $0.36(含 ledger 与主缓存刷新)。五个典型子代理继承 Fable 约 $4.88,启动时改到 Sonnet 约 $1.27。[1]

另有硬规则:绝不把纠错 turn 降到低于被纠错那一轮的档位(R10)。纠错在账单里超过三分之一;给过弱模型会再触发纠错链。[1]

Bring-your-own 分类法,Jev 在半秒内打标

路由需要标签。论文用可自带的四轴分类法(Appendix A):动作(13 类,从 lookup 到 build/steer)、领域(12)、复杂度序数(trivial→expert)、上下文依赖(none→history),外加 stakes / 输出形态修饰。领域设治理地板(legal/finance/HR 与 agentic edit 不低于中档);故意没有生产力轴——按人监控在欧盟 AI Act / 德国共决下风险高,遥测只报聚合。[1]

分类器是 TypeSafe 的 Jev(System One):对有限选项返回标定概率,不做自由文本生成;厂商称端到端约 70–500ms。策略只在「所需档位 ≤ 候选」与「不依赖历史」两个概率都过阈值(案例基线 0.8)时才搬;否则 hold——牺牲节省,不拿质量赌。作者测得动作/领域/复杂度/历史准确率约 74% / 80% / 63% / 82%;已搬 turn 中假降档约 12.5%;可路由 turn 中 hold 约 42%。复杂度轴最糊,hold 多半出在这儿——修的是分类法定义与阈值,不是换一个更大的聊天模型当路由器。[1]

接口刻意 classifier-agnostic:自托管 encoder、Arch-Router 一类专用路由模型也能接;Jev 权重未开源、不提供自托管,受限环境走自托管回退。站内 Jev×Claude Code 写过「别把 Jev 当聊天 base URL」;本篇是同一约束在企业网关上的用法:Jev 只打标,生成仍在会话模型上。[3]

路由器在论文里拆成八个组件(§4.8):(1) 执法点——网关 + harness hooks;(2) 分类器适配器;(3) 自带分类法与策略(档位、地板、阈值、各执行模式开关);(4) 会话状态(上下文大小、缓存年龄、任务是否未结、ledger 构建);(5) 执行模式——会话起点、detached 单次调用、ledger 侧道、子代理启动路由、以及评估门后的 ledger rebase;(6) 反事实会计——相对「钉死」的差额,按单位聚合、不按人;(7) 透明与覆盖——用户看见用了哪档并可 pin;(8) 治理地板——领域/数据类地板、stakes 天花板、无生产力轴。原型实现了 2–6 与 8,外加 7 的覆盖规则;1 与 7 的用户可见面是规格、案例未挂真 harness。读论文时别把「仿真节约」误读成「网关已上线」。[1]

仿真:有标签剧本 × 真实行为扰动 × 人口缩放

企业在有遥测之前就要估「我们这种规模省多少」。方法(§4.9):46 段对话、109 轮作者剧本、11 类岗位;每段扩成 200 个蒙特卡洛变体,扰动来自 TraceLab / SWE-chat 约一万真实会话(纠错链、停顿、子代理率、turn 长度);活体分类器打标;缓存精确模拟器按价目与缓存规则计价;误路由按真实纠错链计费。缩放到 14 个人口段、平均每席约 30 会话/月;工程师 as-is 约 $40/活跃日(介于 TraceLab 重度用户中位数 $15 与均值 $58 之间)。这是仿真,不是 Accenture 内部账单——论文免责声明写得很清楚。[1]

数字与边界:14–21% 从哪来、何时塌掉

基线结果

量值(论文 Table 3 / §5)
As-is$1.97M/月,$23.7M/年(10k 席)
今日标签路由$1.70M/月(−13.8%)
完美标签上界$1.56M/月(−21.1%)
年节约区间$3.3M–$5.0M

工程段约占账单 86%,节约约 13–14%;非工程小账单节约 6–35%。节约结构(今日标签、月度):交叉选会话模型约 $211k,侧道约 $64k,子代理启动路由约 $32k,会话起点定档约 $28k,减去误路由纠错约 $51k 与路由开销约 $18k(分类器本身约 $179/月)。Fable 占到约 86% 路由后模型花费,却只启动约五分之一会话——钱在长构建上。[1]

敏感度:最能动刀子的旋钮

Table 4 一次只动一个假设时:

  • 无 Fable 许可(封顶 Opus):节约掉到约 2.3%——交叉杠杆没了。
  • 统一 0.1× 缓存读(抹掉 Fable 折扣):约 5%。
  • 停顿:见上,24% ↔ 7%。
  • Agentic 强度 ×0.5 / ×2:约 1.6% / 24%——工具越重、缓存越暖,路由器越赚。
  • 阈值 0.7 / 0.9:约 9.8% / 14.2%;降阈值多搬但假降档纠错会把增益冲掉。基线保留 0.8,避免在测试集上调参。

跨厂商(§5.5):在接受企业自有 endpoint 的 harness 上,对同一批真实会话重定价,有缓存折扣的强模型约合 Opus 的 0.12–0.80×(论文举例含 DeepSeek V4 Pro 峰值约 0.12–0.14、Kimi K2.6 约 0.25–0.27、Gemini 3.1 Pro 约 0.39–0.64、GPT-5.6 Sol 约 0.80 等,均为 2026-09-23 前后列表价重定价);Claude Code 只能在 Claude 家族内路由。他厂只接走路由器本就会下沉的轻活,最多再抬约 2.3 个百分点;若强模型在会话起点接走复杂活,且有缓存定价,相对 14% 基线可再加约 10–55 点——前提仍是同等质量与同等 token。数字假设「同等质量、同等 token、会话内无跨厂商缓存事件、数据条款允许该路由」——是天花板,不是采购承诺。[1]

规模上,美元随席位近似线性:同一人口结构到 50,000 席、今日标签约 $16.4M/年节约;把工程师里 power 用户占比从 15% 提到 45%,账单与节约美元一起涨,百分比可仍停在约 13.8%(§5.1)。小组织要单独算:节约随席位涨,造路由器的工程成本不随席位线性降——论文承认小团队可能划不来,并预期会出现无需自建的标准路由器。[1]

必须写进决策备忘的局限(§8)

  • 剧本合成、标签作者自标;复杂度轴尚在打磨,无互评一致性。
  • 工程场景偏重长会话、缓存命中偏高,有利于交叉;按 TraceLab 形状粗估,14% 可能落到约 8%。
  • $40/活跃日高于厂商公开均值约 $13;按 $13 计年账单约 $10M、节约约 $1.3–2.1M,百分比大体仍在。
  • 列表价、无合同折扣;价格结构一变,百分比会动——可迁移的是用自家会话按当日价重算的方法。
  • 决策引擎与模拟器已实现;网关/hook 执法点与用户可见路由规格有、未建成——案例跑在模拟器里。
  • 完美标签 21% 是上界:真实能力是概率,不是阶跃。

企业可落地的主权阶梯:从观测到是否自建

论文 Table 7 把选项排成阶梯。可复用清单如下——按「本季度能动手」到「一两年产品决策」排序。

第 0 档:厂商默认

什么都不跑。继承 §3 全部风险与最高账单。多数试点停在这儿。

第 1 档:Configured(先配齐短包)

不换产品,先发一份短配置包(§6.1 十条,按回报排序):

  1. 模型策略:会话起点规则、子代理默认、领域/数据地板、用户 pin。
  2. Skills 当流程:部署/评审/命名/数据规则按需加载(Agent Skills 格式可只把描述留在上下文)。
  3. 按角色裁剪的 MCP,宁少勿多。
  4. Hooks:完成前测试与评审、网关缓存标记检查、子代理启动规则。
  5. 权限与数据类:哪些工具可无人值守、哪类数据永不进哪类模型。
  6. 各职能自标的路由分类法与阈值。
  7. 侧道/子代理用的 project ledger 格式。
  8. 遥测导出与仅聚合报表(对接反事实会计)。
  9. 短指令文件:流程与约束,不塞仓库说明书。
  10. 按角色的上下文默认:何时清旧推理与工具结果、何时 compact、何时新开会话。

作者实测过「加电用户」前缀约 55k token(系统提示 + 工具/MCP schema + skill 描述 + 社区插件自定义 agent 等),相对精简 15k 默认,十 turn×十八工具步会话可贵约 三到四倍;若把本可延迟加载的约 104k 工具 schema 提前灌入,可贵十倍以上(Table 5)。延迟加载本身就是成本旋钮。[1]

第 2 档:Controlled(控制面,本季度)

在每个 harness 与模型 endpoint 之间放网关:验证原样转发 cache marker / beta header——剥掉就等于每 turn 全量未缓存输入。会话起点路由;子代理今日舰队默认、明日按启动路由;开启一小时缓存(相对五分钟 API 默认,常是最便宜的默认变更);各职能两小时打标工作坊;遥测只聚合。论文称此档对应案例研究的 14–21% 量级——仍受上文敏感度约束。代价:小平台团队、分类器托管、策略的法律/共决审查。[1]

策略上刻意不对称:错误搬动伤质量与返工,hold 只伤钱。今日标签与完美标签之间约 $144k/月差额里,约三分之二是 hold(多半是本可以更便宜起点的会话),约三分之一是误路由纠错链。把阈值从 0.8 降到 0.5 会多搬约 46% turn,其中约五分之一假降档,纠错链会把增益冲掉,总节约反而掉到约 10%。「搬得越多越好」在这份语料上不成立。[1]

问厂商的七个问题(§6.2)值得钉进采购清单:网关是否转发缓存标记?能否打到企业自有 endpoint?能否强制子代理模型?是否按类型导出 token 遥测?各模型数据留存?能否钉版本并读 prompt?指令/Skill/连接器是否开放格式?

指标改成:经核实任务的单位成本及其在团队/配置间的分布(聚合),不是每人 token。[1]

第 3 档:Owned(是否自建 harness)

在 vendor SDK 或开源底座上做内部 harness:可插拔模型、原生侧道、全员一份包、可接他厂强模型。适合:监管工作负载对不上任何厂商留存条款、要上自有模型、或体量让产品团队比依赖便宜。不适合当默认——厂商周更,开源底座把依赖挪到维护者。先用第 2 档跑出数字,再有意决定,而不是默认「我们该自建」。[1]

站内对照一句:SpecHarness / 规格控笔 回答「什么叫做完」;本篇阶梯回答「谁决定费率与 token 量」。两条控制面互补,不要互相替代。

站内对照:同一条 harness 主线,不同旋钮

站内文旋钮与本篇关系
Grow the Harness把重复控制长成代码本篇不谈增长程序,谈已有产品上的费率与缓存边界
ECCSkills/Hooks/Memory/安全外围配置包(第 1 档)可直接对照 ECC 的外围操作系统
Strands生产运行时与 SDK 层第 3 档「自建」时的底座选项之一,不是本篇仿真对象
Jev×Claude CodeJev 当决策头接入本篇把同一决策头接到企业网关路由策略
Jev Rubric Judges评价侧便宜与相关误差角度不同:那是评委 cascade;这是会话/子代理成本路由
JevOut(可选)短上下文可翻转判决提醒:路由分类器也吃上下文形态,阈值与 hold 不是装饰
SpecHarness规格握笔规格控完成定义;harness 控钱与模型可达性

结语

企业 AI 账单有两个定价点:模型价目表,以及 harness。只谈判前者,等于把后者——连同大部分体积——留给厂商默认。Accenture 这篇工作把 harness 内路由还原成缓存算术:中途切换要回本;长工具会话上顶档可能因更便宜的缓存读而更省;停顿与 TTL 和分类器一样能动节约;纠错账单大,所以只在标定概率够高时搬,且永不降档纠错。仿真万席、公开价下的 14–21% 是带条件的区间,不是采购口号;交叉没了、停顿很多、或会话偏短时,数字会塌。

可带走的动作顺序很短:先量聚合 token 与会话形状 → 配短包与一小时缓存 → 网关 + 会话起点/子代理启动路由 + 自带分类法 → 用反事实会计看「钉死 vs 路由」→ 再决定要不要爬到 Owned。控制 harness,才谈得上控制成本;控制面可以先从内部长出来,不必一上来自建整个产品。

参考文献

[1] Arian Abbasi, Alan Aqrawi, Ted Kwartler. Control the Harness, Control the Cost: Routing and Governing AI Coding Agents in the Enterprise. arXiv:2609.28919, 2026-09-24. abs · html. 文中花费、人口与节约来自公开列表价、公开会话语料、作者自有会话与仿真企业;不代表 Accenture 内部数字(论文 Disclaimer)。

[2] 站内对照:/cn/blog/grow-the-harness-not-the-context/、/cn/blog/ecc-agent-harness-optimization/、/cn/blog/strands-harness-sdk-production-agent-runtime/、/cn/blog/jev-claude-code-10x-and-25-lines/、/cn/blog/jev-rubric-judges-cheaper-faster-correlated-errors/、/cn/blog/specharness-spec-holds-the-pen/。

[3] TypeSafe AI. Introducing System One Models and Jev(论文 [39]);站内接入说明见 jev-claude-code-10x-and-25-lines。