开发完成后的三方对抗式代码评审闭环:蓝军(敌意审查,须给证据链)→ 第三方(独立审计,不信双方文档、只读代码,专找"修改引入的新缺陷"并稽核蓝军漏审的维度)→ 中立裁定(逐条采纳/驳回、审查双方共同前提)。当用户说"蓝军评审""第三方复核""对抗性审查""红蓝互搏""三方评审""交叉验证""发布前审查""帮我挑刺""adversarial review""red team review""pre-release review""critique this""find bugs in my code"或要求提升代码质量、准备发布前把关时使用。也适用于用户想把当前会话变成"多个 Agent 互搏"来提升代码水平的场景。
89%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
单人或单 AI 写代码,最大的风险不是"不会写",而是:
这三个问题靠"再仔细看一遍"解决不了——写代码的人和审代码的人是同一个,就一定会为自己辩护。只能靠结构化的对抗关系:
| 角色 | 立场 | 硬性约束 |
|---|---|---|
| 蓝军 | 敌意审查——假设代码会出事,去证明 | 每条结论必须附证据链(文件:行号 / 实测命令 / 上游源码);🔴/🟠 必须是实测结论,仅凭推理最高 🟡;禁止空话 |
| 第三方 | 独立审计——不信任任何一方文档,直接读代码 | 逐条复核"声称修了的是否真修了"、专找修改引入的新缺陷、并稽核蓝军漏掉了哪些维度 |
| 中立裁定 | 对双方结论逐条采纳 / 驳回 / 改级 | 必须由与蓝军不同的 agent 担任;当事人不能当法官 |
关键不是"多找两个 AI 看看",而是顺序与互不信任:第三方不信开发团队,裁定方不信蓝军和第三方。任一环节缺失,闭环就破。
references/review-dimensions.md —— 完整质量维度清单(19 项)。第 0 步按改动类型选维度时必须读,否则审查会漏掉大片区域。references/prompt-templates.md —— 三个角色的完整提示词模板 + 占位符约定 + 「设计要点」表(改模板前必读)。第 1/2/3 步派发子代理时直接取用,不要临时自编。references/quickstart.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> 机检这张总表,第三方负责重跑)。iflytek/skillhub
326cbd6
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.