2026 年 9 月 4 日,GitHub 放出了 Project HydraFusion 的研究预览版。它做的事情说起来很朴素:不再让你在任务开始前「选一个模型」,而是让运行时在任务进行中决定用几个模型、怎么配合。对已经习惯「写码用一个模型、评审再手动切另一个」的开发者来说,这等于把手工编排搬进了运行时。这篇教程带你把它开起来、按一套可比的测法跑一遍,并把它的路由逻辑复刻到你自己的 Agent 里。
先理解:它把模型选择变成了「工作流选择」
过去 Copilot 的自动模型选择,是给你的任务挑一个最合适的模型。HydraFusion 往前一步:它会为每个请求生成一份执行计划,按任务需要的推理、代码生成、调试、工具使用等能力信号,从多个供应商的模型里挑组合。
当前它会从三种模式里选一种:
| 模式 | 发生了什么 | 主要代价 |
|---|---|---|
| Single(单模型) | 一个模型直接解题 | 路由判断正确时开销最低 |
| Cascade(级联) | 高效模型先起草,质量闸门决定「接受」还是「升级」到更强模型 | 能省钱;一旦升级就有额外延迟 |
| Critique(互评) | 一个模型起草,另一个模型家族的只读评审员点评,起草方再做一次结构化修订 | 多一次模型调用;换来独立视角 |
注意 Critique 的评审步骤是在隔离且无工具的上下文里跑的——评审员不能改仓库,这跟「橡皮鸭调试法」是同一个思路。这点很重要:如果评审员能顺手改代码,它就会把「评审」和「动手」混在一起,你就分不清哪一版是谁写的。
Step 1:把 Copilot CLI 升到带实验特性的版本
HydraFusion 只走 Copilot CLI 的实验入口,网页版和编辑器插件里没有。先在 CLI 里更新到最新版:
# 在 GitHub Copilot CLI 会话里执行
/update # 安装最新版本
/experimental # 查看实验特性开关状态
/experimental on # 打开实验特性
/model # 在模型列表里选 HydraFusion (Research Preview)
它还是研究预览。官方明确说明:名称、参与模型、路由策略与行为都可能变。所以请不要把生产仓库当试验场,先在一条可丢弃的分支上跑。每次测试都记下 CLI 版本、选中的模式和日期,否则两周后你没法解释数据为什么不一样。
Step 2:挑一个「够大、边界清晰」的任务做基线
GitHub 给的建议很具体:先用体量足够、边界清晰、能用一段话描述完整的编码任务来试。任务太小,三种模式都会退化成 Single,你测不出差别;任务太模糊,你又分不清是路由不好还是需求没说清。
一个可用的五任务组合(每个都有客观验收标准):
1. 让一个原本失败的测试通过(有明确 pass/fail)
2. 实现一个小功能(有验收描述)
3. 升级一个依赖并修掉随之而来的编译错误
4. 按文档要求做一次小范围重构(不改变对外行为)
5. 修一个有可复现步骤的 Bug
Step 3:记录五个可比指标
HydraFusion 不是一口价,它按实际调用到的模型、按各自标准单价计费。级联和互评都可能有多条计费腿(起草、评审、修订、升级、重试、回退)。所以账单不能只看最终那个模型:
| 要记什么 | 怎么记 | 为什么重要 |
|---|---|---|
| 验收结果 | 由独立的人(或独立评审流程)检查测试与 diff | 防止「Agent 自报完成」 |
| 总模型成本 | 把每条腿的用量加总 | 不然级联和互评没法比 |
| 墙钟时间 | 从提交提示到拿到可评审补丁 | 捕捉路由与评审带来的延迟 |
| 人工介入 | 分钟数 + 你纠正了几次 | 衡量「没被消掉的工作量」 |
| 补丁范围 | 改了哪些不在需求里的文件 | 揪出「测试通过但改过头」 |
如果界面只显示最终模型或最终答案,先导出可得的用量记录再下成本结论。多腿任务的账目最容易在这里出错——你看到的那个模型,往往不是花掉大部分 token 的那个。
Step 4:读懂它为什么切到了 Cascade 或 Critique
路由本身是看不见的,但你可以从结果反推:
结果特征 大概率走了哪种模式
------------------------------------------------------------
一次成型、无额外调用、延迟低 Single
先有一段「看起来能跑」的草稿, Cascade
之后质量突然提升、总成本仍偏低
输出里能看到明显的「先评后改」痕迹、 Critique
修订只有一轮、耗时明显更长
Step 5:盯住五类已知失败模式
| 失败模式 | 表现 | 应对 |
|---|---|---|
| 过早接受 | 级联闸门放过了一份只过了浅层检查的草稿 | 把验收标准写进任务描述,别让闸门替你判断业务正确性 |
| 昂贵升级 | 便宜模型先烧了一轮 token,最后还是升级 | 统计升级率,升级率高的任务类型直接指定强模型 |
| 评审盲点 | 只读评审员看不到仓库上下文,漏掉回归 | 评审前把关键约束(接口契约、迁移红线)写进任务上下文 |
| 延迟意外 | 质量更好但串行调用把任务拖慢 | 把墙钟时间和成本一起看,别只看省钱 |
| 路由不透明 | 结果不错,但没人能说清跑了哪几条腿 | 要求导出每条腿的角色、结果、成本、延迟与诊断 |
Step 6:把路由思想复刻到你自己的 Agent
HydraFusion 背后有五条运行原则值得抄:完整记账、有界执行(每条腿有超时与取消)、隔离评审、失败不打补丁(校验失败就一个补丁都不落)、执行前校验路由(模型绑定与可用性先确认)。把这套抽象出来,骨架是这样:
def solve(task, budget):
difficulty = router.estimate(task) # 用能力信号估难度
if difficulty.low:
return cheap_model.run(task) # Single
draft = cheap_model.run(task) # Cascade 起点
if not quality_gate.pass_check(draft, task):
draft = flagship_model.run(task) # 升级
if difficulty.high: # Critique 兜底
review = critic_model.review(draft, task) # 只读,无工具
draft = writer_model.revise(draft, review) # 只允许一轮
return draft
两个必须自己设的闸门。一是质量闸门:级联模式要把「便宜模型答错」的代价压到低于升级成本,否则级联就是纯浪费。二是修订轮数上限:互评模式不加最大轮数,很容易在两个模型之间来回改到超预算。这两处没有默认值,得按你自己的任务分布调。
Step 7:设定预期——基准数据不等于你的任务
GitHub 公布的离线受控评测(对比 Claude Opus 5 单模型、中等推理强度、调优后的配置)大致是这样:
| 基准 | 估算成本 | 质量 |
|---|---|---|
| TerminalBench 2.1 | 低 67% | +4.9 个百分点 |
| DeepSWE | 低 36% | -1.5 个百分点 |
| CheckpointBench(内部基准) | 低 65% | -0.1 个百分点 |
三个前提别忽略:① 这些是固定输入、固定工具、固定限额与定价假设下的受控结果,不是「每个真实任务都会更便宜」;② 基准只代表特定任务分布,你的仓库未必在分布内;③ 成本估算用的是当前模型价,价格会变。另外,延迟没有被汇总进这张表——省钱不等于省时间。想真正下结论,只有一条路:拿你自己那批任务跑 Step 2 的对照。
常见问题速查
| 你遇到的现象 | 大概率原因 & 解决 |
|---|---|
/model 里找不到 HydraFusion | CLI 不是最新版,先 /update 再 /experimental on |
| 跑了三次都像是单模型 | 任务太小,被路由判定为 Single。换体量更大、边界更清晰的任务 |
| 成本比平时还高 | 触发了 Cascade 升级或 Critique 多腿调用,去核对每条腿的用量 |
| 质量不如预期 | 评审员缺少仓库上下文。把接口契约、迁移红线等约束写进任务描述 |
| 同样的提示两天后结果不同 | 研究预览期间策略会变。记录 CLI 版本与日期,隔一段时间重测 |