Install
openclaw skills install @revolutionla/three-party-adversarial-review开发完成后的三方对抗式代码评审闭环:蓝军(敌意审查,须给证据链)→ 第三方(独立审计,不信双方文档、只读代码,专找"修改引入的新缺陷"并稽核蓝军漏审的维度)→ 中立裁定(逐条采纳/驳回、审查双方共同前提)。当用户说"蓝军评审""第三方复核""对抗性审查""红蓝互搏""三方评审""交叉验证""发布前审查""帮我挑刺""adversarial review""red team review""pre-release review""critique this""find bugs in my code"或要求提升代码质量、准备发布前把关时使用。也适用于用户想把当前会话变成"多个 Agent 互搏"来提升代码水平的场景。
openclaw skills install @revolutionla/three-party-adversarial-review单人或单 AI 写代码,最大的风险不是"不会写",而是:
这三个问题靠"再仔细看一遍"解决不了——写代码的人和审代码的人是同一个,就一定会为自己辩护。只能靠结构化的对抗关系:
| 角色 | 立场 | 硬性约束 |
|---|---|---|
| 蓝军 | 敌意审查——假设代码会出事,去证明 | 每条结论必须附证据链(文件:行号 / 实测命令 / 上游源码);🔴/🟠 必须是实测结论,仅凭推理最高 🟡;禁止空话 |
| 第三方 | 独立审计——不信任任何一方文档,直接读代码 | 逐条复核"声称修了的是否真修了"、专找修改引入的新缺陷、并稽核蓝军漏掉了哪些维度 |
| 中立裁定 | 对双方结论逐条采纳 / 驳回 / 改级 | 必须由与蓝军不同的 agent 担任;当事人不能当法官 |
关键不是"多找两个 AI 看看",而是顺序与互不信任:第三方不信开发团队,裁定方不信蓝军和第三方。任一环节缺失,闭环就破。
references/review-dimensions.md —— 完整质量维度清单(19 项)。第 0 步按改动类型选维度时必须读,否则审查会漏掉大片区域。references/prompt-templates.md —— 三个角色的完整提示词模板 + 占位符约定 + 「设计要点」表(改模板前必读)。第 1/2/3 步派发子代理时直接取用,不要临时自编。references/quickstart.md —— 面向用户的上手说明(档位选择、什么时候不该用它)。references/skill-spec.md —— 写/改 skill 时的 SKILL.md 规范速查。examples/sample-review.md —— 一次真实评审的产出样例。⚠️ 能力边界(必须向用户如实说明) 子代理与主代理通常是同一模型,这不是真正独立的第三方。其价值来自角色约束 + 强制证据,而非"另一个 AI 的观点"。
- ✅ 能有效抓出:代码级错误、逻辑漏洞、测试造假、自相矛盾、遗漏分支、声明与实现不符;
- ❌ 抓不出:双方共有的知识盲区(例如对某个上游行为的一致误解)。若某个结论依赖外部系统行为,必须要求实测验证,而不是两个 agent 互相点头。
向用户汇报时,不要说"经独立第三方验证无误",要说"经同模型不同角色的对抗审查"。
🔁 降级模式(宿主无子代理能力时) 若宿主不提供
subagent,只能由同一个 agent 串行扮演三角色。此时:
- 独立性已被显著削弱,第 2、3 步的价值大幅下降;
- 必须在报告开头显式声明"本次为降级模式,角色由同一 agent 串行扮演";
- 不得使用"独立复核""第三方验证"等措辞;
- 有条件时优先换一个有子代理能力的宿主,而不是将就。
先问用户或从上下文判断档位(默认标准档):
| 档位 | 配置 | 相对成本 | 适用 |
|---|---|---|---|
| 轻档 | 1 个蓝军(聚焦选定维度) | ~1x | 小改动、时间紧 |
| 标准档(默认) | 蓝军全量 → 第三方复核 → 中立裁定,共 3 轮 | ~3x | 一般功能版本 |
| 重档 | 标准档 + 多路子代理并行交叉验证(按维度分组并行审) | ~5-8x | 发布前、重大重构、涉及上游兼容 |
(~Nx 为相对一轮蓝军审查的 token 经验估计,未经精确计量。)
必做四件事:
git rev-parse --short HEAD + git status,写进报告表头。references/review-dimensions.md,按"按改动类型选维度"表选出本次必审维度。不要默认全审——19 项全塞进一次审查只会让报告又长又浅。docs/review/)。三轮闭环最大的成本来源是报告互相抄写、逐条平铺展开。执行与改模板时都不得放宽:
文件:行号;定级存疑时向上取整。B7:✅ 属实落地),禁止重抄上游原文。文件:行号),仅 ⚠️/❌/🔁 项写完整证据链。用 subagent 起一个子代理,禁止用 subagent_fork(fork 会继承你的思路,失去独立性)。
从 references/prompt-templates.md 取模板 1,替换所有 <...> 占位符。四个不可省略的要素:
node <skill>/scripts/check-report.mjs <报告路径>。判红就把报告退回蓝军补证据——不许为了变绿去改总表措辞,那正是这台机检器要抓的动作。没有这一步,第 1 步的所有实证要求都只是自觉。拿到蓝军报告后,用新的 subagent(不要复用蓝军那个,避免它为自己的结论辩护)。
从 references/prompt-templates.md 取模板 2。除"验证整改是否落地"和"找新缺陷"外,还有第三个方向:
实测 的 🔴/🟠 逐条原样重跑,跑不出来即判「证据不成立」并降级。机检器只能验"贴的是不是一条真命令"(可执行程序名 + 参数),命令是否真跑过、跑出的是否是所贴的输出,只有第三方能判断——node fake.js --evidence 形状完全合法。所以这条约束靠两台机器 + 这个角色一起兜。check-report.mjs。只查别人、不查自己的角色,最后一定会退化成"别人的证据要命令、我的证据靠我说"。必须起一个全新的 subagent 作为"中立裁定方",不是蓝军,也不是第三方。
⚠️ 为什么不能复用蓝军做裁定:裁定的对象是"第三方对蓝军意见的复核"。若让蓝军自己裁定,它同时是当事人和法官——它会系统性驳回针对自己的批评。这与本 skill 第 1、2 步「禁止复用 agent」的核心原则直接冲突。 "蓝军不信第三方"这个设定通过提示词立场表达,不是通过复用 agent 身份实现。 降级选项:宿主子代理数量受限时,可用
send_message复用蓝军 agent,但必须在报告里声明"裁定方与蓝军为同一 agent,独立性已降级"。
从 references/prompt-templates.md 取模板 3。它有一项关键职责:
拿到合并清单后,由你(主代理)亲自改代码,不要外包——整改需要全局一致性判断。
整改纪律:
默认策略按项目可见性决定(选错会造成死链或泄密):
| 项目类型 | 默认做法 |
|---|---|
| 私有仓库 / 未发布 | 写入 docs/review/ 并加入 .gitignore,内部攻防记录不外泄 |
| 公开仓库 | 要么正常提交(作为质量流程展示),要么 gitignore 并且彻底清理引用 |
# internal review notes (kept locally, deliberately NOT published)
/docs/review/
命名约定(<version> 用版本号或 commit sha):
docs/review/
├─ BLUE-TEAM-REVIEW-<version>.md # 蓝军(含宿主/上游源码级证据)
├─ RESPONSE-<version>.md # 开发团队逐条回应(采纳/部分/推迟/驳回)
├─ THIRD-PARTY-REVIEW-<version>.md # 第三方独立复核(T 项 + 覆盖度稽核)
└─ ADJUDICATION-<version>.md # 中立裁定(对双方结论的最终裁定)
⚠️ 报告若被 gitignore,务必同时清理 README/CHANGELOG 里指向它们的链接——否则发布后是死链。
subagent_fork 起蓝军 → 继承你的思路,只会附和。scripts/check-report.mjs <报告.md> 机检这张总表,第三方负责重跑)。