不要轻信单次生成的结果,只有在多个模型相互交锋之后才得出结论。本文是对 Claude Code 技能的设计解析,该技能将 GAN 的对抗结构移植到了推理阶段。
- 作者: Ryousuke Wayama(@wayama_ryousuke)
- 日期: 2026-07-09
- 背景: 概念受 GAN 启发(2023 年预测推文)/ 与 Claude Fable 5 共同构思设计
- 仓库: https://github.com/makinux/adversarial-panel
背景:为什么单次回答不够可靠
LLM 的回答最危险的时候,不是它们出错的时候,而是它们出错却依然自信满满的时候。单个模型单次生成,在结构上缺乏检测这种问题的机制。即使有自我批评,生成和批评过程中的盲点也是相关的,因为它们源自同一套权重;此外,有证据表明模型存在自我偏好偏见,会给自己生成的输出打高分。简而言之,"自己写、自己审"从一开始就是任何审计工作中的利益冲突。
这个技能的灵感来源于 GAN。GAN 的精髓不仅仅在于生成器和判别器相互竞争的结构,更在于其底层原理:检测比创造更容易这种不对称性。与其依赖生成器保证自身的正确性,不如让独立的对手来攻击,只有幸存下来的结果才予以通过,这样可以用相同的计算成本获得更高质量保证。GAN 通过梯度来运行这个循环,而 adversarial-panel 则通过自然语言批评来实现。变化的只是信号的媒介,博弈结构保持不变。
然而,简单地把多个模型排在一起是没有价值的。真正起作用的是以下两个有意设计出来的特征:
- 错误去相关 —— 审阅者只有在其故障模式与生成者不同时,才能发现生成者的疏漏。由于同一模型的多个审阅者共享盲点,"一致同意"的证据价值远不如表面看起来那么高。跨模型家族使用才是核心。
- 验证优势 —— 反驳一个给定的答案比创造这个答案更容易。因此,批评者的任务被导向去攻击那些可验证的主张。不是"我觉得可疑",而是"它在输入 X 上会失败"——通过复现来反驳,而不仅仅是断言。
架构:协调者和评审团成员
只有两种组件。主会话(Claude Code 本身)充当协调者,负责推进、验证和整合,而 2 到 4 名评审团成员则负责回答和相互批评。协调者不能通过评审团成员之口表达自己的意见(禁止协调者捕获);如果要添加意见,必须标明为"协调者观点"。

图 1 — adversarial-panel 的配置。 协调者分发一份自包含的简报(实线),评审团成员相互攻击对方的答案(交叉批评),然后将答案和批评返回给协调者(虚线)。每一轮都运行这个循环。
评审团成员的来源优先考虑最大化异质性:
- 不同的模型家族 —— 通过 Bash 调用外部的 CLI,如 Codex。这提供了最强的错误去相关能力。
- 不同的 Claude 模型 —— 通过 agent 工具的模型参数(Opus/Sonnet/Haiku)。
- 同一模型 + 强制方法分支 —— 一个从第一性原理论证,一个从基础概率(外部视角)论证,一个只搜索反证,一个重新执行可验证的主张。通过方法而非仅仅角色名称来区分。
默认配置是 2 名评审团成员 × 3 轮。由于成本随评审团成员数量和轮次数增加而增加,只有当用户要求彻底性时,才会扩展到 3–4 名评审团成员。
协议:4 轮 + 合成

图 2 — 协议推进流程。 白色代表协调者的任务,紫色代表评审团成员的任务。第 1 轮后插入一个验证门,检查"回答是否有实质内容"。对于低成本查询,第 2 轮和第 3 轮可以合并为一轮。
第 0 轮——框架设定与必要性判断
首先,判断是否需要开启评审。对于低风险查询或自信充分的场景,直接回答即可,只需将评审作为可选方案呈现。完整的评审仅在重要、有争议或可验证的查询时触发——因为只有在这种情况下,批评才值得付出成本。
这里内置了对"分诊陷阱"的防御。由于负责发现盲点的模型正是操作这个门的模型,它在一个任务上越自信地失败,这个门就越不可能打开。因此,如果用户明确要求评审,无论模型自信程度如何,都会执行评审;对于重要查询,判断依据是事件的重要性而非模型的自信程度。
接下来,撰写一份自包含的简报。由于子 agent 完全无法看到对话上下文,简报必须包含查询、背景、约束条件和输出格式,此外还要包含指示:"将事实与推测分开,为每个主要主张附上置信水平和可证伪条件(即什么样的观察结果会推翻这个主张)"。可证伪条件必须具体且可检验,例如"在输入 X 上会失败"或"与来源 Y 相矛盾";泛泛而言的"如果出现相反证据"这类表述将被视为缺失数据(校准表演)。
第 1 轮——独立回答(并行/盲审)
并行启动所有评审团成员。一个绝对的要求是:任何成员都不得看到其他人的答案;一旦看到其他人的答案,就会产生锚定效应,破坏独立性的前提。
返回后,验证门启动:状态行或错误转储不能算作答案。如果将它们记入会议记录,后续轮次就会对空影进行批评(后文将描述的幽灵评审团成员问题)。失败的评审团成员将被重试;如果两次都失败,则将异质性等级降低一级以继续执行,并向用户披露实际的评审团配置。
第 2 轮——交叉批评(并行)
每个评审团成员会收到其他评审团成员的答案。他们必须用引证来攻击具体的主张——指出事实错误、证据薄弱、逻辑跳跃、被忽视的替代方案或隐含的假设。可验证的主张通过复现(运行代码、重新计算数值、检查来源)来反驳。禁止附和、总结或赞扬。无论是认输还是攻击,都必须附上理由。
第 3 轮——最终意见(并行)
每个评审团成员会收到针对自己的批评。他们必须对有效的攻击表示认输(附上理由,而非出于社交礼貌),并有理由地捍卫仍然成立的主张,同时说明剩余的不确定性、校准后的置信水平和可证伪条件。未经理由的全面转变将被视为谄媚的标志,因此在接受之前,需要质疑其转变的依据。
合成——协调者整合
最终输出包含三个部分:共识点 / 冲突点 / 结论。
- 共识点 —— 附带单一最强支撑论据,并说明这种趋同是强证据(异质性评审团)还是弱证据(同质性评审团,可能存在共享盲点)。
- 冲突点 —— 以"谁、什么观点、有什么证据"的形式呈现 + 协调者的裁决,裁决依据是证据的强度。如果一方拥有可复现的证据而另一方仅凭直觉,则做出裁决。将双方意见平等呈现不是中立,而是虚假平衡。
- 结论 —— 包括置信水平、可能改变结论的条件、值得保留的少数意见,以及接受/拒绝批评的审计踪迹。
三个必须始终维持的不变量
不变量 | 内容 |
|---|---|
独立性 | 第 1 轮的回答必须在盲审条件下生成。看到他人答案的评审团成员会产生锚定效应,不再是独立的样本。 |
对抗性 | 没有新论据的同意被视为一轮失败。强制指令:"至少反对一个核心主张;找到它。" |
不作平均 | 合成不是平均。冲突被保留并加以裁决。一旦你进行加总再除以二,评审团生成的信号就消失了。 |
与 GAN 的对应关系
"将对抗生成移植到推理阶段"的设计意图可以映射如下。关键在于,评审团侧的失败模式与已知的 GAN 失败模式可以整齐地对应起来。
GAN(训练) | adversarial-panel(推理) |
|---|---|
生成器 | 评审团成员的独立回答(第 1 轮) |
判别器 | 交叉批评中的攻击方(第 2 轮) |
梯度更新 | 自然语言批评以及有理由的认输/辩护(第 3 轮) |
最小-最大均衡 | 协调者带裁决的合成(合成) |
判别器优势 | 验证不对称性——检测比创造更容易 |
无权重共享 | 模型家族分离——错误去相关 |
模式崩溃 | 谄媚趋同(相互认同) |
失败模式与应对措施——全部来自实际生产环境
这里列出的技能反模式并非理论上的担忧清单,而是实际遭遇的地雷实录。
- 幽灵评审团成员 —— 状态字符串或错误转储混入会议记录中当作答案,导致所有后续轮次都在与空气辩论。→ 应对措施: 第 1 轮后立即设置验证门。强制外部 CLI 在前台执行,禁止在完成前返回的包装器。
- 谄媚趋同 —— 在第 2 轮中,所有人都表示同意,没有新的论据。等同于 GAN 中的模式崩溃。→ 应对措施: 在批评提示中加入"你必须至少反对一个核心主张。找到它"。
- 协调者捕获 —— 协调者让评审团说出自己先入为主的观点,并借共识的权威将其合法化。→ 应对措施: 协调者的观点必须用标签加以分离。
- 置信度表演 —— 没有可证伪条件的数字置信水平。"80% 置信度"毫无意义,除非你能说出什么样的观察结果会让你收回这个判断。→ 应对措施: 将没有可证伪条件的置信度视为缺失数据。
- 多样性幻觉 —— 将同一模型的不同角色扮演视为独立的审阅者。"红队"这个角色名称并不能使错误去相关——只有不同的模型、不同的方法,或者实际复现主张,才能创造去相关。→ 应对措施: 明确降低同质性评审团中趋同的证据强度,将其视为弱证据。
使用场景与调用方式
该技能本身发布在 makinux/adversarial-panel。将其放置在 Claude Code 中的 ~/.claude/skills/adversarial-panel/SKILL.md 后,可以通过明确调用或自然语言来触发,例如:
"让 Opus 和 Codex 对这个设计进行对抗性审查。""真的吗?让他们辩论一下,以确保万无一失。" / "red-team 这个" / "我想要第二意见。"同时,当你在重要问题上追问"你确定吗?"以寻求确定性时,它也会主动成为候选触发技能。
它适用于要么有争议、要么可验证的重要查询。例如架构选择、故障根因假设、技术预测或验证研究结论。反之,在低风险查询上开启它则是一种成本浪费,第 0 轮的分诊机制会将其过滤掉。成本与评审团成员数量 × 轮次数成正比;2×3 是日常使用的标准,关键时刻扩展到 3–4。
对于不良环境的降级方案也已明确:
- 没有子 agent 机制 → 替代为顺序执行中的独立章节(较弱,因为权重和上下文共享——在合成中注明)。
- 仅有一个模型家族可用 → 降级为方法分支(第三层级),并降低趋同的证据效力。
- 外部 CLI 失败两次 → 移除该评审团成员,继续执行,并披露。
报告实际运行的是哪个层级,而非意图中的层级——这是确保可审计性的关键。
结论:从推理到训练
我在 2023 年预测"对抗生成是 LLM 的下一个方向"时,心里想的是类似 GAN 的训练方案。
https://x.com/wayama_ryousuke/status/1658698942161510400
三年后回看这个答案,对抗结构首先在推理阶段(自然语言批评) 得到实际应用,而非训练阶段(梯度)。像 CriticGPT 这类专用于批评的模型、多 agent 辩论研究、以及编码中的交叉审查操作——业界正从不同的入口汇聚到相同的结构上。
下一阶段很可能是重新整合。虽然目前推理阶段的审查结果是一次性使用的,但如果将批评转化为 RL 奖励信号(即 RLAIF 路线),对抗性结果就可以累积到权重中——回归 GAN 最初的本质。如果有一天我们达到了"用对抗审查的结果来训练下一个模型"的阶段,那么这个技能将成为过渡时期的一个原型。在此之前,在押注于单次生成的结果之前,让模型相互交锋是非常值得的。
本文是对 Claude Code 技能 adversarial-panel(SKILL.md)的设计解析。概念:[@wayama_ryousuke](https://x.com/@wayama_ryousuke)(受 GAN 启发,与 Claude Fable 5 共同构思设计)。图表遵循 Executor/Advisor agent 配置的惯例。





