Fusion — 多模型面板
不同的前沿模型,出错的方式也不同。一个漏掉的边界情况,另一个抓到了;一个凭空编出的 API,其余三个拒绝发明。Fusion 把这种多样性变成一项功能:启用之后,你的 Claude Code 会话问出的每一个问题都由好几个模型同时回答,一个评判模型描绘出这些草稿在哪里一致、在哪里冲突、各自在哪里出色,而一个以那份分析为根基的单一合成答案,会像是某一个模型写的那样交回给 Claude Code。代理永远不知道曾经召开过一场合议。
Fusion 完全跑在主机端的代理服务器里(见概念),所以 VM 里什么都没变:没有代理的标志位、没有包装脚本,也没有任何代理能察觉并据以反应的延迟来源。它是按机器配置的(在设置编辑器中即工作区),配置在Fusion 设置窗格里,并在机器的某个终端标签页显示于屏幕上时,用工具栏的闪电按钮(⚡)启用。
注意: Fusion 在界面中标示为 BETA。它是一个能用的原型:机制是稳定的,但评判模型的提示、各提供方的后端,以及失败的处理方式都还在演进。在依赖它之前,请先看BETA 的限制。
Fusion 如何运作
Fusion 拦截 Claude Code 会话送往 Anthropic /v1/messages 端点的流量。每个请求都分阶段处理:
- 分支 A — 先由 Claude 回答。 客体原本的请求原封不动送往 Anthropic(强制为非流式,以便检查完整的回复)。你的 Claude Code 会话永远是这个融合的分支之一。
- 工具回合直接通过。 若 Claude 的回复是一次工具调用——在代理式编程中这是常见情形,多数回合都是“读这个文件”、“执行这道命令”——它会被一字不改地转交给代理,该回合便跳过融合。代理循环永远不会被一个合成出来的工具调用打断。
- 文字回合向外展开。 只有在 Claude 回传纯文本答案时,Fusion 才介入。每一个其他被选取的分支——Codex (OpenAI)、Grok (xAI)、Kimi Code (Moonshot AI)、Oh My Pi,以及可选的本地模型——都会就同一份摊平后的对话记录被问同一个问题。
- 评判模型描绘地形。 评判模型比较所有草稿,并产出一份结构化的 JSON 分析——共识、冲突、独到见解、盲点,以及一个裁定——而不是散文式的评论。
- 评判模型进行合成。 同一个评判模型接着以它刚产出的那份分析为根基,写出最终的答案。
- 交付。 融合后的答案会以 VM 里的代理所要求的那个传输形式(Anthropic 的 SSE 或 JSON)原样流式回去。从 Claude Code 的角度看,就是一个模型回答了。
任何阶段的失败都是优雅地退化,而不是把会话弄坏:凭据无法解析、出错或超时的分支,都会被静静地从融合中剔除。若存活的答案少于两个,就原封不动回传 Claude 自己的答案。
工具回合与文字回合
工具回合/文字回合的区分,正是 Fusion 对代理式工作而言安全的原因。行动(工具调用)完全按 Claude 发出的样子执行;只有答案——解释、设计、审查、计划——才会被融合。在典型的编程会话中,多数回合都是行动,所以 Fusion 的影响集中在模型多样性最要紧的地方:推理与结论,而不是机械性的文件编辑。
每个分支的身份从哪里来
Fusion 没有自己的凭据界面。每个分支都使用在机器的实际模型设置中——设置 › 模型,加上机器自己的模型覆盖(见模型与提供方)——已为该代理设好的登录或 API 密钥。当你改动那些设置时,运行中机器的 Fusion 配置会当场刷新;若改动之后可用的模型少于两个,Fusion 就会被停用。
- 订阅——分支使用主机订阅库中的一个活令牌(Claude、ChatGPT、Grok 或 Kimi);主机会在需要时更新它。Claude 的订阅令牌会自动取得 Anthropic 所要求的 Claude Code 身份系统块与 OAuth beta 标头。
- API 密钥——分支使用主机端令牌替换表里那把真正的 API 密钥(客体看到的始终只是诱饵;见凭据)。
- Oh My Pi——omp 只吃 API 密钥,并且讲它被切换到的那个提供方,所以它的分支使用该提供方的 API 密钥,搭配模型设置在那里为 omp 所选的模型(否则就是该提供方默认的分支模型)。只有 Anthropic、OpenAI 与 xAI 能被融合;位于 z.ai 或自定义端点上的 omp 不会被当作分支提供。
- 本地模型——分支瞄准这台机器的本地引擎:有配置自定义服务器时就是它,否则是 Mac 的设备端引擎(见模型与提供方)。
- Amazon Bedrock——跑在 Bedrock 上的 Claude Code 会话只透过客体自己的请求贡献;没有单独的 Bedrock 融合分支。
凭据无法解析的分支会留下一行记录后被剔除,绝不会把错误丢到代理面前。
需求
Fusion 需要至少两个可用的模型:
- 只要 Claude Code 代理有一份可用的凭据,你的 Claude Code 会话就永远算作一个分支。
- 每一个额外的云端分支——Codex (OpenAI)、Grok (xAI)、Kimi Code (Moonshot AI)——都需要该代理的凭据,在设置 › 模型或机器的模型覆盖中配置。在那之前,该行会呈灰色并带着提示*— 没有云端凭据(请在设置 › 模型中配置一个)*。
- Oh My Pi 分支需要 omp 被切换到 Anthropic、OpenAI 或 xAI,并具备该提供方的 API 密钥。否则它那一行会显示*— Oh My Pi 需要 Anthropic、OpenAI 或 xAI 的 API 密钥(请在设置 › 模型中设置)*。
- 本地模型分支需要一个本地模型:在模型的设备端下载的设备端模型,或一台自定义服务器。在那之前,它那一行会显示*— 请在设置 › 模型中下载一个*。
被选取的可用模型少于两个时,窗格会显示辅助文字*“请至少选两个要融合的模型——你的 Claude Code 会话算一个,所以再加一个(一个云端代理或一个本地模型)。”*,而闪电按钮保持禁用。
为一台机器配置 Fusion
Fusion 在机器设置中模型之下的Fusion 窗格里配置(黄色的闪电图标;该窗格标着 BETA)。逐字段的参考在Fusion 设置;本节走一遍流程。
在上面的截图中,这个工作区没有配置任何提供方,所以要融合的模型之下每一行都呈灰色,而橙色的辅助文字说明了缺什么。
- 打开机器的设置(机器菜单中的设置…),并选取Fusion 窗格。
- 在要融合的模型之下,勾选你想要其答案进入面板的那些代理。Claude Code (Anthropic) — 你的会话永远是一个分支;再加上Codex (OpenAI)、Grok (xAI)、Kimi Code (Moonshot AI)、Oh My Pi 和/或本地模型。本地模型那一行附有一个可用本地模型的选择器。
- 在评判模型之下,挑出要权衡草稿并写出最终答案的提供方与模型。提供方清单提供每一个具备可用凭据的代理(判定方式与分支相同),并在有本地模型可用时加上本地。云端模型清单是即时从提供方的
/v1/models端点取得的,并包含一个**(默认)** 项目;若取得失败,就改为提供一份内建的小清单。本地的评判模型从已安装的目录模型中挑选。 - 点击存储。
| 设置 | 默认 | 备注 |
|---|---|---|
| 要融合的模型 | 未选任何 | Claude Code 永远是一个分支;其他需要凭据(云端)或一个本地模型。 |
| 评判模型 → 提供方 | 第一个可用的提供方 | 一旦有本地模型可用,就会出现本地。 |
| 评判模型 → 模型 | (默认) → 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;Kimi Code → kimi-k2.5;Oh My Pi → 它所交谈那个提供方的默认(Claude 的、Codex 以 API 密钥时的默认,或 Grok 的)。Oh My Pi 的评判模型则退回到 omp 的分支模型。
提示: 一个本地模型是个有本事又没有边际成本的额外分支——而且评判模型本身也可以在本地跑,让整个分析与合成的阶段都留在你的 Mac 上。见模型与提供方。
在一台机器上启用 Fusion
配置好窗格只是让 Fusion可用。你是按机器启用它的,用主窗口工具栏上的闪电按钮(⚡)。闪电只在该机器的某个终端标签页显示于屏幕上时出现——在边栏的虚拟机之下,或在某个会话中按下Linux 胶囊(⌥⌘U)跳到它的终端之后。它从不出现在聊天里。
| 闪电的样子 | 状态 | 工具提示 |
|---|---|---|
| 中空、禁用 | 不可用——可用的模型少于两个 | “请启用至少两个模型才能使用 Fusion” |
| 实心、深灰 | 可用,但未启用 | “Fusion 可用 — 点击以启用” |
| 实心、黄色 | 已启用 | “Fusion 已启用 — 点击以停用” |
点闪电即可切换。启用它是对整台机器生效的:在它上面运行的每一个 Claude Code 会话都会被融合,直到你停用为止。机器一开始是 Fusion 未启用的状态——这是一个明确的选择,绝不是默默套上的默认。
从命令行
在应用程序运行中时,你可以不碰窗口就在一台运行中的 VM 上切换 Fusion:
bromure-cli vm fusion enable <vm>
bromure-cli vm fusion disable <vm>
<vm> 是 VM 的 id 或一个工作区名称,而 on/off/engage/disengage 也都接受作为别名。bromure-cli vm 的状态输出中含有一行 fusion,写着 engaged 或 available (off)。这些命令是跟应用程序的控制 API 交谈的,所以需要应用程序(或它的代理进程)正在运行;见CLI、API 与 MCP。
Fusion 的代价
Fusion 会把模型用量乘上好几倍,你该在懂得这笔算术之后再启用它。对于每一个 Claude 回传纯文本答案的回合:
- 每一个被选取的额外分支都会发出一次完整的模型调用,并收到同一份摊平后的对话记录作为脉络——所以长对话在每一个融合回合、每一个分支上都会按比例计费。
- 评判模型还会多发两次调用:一次产出 JSON 分析,一次写出合成。两者的输出都以 4,096 个 token 为上限。
因此,若在 Claude 之外还选了 Codex、Grok 与一个本地模型,一个融合后的答案最多会在你原本就要发出的那次 Claude 调用之外,再花掉五次模型调用;每多一个分支就再多一次。工具调用的回合向外展开成零次额外调用,这在实务上让代理式会话远比最坏情况便宜得多——编程循环中多数回合都是工具调用。
每个分支怎么计费,跟着它的凭据走:API 密钥的分支按 token 计费,订阅的分支吃订阅的额度,而本地分支只花设备上的算力(在笔记本上还有电池)。每个分支默认有 600 秒的上游超时。
追踪记录中的 Fusion
Fusion 对代理刻意隐形,但对你完全可见。每一次朝上游的侧边调用——每个分支、评判模型的分析,以及合成——都会像其他任何 AI 往来一样被追踪管线捕获,并受该机器追踪级别的约束(见追踪)。
实务上的后果:
- 跟踪检查器(窗口菜单 → 跟踪检查器…)会把那些额外的往来与会话的一般流量并列,并把捕获到的请求与响应呈现为已解析的对话——你可以确切读到每个分支答了什么、评判模型下了什么结论。
bromure-cli trace hostnames会显示,某个你原以为只和 Anthropic 往来的会话,其实联络过api.openai.com这类主机。若你的组织会审计出站流量,请预期融合过的会话会显示每一个被选提供方的端点。- Fusion 也会以
[fusion]前缀在应用程序日志(~/Library/Logs/BromureAC/bromure-ac.log)中详细记事——诊断某个分支为何被剔除时很有用。
注意: 若你的数据处理规则限制了哪些提供方可以看到你的代码,请记得每一个被选取的分支都会收到整段对话摊平后的完整记录。请据此挑选分支。当这台机器开着个人数据保护时,个人数据会在向外展开之前被换成替身,所以每个分支收到的都是替身。
环境变量覆盖
有几个默认值可以在启动应用程序时用环境变量覆盖——适合实验,并非设计来日常使用:
| 变量 | 默认 | 效果 |
|---|---|---|
BROMURE_FUSION_TIMEOUT | 600 | 每个分支的上游超时,以秒计。 |
BROMURE_FUSION_OPENAI_MAX_TOKENS | 128000(GPT-5/o 系列)、16384(gpt-4o 及更早) | OpenAI 分支的完成 token 上限。 |
BETA 的限制
Fusion 是一项 beta 功能,有几处值得知道的锋利边角:
- 只限 Claude Code 会话。 Fusion 拦截的是 Anthropic
/v1/messages的 POST 请求。跑 Codex、Grok、Kimi 或 omp 的会话不会被融合——那些代理的流量照常通过。 - 非 Claude 的分支不带工具回答。 Codex、Grok、Kimi Code、Oh My Pi 与本地分支的工具定义都会被拿掉;它们就着一份摊平的对话记录以散文作答。它们的草稿会喂进合成,但它们本身不能采取行动。
- 订阅后端是尽力而为。 Codex 订阅分支搭在走 WebSocket 的 ChatGPT 后端上,而 Grok 订阅分支用的是
cli-chat-proxy.grok.com——两者都是未公开的接口。一有任何错误,就剔除该分支,而不是让整个融合失败。 - Oh My Pi 只限三个提供方。 Oh My Pi 的分支或评判模型,只在 omp 被切换到 Anthropic、OpenAI 或 xAI 并具备 API 密钥时才有效;在 z.ai 或自定义端点上则不提供。
- 静默退化。 被剔除的分支与评判模型的失败,都会退回 Claude 自己的答案(或某份原始草稿),而不向代理示警。追踪记录与应用程序日志中的
[fusion]行,是你唯一能看到这件事发生过的地方。 - 延迟。 一个融合的文字回合要等最慢的那个存活分支,然后还有两次评判模型调用。请预期答案回合会明显比一般会话慢;工具回合不受影响。