对抗评审:一次开放发现,主线程直接裁决
一句话:默认由 Fable 5 与 GPT-5.6-Sol max 独立找问题;用户明确点选时可独立加入 Cursor Grok 4.6 Extra High、Cursor GLM 5.2 Max、Cursor Kimi K3 Max 的任意组合。全部评审不开 Fast;当前 Claude Code 主线程负责裁决,裁决后点评并排名实际参与模型,不另启裁判线程。
0. 硬边界
- 同一身份只开放一次:用 review_id + object_hash + truth_baseline_hash 标识评审身份。同一阶段、同一基线、同一对象不得开 R2/R3。
- 全部评审者只读且必须独立勘察:默认两名;Grok/GLM/Kimi 按用户点选独立加入,最多五名。评审者在授权项目根内亲自检索、核验,只输出事实、失败场景和候选方向;不写被评审对象、不写正式报告、不互相读取输出。
- 主线程直接裁决:全部已选评审意见收齐后,当前主线程合并、去重、编号并逐条裁决;可选评审者是评审者而非裁判,禁止再起“裁判”子线程或裁判模型。
- 评审意见不是真值:会改变业务结果、接口契约、持久化语义、死亡线规则的选择,必须追溯到正式上游规格或由业务决策负责人作出的
_shared/用户裁决记录.md#DEC-x。没有来源只能升级到对应授权角色。 - 整改不再开放找问题:主线程按裁决整改后,调用 closed-remediation-review。该 skill 只用本工具一个全新 Opus 5 子线程检查固定整改清单,再由主线程逐条裁决。
- 报告不取得规格地位:正式 L1–L7 才是长期真值;评审报告只是发现、裁决和整改闭环证据。
只有用户裁决、上游正式真值或评审对象发生根本重写时,旧身份才失效。重新评审前必须登记失效原因和新哈希;措辞修订、补引用、落实上一轮整改都不构成新对象。
1. 角色与 Claude Code 适配
| 角色 | 调用方式 | 默认模型 | 权限 |
|---|---|---|---|
| 评审者 A | Claude Code 原生 Agent | Fable 5(model: "fable") |
项目根内只读发现 |
| 评审者 B | codex exec | gpt-5.6-sol,reasoning max | 项目根内只读发现 |
| 评审者 C(可选) | Cursor CLI 中继(scripts/cursor-review-runner.sh) |
cursor-grok-4.6-xhigh(Cursor Grok 4.6 Extra High) |
项目根内只读发现;仅用户明确点选时加入 |
| 评审者 D(可选) | 同上 | glm-5.2-max(Cursor GLM 5.2 Max) |
同上 |
| 评审者 E(可选) | 同上 | kimi-k3-max(Cursor Kimi K3 Max) |
同上 |
| 裁决者 | 当前 Claude Code 主线程 | 当前主线程 | 只裁决,不发明新设计 |
| 整改验收 | closed-remediation-review | 一个全新 Opus 5 原生子线程 | 固定范围只读检查 |
默认只启动 A/B。C/D/E 默认全部关闭、各自独立点选:只有用户明确写出“加入 Grok”“加入 GLM”“加入 Kimi/Kimi K3”,或对带该模型名称的选项回答“是”时才加入对应评审者;“全部模型/五模型”表示三者都加入。单说“三模型”“多加一个”不能确定第三方是谁,必须先让用户点名。不得因模型可用、任务复杂或死亡线命中而自动加入,也不得为了询问 C/D/E 而阻塞常规评审。
全部已选评审者必须并行、相互独立。常规档固定 A=Fable 5、B=gpt-5.6-sol reasoning max、C=cursor-grok-4.6-xhigh、D=glm-5.2-max、E=kimi-k3-max。任何评审都禁止 Fast:所选模型 ID 不得以 -fast 结尾,不得开启 Claude Code fast mode 或等价的速度模式;Fast 不是思考强度,用户要求“快/省”时只能在明确允许的非 Fast 思考档中降档(A 固定 Fable 5 不换模型,B 可把 reasoning 降到 high)。不得换掉模型后仍宣称完成了 Fable + GPT 对抗评审。报告必须记录实际模型 ID。
2. 总体流程
冻结评审身份与证据包
├─ 并行:Fable 5 独立评审(默认)
├─ 并行:GPT-5.6-Sol max 独立评审(默认)
├─ 并行:Cursor Grok 4.6 Extra High 独立评审(仅用户明确点选 Grok)
├─ 并行:Cursor GLM 5.2 Max 独立评审(仅用户明确点选 GLM)
└─ 并行:Cursor Kimi K3 Max 独立评审(仅用户明确点选 Kimi)
↓
当前 Claude Code 主线程合并去重、分配 AR-x、逐条裁决
↓
必要的用户问题合并成一张表,一次询问;逐项记录 DEC-x
↓
全部 AR-x 裁决完成后,当前主线程点评、排名全部实际参与模型
↓
主线程整改正式产物,冻结整改清单与 closure_scope_hash
↓
closed-remediation-review:一个 Opus 5 原生子线程只检,主线程再裁
↓
PASS 才允许下游继续
同一开放评审没有“裁判轮”。主线程读取默认两份或点选后的三至五份评审输出并直接形成报告;点评排名只是裁决后的表现总结,不产生新意见、不改变任何 AR-x 裁决。
3. 证据包
复杂场景同时读取 references/证据包制作规范.md;本节是强制最小集。
3.1 冻结内容
- review_id / object_hash / truth_baseline_hash。
- 评审对象:短小、临时或评审通道不可直接访问时内嵌全文;同一工作区内的大对象给绝对路径、哈希和精确范围,禁止摘要替代。
- 正式真值基线:适用的 L1–L7、冻结规格、工程红线和任务边界。
- 已决策·不得重开区:每项必须引用正式规格或 DEC-x;没有证据不得放入。
- 本次口径卡:设计、测试用例、章程或代码评审口径。
- 授权项目根
REVIEW_ROOT:默认解析为被评审对象所在 Git 工作树根;非 Git 项目才用用户明确授权的项目根。不得为了少给上下文而降成对象目录。 - 起始导航,以及明确的禁止读取项、禁止动作、输出格式和严重度预算。
钉对象,不钉视野;读得宽,评得窄:全部已选评审者必须评同一对象、同一真值基线和同一口径,但必须各自在 REVIEW_ROOT 内做独立勘察。证据包是冻结核心与调查种子,不是穷举白名单;各方实际发现路径可以不同。补读结论要给精确位置,调查得到的背景只能用于判断冻结对象,不能重开已决策项或改评整个项目。
证据包本身也要受审:评审者必须核验起始材料是否遗漏冲突真值、关键生产者/消费者或已经失效;发现缺口时用事实报告,不能默认制包方天然完整。
3.2 路径与临时目录
- 报告路径必须先解析为绝对路径,且位于用户授权的任务目录。
- 临时目录每轮用独立 mktemp -d,不得使用全局固定文件名。
- 记录评审前工作树快照;全部已选评审者完成后核验目标文件和工作树没有被它们修改。
- 原始 A/B(以及已点选时的 C/D/E)输出保留到报告验收完成,随后可清理临时目录。
4. 全部评审者共用指令
证据包末尾必须加入以下语义,A/B/C/D/E 仅替换角色名:
你是独立评审者,不是设计者、裁判或施工者。
开工顺序(强制):
1. 读完冻结对象、真值基线和起始导航;
2. 在授权项目根内亲自做一次独立只读勘察,不得只凭证据包清单作答;
3. 按任务相关性检索同一概念、业务标识、状态与错误码,核对正式规格、生产者、消费者、测试、配置/迁移/运行手册;
4. 把证据包完整性也当作待核验声明;继续检索已不再改变本次口径内结论后再收口。
只做:
1. 找能被文本、代码或正式规格证明的问题;
2. 给出具体失败场景、违反的真值锚点、影响和最小候选方向;
3. 明确区分“事实冲突”“规格缺口”“实现风险”“可选优化”。
禁止:
- 修改任何文件;
- 读取另一名评审者的输出;
- 读取本地环境文件(`.env`、`.env.local`、`.env.*.local`;无真实凭据的已跟踪模板除外)、私钥、密钥库、凭据/令牌存储、认证缓存或主线程的预期答案/裁决草稿;
- 执行测试、构建、迁移、服务或有副作用的命令;联网、Web 搜索、MCP、数据库/云资源等外部系统访问;派生子 agent;
- 批判带正式来源或 DEC-x 的“已决策·不得重开”项本身;
- 把候选方案写成用户已经批准;
- 因理论上可能而升级阻断;
- 建议给下游新增审批、人工门或重复评审;
- 超出本次口径重新设计整个系统。
严重度预算:
- 阻断级原则上 0–3 条;超过时必须逐条证明不是同一根因。
- 每条阻断级必须回答:具体失败场景是什么、违反哪份冻结真值、为什么不能在施工中确定性自愈。
- 没有阻断问题是有效结论,不得凑数。
先输出精简调查账:冻结核心已读项 / 自主发现的关键文件与检索主题 /
反证或负向检查与实际覆盖边界 / 未能访问、主动排除或仍缺失的信息。
无需罗列每个读过的文件,但必须证明做过证据包外的独立发现。
若授权范围内的关键材料因通道能力无法访问,输出 INFO-GAP(精确路径或信息、尝试方式、对结论的影响),不要猜测。
随后每条发现包含:
临时编号 / 严重度 / 类型 / 事实证据 / 失败场景 / 真值锚点 /
是否涉及新业务选择 / 候选方向 / 来源文件位置。
口径卡优先使用:
- references/profiles/设计评审.md
- references/profiles/用例评审.md
- references/profiles/章程评审.md
5. 并行调用
5.1 评审者 A:Claude Code 原生 Fable 5
Agent(
description: "对抗评审·评审者A",
model: "fable",
run_in_background: true,
prompt: <同一证据包 + 评审者 A 指令>
)
必须使用全新上下文,从同一个 REVIEW_ROOT 开始只读分析,不得读取其他评审者输出,不得再起子线程。原生 Agent 即使拥有更宽工具面,也必须遵守证据包的禁止读取与禁止动作。推理档跟随当前会话设置;用户要求钉死 xhigh 时改走 CLI 路线——从 REVIEW_ROOT 以后台会话运行,工具面只给只读:
claude -p \
--model claude-fable-5 \
--effort xhigh \
--permission-mode dontAsk \
--allowedTools Read,Grep,Glob,LS \
--disallowedTools Edit,Write,MultiEdit,Bash \
--output-format text \
--no-session-persistence \
< "$SCRATCH/fable-review-prompt.txt" \
> "$SCRATCH/fable-review-out.txt" \
2> "$SCRATCH/fable-review-log.txt"
5.2 评审者 B:codex GPT-5.6-Sol
将同一证据包放入本轮临时文件,把 CODEX_CWD 解析为被评审项目 Git 根(非 Git 项目才用用户授权根),并以后台会话运行:
codex exec \
-m gpt-5.6-sol \
-c 'model_reasoning_effort="max"' \
-c 'approval_policy="never"' \
-s read-only \
-C "$CODEX_CWD" \
--skip-git-repo-check \
--ephemeral \
-o "$SCRATCH/gpt-out.txt" \
- \
< "$SCRATCH/gpt-prompt.txt" \
> "$SCRATCH/gpt-log.txt" 2>&1
使用 read-only + never,禁止危险绕过审批和沙箱。B 不得读取其他评审者输出,不得自动 fan-out,并必须提交调查账。若用户要求“快/省”,仅把 reasoning 改为 high。
5.3 评审者 C(可选):Cursor Grok 4.6 Extra High
只有满足 §1 的 Grok 明确点选条件才执行本节。先把本 skill 的 scripts/cursor-review-runner.sh 解析为绝对路径 CURSOR_RUNNER;该脚本只允许 status、models、login、review 四种动作,内部固定 --print --mode ask --sandbox enabled --trust,不带 --force / --yolo / --auto-review;不得读取、导出或另存密码与令牌。
- 用 runner 的
status确认登录、models刷新账户模型清单;每个动作使用本轮$SCRATCH中互不复用的 output / log / status 文件。 - 模型清单必须包含精确 ID
cursor-grok-4.6-xhigh;缺失时终止包含 Grok 的本次评审,不得用 Fast、High、Auto 或其他模型顶替。 - 未登录时用
login动作生成NO_OPEN_BROWSER=1远程授权链接交给用户;登录成功后清理含链接的临时输出,再重新执行status与models。 - 把完整证据包写入独立 prompt 文件,从
REVIEW_ROOT以后台会话启动:
"$CURSOR_RUNNER" \
--action review \
--workspace "$REVIEW_ROOT" \
--prompt-file "$SCRATCH/grok-review-prompt.txt" \
--model cursor-grok-4.6-xhigh \
--output-file "$SCRATCH/grok-review-out.txt" \
--log-file "$SCRATCH/grok-review-log.txt" \
--status-file "$SCRATCH/grok-review-status.txt"
Ask 模式用于项目探索且不得写文件;证据包仍要显式禁止执行、联网和敏感读取。用 Bash run_in_background: true 发起后立即启动其他已选评审者,不得等待 C 完成。收取输出后检查 status=0、输出非空、调查账存在,并复核评审对象与工作树快照未被修改。
5.4 评审者 D(可选):Cursor GLM 5.2 Max
只有满足 §1 的 GLM 明确点选条件才执行本节。复用 §5.3 的登录、安全与禁用 Fast 约束,但必须使用独立的 prompt / output / log / status 文件(glm-review-*),且模型清单必须包含精确 ID glm-5.2-max;缺失时终止包含 GLM 的本次评审,不得改用 glm-5.2-high、Auto 或其他模型顶替。
5.5 评审者 E(可选):Cursor Kimi K3 Max
只有满足 §1 的 Kimi 明确点选条件才执行本节。复用 §5.3 的约束,独立文件 kimi-review-*,模型清单必须包含精确 ID kimi-k3-max;缺失时终止包含 Kimi 的本次评审,不得改用 kimi-k3-high、kimi-k3-low、Auto 或其他模型顶替。
C/D/E 与其他已选评审者收到同一证据包,只替换角色名,互不读取输出,并保持与 A/B 重叠运行。
6. 主线程直接裁决
全部已选意见收齐后,当前主线程完成以下工作,不调用任何裁判模型:
- 建立 A/B(以及已点选时的 C/D/E)临时编号到统一 AR-x 的映射,合并同根问题,但保留来源。
- 对每条意见核验证据、口径和真值锚点。
- 对初判驳回项写出“若要成立所需前提”,检查该前提是否有证据;无证据维持驳回。
- 从处置矩阵四选一,禁止含糊的“部分采纳”:
| 裁决 | 条件 | 后果 |
|---|---|---|
| ❌ 驳回 | 不成立、无证据、越口径、重开已决策 | 不改,记录理由 |
| ✅ 桶1采纳 | 成立,且现在存在唯一、确定、不改变未决业务语义的修法 | 本轮主线程改好 |
| 🔧 桶2采纳 | 成立,但只能在施工时按冻结规格确定性处理 | 写入 _shared/自愈清单.md,不膨胀设计 |
| 🚨 升级用户 | 需要在多个业务结果间选择,或改变死亡线、对外契约、持久化语义、不可逆处置 | 合并后一次询问 |
- 需要业务决策负责人裁决时,将互相独立的问题逐行列出,给出互斥选项和影响;每行必须标注「是否改变业务结果」。改变业务结果的问题禁止与加固/修辞/低风险项打包为同一个"推荐选项"一键接受——必须单独成行、单独作答。授权角色答复后每项单独生成 DEC-x,保存原话或明确选项、日期、来源、实际角色和适用范围。
- 生成固定整改清单:只含采纳的 AR-x、对应 DEC-x、允许修改范围和预期落点。
主线程可以判断意见是否违背既有语义,但不能替用户选择新语义;不得折中创造第三方案。
6.1 裁决后的模型点评与排名
全部 AR-x 完成裁决后,由同一个当前主线程对全部实际参与的“模型 + 通道”做简短点评和确定次序的任务内排名。只依据可观察输出、调查账与已经完成的裁决,至少比较:有效发现、证据包外独有有效发现、误报或越界、证据与真值锚点质量、自主勘察质量、遗漏的明显影响面、严重度校准、表达与整改可执行性、上下文效率。
- 先裁决、后评分;排名不得反向改变任何 AR-x,也不得成为新一轮评审或封闭验收依据。
- 不按原始问题数量排名,不奖励重复项;以主线程最终确认成立的贡献和误报成本为主。
- 每个模型都写一句优势、一句短板和本次任务适配结论,并给出不并列的 1~N 名;若表现接近,也必须用证据质量、误报率或独有贡献打破平局。
- 同时记录各通道实际可用的读取/检索工具与
INFO-GAP。除非工具面等价已经被证实,不得把通道限制或提示编排缺陷全部归因于模型能力。 - 只评价本次任务表现,不外推为通用排行榜;不披露或推测隐藏思维过程。
- 模型身份以实际调用记录为准,不采信输出中的自报身份。
7. 报告格式
报告落任务规定的 _shared/T{n}-对抗评审报告.md,至少包含:
# 对抗评审报告
- review_id:
- object_hash:
- truth_baseline_hash:
- 评审对象:
- 评审模型:默认写 `Fable 5 + GPT-5.6-Sol max`;按实际点选追加 `+ Cursor Grok 4.6 Extra High`、`+ Cursor GLM 5.2 Max`、`+ Cursor Kimi K3 Max`
- 裁决者:当前 Claude Code 主线程(未启动独立裁判线程)
- REVIEW_ROOT:
- 禁止读取/禁止动作:
## 1. 评审对象与真值基线
## 2. 评审者调查账与通道信息缺口
| 评审者(模型 + 通道) | 冻结核心 | 自主发现与检索主题 | 反证/覆盖边界 | INFO-GAP/主动排除 | 实际工具面 |
|---|---|---|---|---|---|
## 3. 意见逐条裁决
### AR-1
- 来源:A / B / C / D / E 或实际来源组合
- 原始意见:
- 事实证据:
- 真值锚点:
- 主线程裁决:❌ / ✅ / 🔧 / 🚨
- 裁决理由:
- 驳回复核前提及证据:
- 决策来源:正式规格 / DEC-x / 无
- 整改动作:
## 4. 修正后的最终结论
## 5. 自愈清单条目
## 6. 驳回项汇总
## 7. 共识、分歧与来源分布
## 8. 参与模型 + 通道点评与任务内排名
| 排名 | 模型 + 通道 | 有效/独有贡献 | 自主勘察与上下文效率 | 误报/越界/遗漏 | 通道限制 | 优势 | 短板 | 本任务适配结论 |
|---|---|---|---|---|---|---|---|---|
## 9. 固定整改清单
| AR | 裁决 | DEC | 允许范围 | 预期落点 | 验收条件 |
|---|---|---|---|---|---|
## 10. 封闭式整改验收
由 closed-remediation-review 追加;未完成前状态为 PENDING。
报告在封闭验收 PASS 前不得宣称完成。
8. 失败与降级
| 情况 | 处理 |
|---|---|
| 任一已选评审者启动失败 | 对同一评审者重试一次;仍失败则终止,不把缺席阵容冒充为已完成评审 |
| Cursor 未登录或所选模型 ID 缺失 | 走远程登录或终止;禁止改用 Auto、其他 Grok 档位、GLM High 或 Kimi High/Low 顶替 |
| 任一配置出现 Fast | 启动前终止并改回对应非 Fast 精确 ID;禁止以低延迟为由继续 |
| 某方没有发现实质问题 | 只记录质量告警;若输出证明认真检查,允许“无问题” |
| 某方未做强制独立勘察或没有调查账 | 用同一冻结包重试该评审者一次;仍缺失则判该方角色失败,不接受其“无问题”或发现清单 |
| 授权范围内关键材料因通道能力不可访问 | 记录 INFO-GAP 并终止该方有效评审;先修复通道或重制可访问证据包,不把信息缺口评分成模型漏报 |
| 某方触碰禁止读取项或执行禁止动作 | 立即判该方失败,不接受其输出,并核验工作树与外部状态 |
| 某方修改了文件 | 立即判该方失败;不接受其输出 |
| 多份意见冲突 | 主线程按正式证据裁决;证据不足且涉及业务选择则升级用户 |
| 主线程无法确定意见是否成立 | 标记未决,不得靠第三个裁判线程逃避主线程责任 |
| 整改产生新业务语义 | 有唯一正式来源则恢复原义;否则停机请业务决策负责人裁决 |
真实性优先:必须实际获得默认 Fable 与 GPT 两份独立输出;用户点选 Grok/GLM/Kimi 时还必须获得对应可选模型输出。每条意见都要由主线程裁决,全部实际参与模型都要在裁决后被点评和排名,且任何实际模型都不得使用 Fast。缺任一项都不能宣称对抗评审完成。
9. 完成检查
- review_id / object_hash / truth_baseline_hash 已记录,且未命中既有开放评审身份
- 默认 A/B 已启动;C/D/E 仅按用户对 Grok/GLM/Kimi 的独立明确点选加入;全部已选评审者收到同一对象、同一真值基线、同一口径,且并行独立
- REVIEW_ROOT 已解析为授权项目 Git 根(或明确的非 Git 项目根),敏感信息与动作禁区已冻结
- 全部评审者在项目根内完成独立只读勘察,未读取彼此输出;报告含可审计调查账、实际参与阵容与模型 ID
- 全部模型 ID 与运行参数均未启用 Fast
- 当前主线程直接裁决全部意见,没有启动独立裁判线程
- 每条统一意见有稳定 AR-x、来源、证据、锚点、四选一裁决和理由
- 所有业务选择都有正式来源或 DEC-x,没有把评审建议写成“已批准”
- 授权裁决表每行标注了「是否改变业务结果」,且改变业务结果的项未与加固项打包为同一推荐选项
- 桶2 只进入自愈清单,没有反向膨胀正式设计
- 固定整改清单已冻结,报告预留封闭验收段
- 裁决后已对全部实际参与的模型 + 通道做简短点评和不并列排名;已区分模型表现、工具面与 INFO-GAP,且未反向改变裁决
- 整改后调用 closed-remediation-review,且 PASS
- 没有 R2/R3,没有新增下游审批或重复评审门