Fusion — 多模型面板

不同的前沿模型有着各自不同的失败方式。一个模型漏掉了另一个模型能捕捉到的边缘情况;一个模型会臆造出另外三个模型拒绝虚构的 API。Fusion 把这种多样性变成了一项功能:启用后,你的 Claude Code 会话提出的每个问题都会由多个模型同时回答,一个评判器模型梳理各份草稿在何处一致、冲突以及各自的亮点,然后将一份基于该分析的综合答案交付回 Claude Code,仿佛出自单个模型之手。代理永远不会知道曾召集过一个面板。

Fusion 完全运行在宿主机侧的代理服务器中(参见核心概念),因此虚拟机内部毫无变化:没有代理标志,没有包装脚本,也没有代理可以据以反应的可见延迟来源。它在Fusion设置窗格中按工作区配置,并通过会话标题栏中的闪电按钮 (⚡) 按会话启用。

注意: Fusion 在 UI 中标注为 BETA。它是一个可用的原型:机制是稳定的,但评判器提示、供应商后端和失败处理仍在演进中。在依赖它之前,请参阅 Beta 限制

Fusion 的工作原理

Fusion 拦截 Claude Code 会话发往 Anthropic /v1/messages 端点的流量。每个请求分阶段处理:

  1. A 支 — Claude 首先回答。 客户机的原始请求原封不动地发送给 Anthropic(强制为非流式,以便可以检查完整回复)。你的 Claude Code 会话始终是 fuse 的一
  2. 工具轮次直接通过。 如果 Claude 的回复是一次工具调用——这是代理式编程中的常见情况,其中大多数轮次是"读取此文件""运行此命令"——它会原样转发给代理,并跳过该轮次的 fusion。代理循环永远不会被一次综合出的工具调用打断。
  3. 文本轮次分发。 只有当 Claude 返回纯文本答案时,Fusion 才会启用。每个其他已选供应商——Codex (OpenAI)、Grok (xAI),以及可选的一个本地设备端模型——都会就同一份扁平化后的对话记录被问及同一个问题。
  4. 评判器梳理全局。 评判器模型比较所有草稿,并发出一份结构化的 JSON 分析——共识、冲突、独到见解、盲点以及一个裁定——而不是散文式的评论。
  5. 评判器进行综合。 随后,同一个评判器模型基于它刚刚产生的分析,写出确定性的答案。
  6. 交付。 综合后的答案以它所请求的确切传输形态(Anthropic SSE 或 JSON)流式返回给虚拟机内的代理。从 Claude Code 的视角看,是单个模型作了回答。

任何阶段的失败都会优雅降级,而不是中断会话:某支的凭据无法解析,或者报错、超时,就会被静默地从 fuse 中剔除。如果存活的答案少于两个,则原封不动地返回 Claude 自己的答案。

工具轮次与文本轮次

工具轮次/文本轮次的区分正是让 Fusion 对代理式工作安全的关键。动作(工具调用)完全按照 Claude 发出的方式执行;只有答案——解释、设计、评审、计划——才会被融合。在典型的编程会话中,大多数轮次是动作,因此 Fusion 的影响集中在模型多样性最为重要的地方:推理与结论,而不是机械的文件编辑。

每一支的身份来自何处

Fusion 没有自己的凭据 UI。每一支都解析工作区的 Agents 标签页已经为该供应商持有的凭据:

  • 订阅模式——该支使用来自宿主机订阅存储的实时 OAuth 令牌;宿主机按需刷新它。Claude 订阅令牌会自动获得 Anthropic 所要求的 Claude Code 身份系统块和 OAuth beta 头。
  • API 令牌模式——该支使用来自宿主机侧令牌替换映射的真实 API 密钥(客户机只见过一个诱饵;参见凭据)。
  • 本地模型——该支以其内部密钥指向宿主机上的推理引擎(参见本地与混合推理)。
  • Bedrock (AWS)——处于 Bedrock 模式的 Claude 代理仅通过客户机自身的请求作出贡献;没有单独的 Bedrock fusion 支。

凭据无法解析的支会随一行日志被剔除,绝不会向代理抛出错误。

系统要求

Fusion 需要至少两个可用模型

  • 只要 Claude Code 代理拥有可用凭据,你的 Claude Code 会话就始终算作一支。
  • 每个额外的云端支——Codex (OpenAI)Grok (xAI)——都需要在工作区的代理标签页中配置其凭据。在此之前,它在 Fusion 窗格中的行会呈灰色,并附有提示*— no cloud credential (configure it in Agents)*。
  • 本地模型支需要在本地模型窗格中至少下载一个模型。在此之前,它的行显示*— download one in Local Models*。

当选中的可用模型少于两个时,窗格会显示帮助文本*"Pick at least two models to fuse — your Claude Code session counts as one, so add one more (a cloud agent or a local model)."*,并且会话闪电按钮保持禁用。

为工作区配置 Fusion

Fusion 在编辑工作区窗口的Fusion窗格中配置(侧栏中标注 BETA 的黄色闪电图标)。逐字段的参考说明位于 Fusion 设置;本节讲解工作流程。

编辑工作区窗口的 Fusion 窗格,显示 BETA 徽章、所有行因缺少凭据而呈灰色的“要融合的模型”清单、要求至少选两个模型的橙色帮助文本,以及下方的评判器部分

在上面的截图中,尚未配置任何代理凭据,因此要融合的模型下的每一行都呈灰色,橙色帮助文本解释了缺少什么。一旦代理标签页持有凭据,这些行就变为可选。

  1. 在工作区浏览器中打开工作区并点击编辑工作区,然后选择 Fusion 窗格。
  2. 要融合的模型下,勾选你希望其答案出现在面板中的供应商。Claude Code (Anthropic) — 你的会话始终是一支;添加 Codex (OpenAI)Grok (xAI) 和/或本地模型。本地模型行包含一个已安装本地模型的选择器。
  3. 评判器下,选择将权衡各份草稿并写出最终答案的供应商模型。供应商列表提供每一个拥有可用凭据的云端供应商,以及在至少安装了一个本地模型时的 Local。云端模型列表从供应商的 /v1/models 端点实时获取,并包含一个 (default) 条目;如果获取失败,则改为提供一个小型内置列表。本地评判器从已安装的目录模型中选择。
  4. 点击存储
设置默认值说明
要融合的模型未选中任何项Claude Code 始终是一支;其他的需要凭据(云端)或已安装的模型(本地)。
评判器 → 供应商首个可用供应商一旦安装了本地模型,即出现 Local
评判器 → 模型(default)claude-opus-4-8云端列表从 /v1/models 实时获取。

当某一支的模型未被显式指定时,默认值为:Claude → claude-opus-4-8;Codex → 订阅时为 gpt-5.5,或使用 API 密钥时为 gpt-5.5-2026-04-23;Grok → grok-build

提示: 本地模型是一个有能力、零边际成本的额外支——而且评判器本身也可以在本地运行,将整个分析与综合阶段都保留在你的 Mac 上。参见本地与混合推理

在会话中启用 Fusion

配置窗格只是让 Fusion 可用。每个会话都通过会话窗口标题栏中的闪电按钮 (⚡) 决定是否使用它:

闪电外观状态工具提示
空心、禁用不可用——可用模型少于两个"To enable Fusion you need to have at least two models enabled."
实心、深灰可用、未启用"Fusion available — disengaged. Click to engage multi-model synthesis."
实心、黄色已启用"Fusion engaged — answers are synthesized across your selected models. Click to disengage."

点击闪电以切换。新会话总是以未启用状态开始——Fusion 是一个显式的、按会话的选择,绝不是静默的默认。

从命令行

在应用运行时,你可以在不触碰窗口的情况下切换正在运行的虚拟机上的 Fusion:

bromure-cli vm fusion enable <vm>
bromure-cli vm fusion disable <vm>

<vm> 是虚拟机 id 或工作区名称,on/off/engage/disengage 均被接受为别名。bromure-cli vm 的状态输出包含一个 fusion 行,读作 engagedavailable (off)。这些命令与应用的控制 API 通信,因此需要应用(或其代理)正在运行;参见自动化与 CLI

Fusion 的成本

Fusion 会成倍增加模型用量,你应当在了解这笔账的情况下启用它。对于 Claude 返回纯文本答案的每一个轮次:

  • 每个额外选中的支都会进行一次完整的模型调用,接收与上下文相同的扁平化对话记录——因此长对话会在每一支、每一个融合轮次上按比例产生成本。
  • 评判器还会进行两次调用:一次产生 JSON 分析,一次写出综合结果。两者的输出都被限制在 4,096 个令牌以内。

因此,在选中全部四支的情况下,一份融合后的答案最多会在你本已进行的 Claude 调用之外,产生五次模型调用。工具调用轮次分发出次额外调用,这在实践中让代理式会话远比最坏情况便宜——编程循环中的大多数轮次都是工具调用。

每一支的计费方式取决于其凭据:API 密钥支按令牌计费,订阅支消耗订阅配额,而本地支只消耗设备端算力(在笔记本电脑上还有电量)。每一支默认有 600 秒的上游超时。

追踪中的 Fusion

Fusion 对代理刻意不可见,但对你完全可见。每一次上游侧调用——每一支、评判器分析以及综合——都像任何其他 AI 交换一样被追踪管道捕获,受工作区追踪级别的约束(参见追踪)。

实际影响:

  • 追踪检查器(窗口菜单 → Trace Inspector…)在会话正常流量旁列出这些额外交换,并将捕获到的请求和响应渲染为解析后的对话——你可以准确读到每一支回答了什么以及评判器得出了什么结论。
  • bromure-cli trace hostnames 显示,诸如 api.openai.com 之类的主机是从一个你可能以为只涉及 Anthropic 的会话中被联系的。如果你的组织审计出站流量,请预期融合会话会显示每个已选供应商的端点。
  • Fusion 还会以 [fusion] 前缀详细地记录到应用的 stderr——这在诊断某一支为何被剔除时很有用。

注意: 如果你的工作区的数据处理规则限制哪些供应商可以看到你的代码,请记住每个选中的支都会接收对话的完整扁平化记录。据此选择各支。

环境覆盖

在启动应用时,可以用环境变量覆盖少数几个默认值——用于实验,并非意在作为日常配置:

变量默认值效果
BROMURE_FUSION_TIMEOUT600每支的上游超时,单位为秒。
BROMURE_FUSION_OPENAI_MAX_TOKENS128000(GPT-5/o 系列),16384(gpt-4o 及更早)OpenAI 支的补全令牌上限。

Beta 限制

Fusion 是一项 beta 功能,有一些值得了解的锋利边缘:

  • 仅限 Claude Code 会话。 Fusion 拦截 Anthropic /v1/messages POST 请求。以 Codex 或 Grok 作为主代理运行的会话不会被融合——那些代理的流量会正常通过。
  • 非 Claude 支不带工具回答。 对于 Codex、Grok 和本地支,工具定义会被丢弃;它们就着扁平化的对话记录以散文形式回答。它们的草稿为综合提供信息,但其本身无法采取动作。
  • 尽力而为的订阅后端。 Codex 订阅支通过 WebSocket 搭载 ChatGPT 后端,Grok 订阅支使用 cli-chat-proxy.grok.com——两者都是未公开的接口。发生任何错误时,该支会被剔除,而不是让 fuse 失败。
  • 静默降级。 被剔除的支和评判器失败会回退到 Claude 自己的答案(或一份原始草稿),而不会提醒代理。追踪和 [fusion] stderr 日志是你唯一能看到这一情况发生的地方。
  • 延迟。 一个融合的文本轮次要等待存活支中最慢的一支,然后再进行两次评判器调用。请预期答案轮次会明显慢于普通会话;工具轮次不受影响。