Model Fusion
Effort: heavy — 一整组模型并行起草,外加一位独立裁判(可选再加一位执笔者);把它花在要出厂的硬构建和修复上,绝不花在一行小改上。消除:把整个改动押在单个模型的草稿上,以及那份草稿错了之后的返工。
多个独立的声音胜过一个声音。一组模型(panel)并行起草同一个任务。一位裁判——一个没写过任何草稿的模型——挑出或合并最好的。赢家再对照"当初到底问的是什么"做校验。
什么时候跑
- 任何质量比速度重要的实质性构建、修复或升级。
- 你想要一对指定的独立评分者,而不是盲信某一个模型。
- 不适用于一行改动的小事。直接改、直接验就好。
三个阶段
1. 面板 — 并行起草
- 把同一个任务、同一份上下文,同时发给面板里的每个模型。
- 每位起草者独立干活。谁也看不到别人的稿子。
- 出错、超时或交白卷的起草者,记录在案后剔除。它绝不搞垮整轮。剔除要大声记录——绝不吞掉。
- 收集所有非空候选。
2. 裁判 — 局外人来挑、来合
- 评判之前,先对每个候选跑一道廉价的机械关卡:能干净地打上吗?能解析吗?探测跑在一次性副本上,绝不碰实况目录树。过不了关卡的候选,裁判连看都不看。
- 两种裁判形态——按配置选一种:
- 合成(Synthesis): 裁判分析每个候选(优点、缺陷、冲突),再由一个独立的写手模型基于该分析组合出最终答案。写手和裁判是不同角色;条件允许就用不同的模型。
- 拣选(Selection): 裁判从过关的候选里挑出单个最优。更省。合并没增益时就用它。
- 裁判或写手不可用时,就大声降级为对同一批候选做拣选。绝不悄悄浪费面板;绝不假装做过了合成。
- 没有候选过关时,把最有价值的报错附到 prompt 上重跑面板——有界,最多 2 轮修复。用尽后返回失败并附完整错误清单。绝不把空结果或原样未动当成功返回。
3. 校验 — 拿赢家对照意图
- 重读原始请求。赢家做到了要求的事吗——全部做到,而且没做没让它做的事?
- 检查语义正确性、与周边代码的风格契合,以及它依然能干净地打上。
- 信心不足就亮出升级旗,不许藏。然后按常规证明它:先失败测试,再变绿,再实况行为。一份从没跑过的合并稿只是猜测。
梯子
- Fusion 的梯级形状:底部一排便宜模型组成的宽面板,往上是更紧的面板和更紧的输出预算——配置错误的梯级在加载时就大声报错。
- 配置格式、"代码里写角色、配置里放模型"、实况探测解析,都归 fleet-ladder。
硬性规则 — 破一条,技能即失败
- 构建者绝不当裁判。 裁判没写过任何候选。最终评分者与赢家的构建者是不同的模型(最好是不同家族)。
- 任何调用点都不许硬编码模型名。 代码里是角色,配置里才是模型。
- 不许无声降级。 起草者被剔、裁判回退、关卡失败、轮次用尽,全都要大声。评不了分的结果绝不默认通过。
- 修复有界。 面板重跑有硬上限。用尽是一次大声的失败,不是无限循环。
- 测试变绿不等于完事。 赢家要在实况行为上得到证明。
搭配使用
- fleet-ladder — 面板开火之前先解析哪些模型活着。
- blind-tribunal — 主评分者挂掉时那个"失败即关闭"的评审法庭。
- red-first — 赢家稿必须变绿的那条失败测试。
- blind-eval — 测试裁决不了时的"留或退"品味关卡。