free-handoff:多模型 Agent 编排的成本工程free-handoff: cost engineering for multi-model agent orchestration
1 · 问题:为什么需要 harnesswhy a harness
科研项目里大量任务是等待主导的:跑 SAS/CIAO 数据归约、等光谱拟合收敛、等 Virgo 服务器上的流水线。把这类任务交给 Opus/Sonnet 级别的 agent,钱花在「模型盯着进度条」上——上下文每轮重放,cache 读写主导成本,几小时轮询下来一次任务 $10–25。
free-handoff harness 的核心思路:dispatcher(Claude 主 agent)把任务写成 brief,交给分层模型池中的执行臂;每个臂在隔离沙盒跑,产出必须带可复算的检查(runnable commands + SHA256);关键任务跑双臂对照(同一 brief、两个不同家族的模型),由 dispatcher 复核裁决。免费模型跑等待主导的活,付费模型只花在判断刀刃上。
2 · 四层模型分层与定价tiers & pricing
四层分层(2026-10-16 定稿),按「等价 API 价格」降序:
- Opus 5.5(Claude)
- gpt-6-astra
- Fable
- 仅用于 expert control 臂
- Sonnet 5.5(Claude)
- gpt-6.1-sol(OpenAI)
- 诊断、发现、设计的默认档
- gpt-6-luna(OpenAI)
- Haiku 5.5(Claude)
- 等待主导任务的主力
- Hermes(nim-large,NIM)
- codexnim(nim-stream,NIM)
- 红队、批量归约的主力
价格(USD/M tokens,2026-10-11 核对):Sonnet 5.5 input 2.00 / cache-read 0.10 / cache-write 2.50 / output 10.00;luna input 0.10 / cached 0.01 / output 0.50;Haiku ≤100K prompt 0.10/0.01/0.50,>100K 0.50/0.05/2.50;Opus 4/20。订阅付费,故 API 价仅为 yardstick。
3 · 双臂对照:成本与能力的两两对比paired arms
同一 brief、两个臂、dispatcher 独立复算——这是 free-handoff 产出可比数据的根本机制。下面是账本里最有代表性的配对(capability 0–3:3 = 首次交付即正确)。
Sonnet vs sol(normal 档内互为对照,跨厂商)
| 任务(类别) | Sonnet | sol | 结论 |
|---|---|---|---|
| XARTATOMS fit-reliability-audit(I-D2) | $13.22 / 3h45 | ≈$9.5 / 2h17 | cap 3 平手,sol 便宜 28% |
| XARTATOMS perinst-profile(I-D2 建模) | $5.52 / 92min | $1.49 / 7h19 | sol 便宜 73% 但 4.8× 慢、只交付 C-only;Sonnet 首个 C+XMM 联合剖面 |
| XARTATOMS gti-lightcurve-audit | $2.89 / 27min | ≈$1.55 / 19min | 同 cap 3;Sonnet 建议更清晰,sol 定义更严谨 |
| S2Fitting E015 velocity-field(D2) | $1.92 / 2h15 | ≈$1.37 / 46min | 数值逐位一致;sol 3× 快 |
| S2Fitting E013 velocity-gradient(D2) | $1.12 / 45min | — | Sonnet 追踪到偏置输入表(B005),luna 误归因 |
Sonnet vs 免费臂(价差最大的对照)
| 任务 | Sonnet | 免费臂 | 结论 |
|---|---|---|---|
| FXT×XMM 空场档案检索(discovery) | $7.75 / 147min | $0 / 31min(Hermes v1) | Hermes 快 4.7× 但 cap 1:只用 EPSA ⅓ 数据、wall-clock 当有效曝光、星表筛太窄。Sonnet cap 3 = 参考标准 |
| 同上(Haiku 盲测复跑) | $7.75 | $0.55 / 27min(Haiku) | Haiku 犯同样三个错误,cap 1——速度和便宜买不来发现质量 |
| DXC exam-score LMC pilot(拟合) | $6.85 / 4h | $0 / 8h(Hermes) | Hermes 8h 后 INCOMPLETE 被停;Sonnet 完成并被采用 |
| DXC pareto-policy-search(D2 设计) | $0.77 / 16min | $0 / 1h35(Hermes) | 均 cap 3;Hermes 6× 慢但免费 |
Sonnet vs luna(normal vs cheap)
| 任务 | Sonnet | luna | 结论 |
|---|---|---|---|
| E013 toy 前向模型 + 1536 拟合 | $1.12 / 45min | $0.60 / 2h15 | 同核数值;Sonnet 诊断更深(找到输入伪迹根因) |
| thinking pilot1 盲审 + 抗压测试 | $0.24 | $0.07(luna)/ $0.04(codexnim 价) | Sonnet 唯一 4 rungs 不让步;luna 被一句无据断言说服、codexnim 被不可验证数字说服 |
Sonnet vs Opus(normal vs expert)
| 任务 | Sonnet | Opus | 结论 |
|---|---|---|---|
| XARTATOMS stage5 D55 决定性检验 | $15.35 / 4h | ~64min | 同判 AMBIGUOUS;Opus 修正 MD(>0.50 而非 0.43),找到 2 处 Sonnet 漏掉的措辞缺陷 → expert margin ≈ 1 分 |
| S2Fitting E018a xdsp-closure(expert control) | — | $2.54 / 46min(Opus)vs sol $0.18 | Opus 找到 brief 帧错误并分解 offset;专家档只在诊断深度有 1 分优势 |
免费/廉价臂之间的对比(Hermes vs codexnim vs luna vs Haiku vs opencode)
这才是 harness 的主力战场——免费臂承担了绝大多数运行。以下配对全部来自同 brief 双臂/三臂运行:
| 配对 | 任务 | A 臂 | B 臂 | 结论 |
|---|---|---|---|---|
| Hermes vs codexnim | 红队(多检查点) | codexnim 1.6–3h 出完整报告 | Hermes 9.7h / 2 会话未写出报告 | codexnim 胜:Hermes 内容好但不增量写报告(2.8M ctx);红队首选 codexnim |
| SAS 链(CDFS/Lockman) | codexnim 11h17 / 3h40,遇 brief 缺陷正确 BLOCKED | Hermes 8h57 / 2h50,自造 CPU gate 卡死 | 共享 ObsID 上产品等价(emchain 随机差);codexnim 判断力更强(Hermes 为自己的挡板编造科学理由) | |
| line-stack 三方(sol/Hermes/codexnim,~13.5k 拟合) | sol ~43min | Hermes ~60min;codexnim ~1h40 | 7164 行全部逐位一致——确定性固定配方任务,第三臂不增加信息;sol 报告最丰富 | |
| luna vs sol | 8h load-gated SAS(E019c PKS 2155) | luna $1.68 | sol $20.74 | 12× 价差,δ 逐带一致——等待阶段 token 按各自档位计价 |
| exam v4 拟合(perobs-fit3) | luna cap 3 / $0.86 | sol cap 3 / $3.78 | verdict 一致、gap 0;sol 自加分组边界(超出 brief)——配对本身发现了 grouping systematic | |
| mosaic-wcdfs(R6) | luna cap 2:把偏置估计读成检出 | sol cap 3:null 模拟抓到 +4%/arcmin 偏置 | gap 实例:解释型图像统计 → 路由到 normal;I-D1 cheap:normal 收紧到 3:1 | |
| codexnim vs luna | line-blevel(E011,~115k 拟合) | luna 1h38,全对 | codexnim 1h48,聚合步 bootstrap 错(权重重采样、值没采) | per-obs 行级等价;luna 胜在聚合统计;codexnim 28s 修复后边界情形仍存 |
| exam-v4-lrt(R3c) | luna 5.75h / $1.95 | codexnim 11.8h / $0(luna-eq $1.47) | 数值全同;codexnim 2× 慢但诊断更多(全局最小检查、bound-aware dof) | |
| Haiku vs sol/luna | E016 双组件速度模型 | Haiku cap 3,全对最佳诊断(自加控制证明残差来自 knot 内梯度) | sol 同对但没做这个控制 | Haiku 反超 normal 档——固定配方上 cheap 可赢;代价:早交卷 2 次需 SendMessage 拉回 |
| 13′ SB 诊断(XARTATOMS) | Haiku cap 1(把 per-arcmin² 通量读成总通量) | sol cap 3(读 producer 代码找到单位错误) | gap 2 分——诊断类从 cheap 收窄到 2:1;brief 加规则"引用 producer 行并说明单位" | |
| opencode(免费 Zen)vs luna | R10 spscale | luna 0.4h / $0.18,唯一完整验证结果 | muse 1.0h 同 verdict;longcat 2.9h 卡死无交付 | 免费 Zen 可用但不稳定:muse≈luna,longcat 首例 stall(180k ctx 后静默) |
| R12 qpb-theta | luna <0.8h | deepseek-v4.1-flash <0.8h,q 与 luna 误差内一致 | 首个匹配付费臂数字的 opencode 臂,还比所有免费 NIM 臂快;glm-5.3-flash 参数化不可比但 verdict 相同 | |
| R16 common-ccd | codexnim + mimo 臂在跑 | big-pickle 2.4h,4/4 CSV 与 sol 字节一致 | opencode 臂复现 sol/pairs.csv 精确,抓到亮场非保守方差界 | |
红队家族对比(免费臂的核心价值场景)
standing red teams 是免费臂最高产的用途。账本记录了 60+ 个红队运行的分诊统计:
| 红队臂 | 典型时长 | material 发现 | false alarm | 行为特征 |
|---|---|---|---|---|
| codexnim | 0.4–3.6h | 1–5 / 报告 | ≈0 | 增量写报告、命令可复算、自撤错误反对意见(RT-05 一次撤 3 条);≥200k ctx 静默卡死是主要风险 |
| Hermes | 1.2–9.7h | 1–5 / 报告 | 偶发(1 例把重建当精确) | 内容深度常胜(RT-06 解开一周未解问题),但大 ctx 不写报告、会话被假 "[Request interrupted]" 文本终止(F011/F014 家族) |
| luna(对照臂) | 0.25–2.8h | 2–3 / 报告 | 0 | 快、web 强(找到 codexnim 漏的 Nevalainen+2005);盲审可发现缺陷但抗压弱(被一句无据断言说服) |
红队等待时间不计费(PI 规则);成本只计 dispatcher 分诊时间。分诊口径:material / minor / false alarm / duplicate,每条由 Claude 复算。
4 · 成本控制成果:数字说话results
核心成果:把等待主导的工作(SAS 归约、批量拟合、长轮询)从 normal/expert 档移到 free/cheap 档,同等 capability 下成本降 10–100×。判断密集的工作保留 normal 档,expert 档只在 control 臂出现(每 5 个 normal 任务一次,比值自适应 3:1→7:1)。
5 · 路由经验:什么任务给谁routing
账本用几百条运行记录回答「什么任务给谁」。截至 2026-10-17 的结论:
| 任务类别 | 路由 | 证据要点 |
|---|---|---|
| 发现 / 档案检索(open-ended search) | Sonnet 起步,或带 Sonnet 的双臂 | 免费臂单独不可用(三个系统性错误在 Hermes/Haiku 上重复);Haiku 与 Hermes v1 犯同样的错 |
| 多小时 SAS / 响应链(等待主导) | codexnim / luna | codexnim 可靠且免费:遇 provenance mismatch 会停下而不是即兴发挥;luna 同结果 8–12× 便宜 |
| well-specified 数值/拟合(固定配方) | sol / luna / Haiku | 四臂数值逐位一致(E010/E011);「配方+brief」决定 cap 3,模型档位不决定 |
| 诊断 / 建模比较(判断密集) | sol 或 Sonnet | sol ≈ 半价 Sonnet;E013 中 Sonnet 追踪到偏置输入表而 luna 误归因 |
| web / 文献检索 | cheap 或更高(PI 规则) | luna 14min/26 refs 找到 codexnim 2h31 漏掉的关键文献(Nevalainen+2005);免费臂 web 弱 |
| 红队 / 对抗审查 | codexnim 优先(免费) | Hermes 红队内容好但不增量写报告(9.7h 无报告两例);codexnim 45min–3h 出完整报告 |
| 静态页面 / 机械配方 | Hermes(免费) | CF Pages 发布连续 cap 3;6–8 分钟完成 |
6 · 防翻车机制:从失败中学guardrails
账本的 Routing notes 部分按时间累积了 60+ 条教训。挑机制性的说:
成本侧
规则 1 等待主导的长任务:brief 里写明「launch-and-exit」——执行臂起后台 worker、写报告骨架、退出;
watcher(或 heartbeat)稍后唤醒它写报告。避免满上下文轮询。
规则 2 贵臂的 stage-2 不要 resume 长线程:每轮重放全部上下文。sol 的 stage-2 resume 花了 $26.08
(178M input)。用「新会话 + 紧凑 hand-off」替代,除非真依赖 in-context 状态。
规则 3 quota gate 先行:quota-gate claude/codex 不通过就不派单;5h 窗口已重置的按满算(--rolled-5h-ok),
但 live 5h < 30% 仍然 NO-GO——否则会把跑着的 subagent 切断。
规则 4 永远不用 Agent 工具打印的 token 总数计价(235,146 这种)——它不是计费量度;
用 cost.py 从 transcript 事件流精确重算。
质量侧
规则 5 双臂 brief 必须用文字写明「不许打开另一臂的 REPORT / out_* 文件」——否则第二臂读了第一臂的报告,
其一致性就是抄的,该运行不可计分。
规则 6 每个 brief 给 CPU gate 的精确代码片段(busy = Δ(total−idle−iowait)/Δtotal),
别让执行臂自己写——两次自写 gate 都把 idle 当 busy,白等 1.5h。
规则 7 brief 缺陷主导错误:三分之二的执行臂「错误」其实是 dispatcher 的 brief 写错了。
派单前在 repo 上验证 brief 的路径、目标存在性、命名规则。
规则 8 Hermes 非交互运行三条禁令:不许起后台任务后结束回合;不许问「要不要写报告」;
同一失败调用不许重复(实测重复 283 次)。
规则 9 codexnim ≥200k 上下文静默卡死:不要 resume ≥200k 线程,新开会话 + 短续命提示。
规则 10 数值拟合 brief 必须 OMP/OPENBLAS/MKL_NUM_THREADS=1 per worker——BLAS 多线程一次把
32 核机器拉到 load 65。
7 · 可复用的机制清单reusable mechanisms
如果只带走五件事:
- 分层 + 对照:四层模型池;免费臂跑量,normal 档按比值出 control 臂(3:1–7:1 自适应),expert 档每 5 个 normal 出一次。所有对照同 brief、dispatcher 独立复算。
- 成本账本:每条运行记录 wall time、tokens、API 等价成本、capability 0–3、错误数、纠正数、是否被采用。数据积累一周就能回答「什么任务给谁」。
- capability 评分而非体感:0 不可用 / 1 需重做 / 2 纠正后正确 / 3 首次交付即正确,以 dispatcher 独立复算为参考标准。
- brief 即合同:路径、验收检查、资源上限、禁令全部写死;执行臂不许静默替换、不许越界写文件、产出必须可复算(命令 + SHA256)。
- 失败进账本:每次翻车写成 dated 规则,下个 brief 引用。红队常驻(每项目 ≥2 个免费红队),发现的问题按 material/minor/false alarm 分诊并复算。