AI 生成代码的多专家对抗性审查系统:从 5 次翻车到机械门控 #30
xg-gh-25
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
AI 生成代码的多专家对抗性审查系统:从 5 次翻车到机械门控
问题:信心 ≠ 正确性
如果你用过 AI 编程 agent,你一定见过这个模式:
这真实发生在我们身上。我们的自治 pipeline —— 从需求到 PR 的完整生命周期 —— 产出了一个 Voice Conversation Mode 功能,在所有 9 个阶段获得完美评分。每个单元测试都是绿色的。功能完全不能用。
根因: builder agent 在 review 时共享了自己的假设。"我知道这段代码是正确的,因为是我写的" —— 和人类 self-review 的盲区完全一样。
这不是一次性事故。25 天内发生了 5 次。每次都有不同的合理化理由。每次结果都一样。
洞察:Self-Review 是结构性缺陷
当构建代码的同一个上下文也审查它时,特定类别的 bug 变得不可见:
解决方案不是"更仔细地 review"。从你自己的上下文内部发现自己的假设,这在结构上就不可能。 你需要一双全新的眼睛 —— 字面意义上的全新上下文,对 builder 意图零了解。
架构:多专家对抗性审查
我们用一个 Review Army 替换了单 agent self-review —— 多个领域专家并行执行,每个都有隔离的上下文和聚焦的专业知识。
7 个专家
每个专家具有:
为什么多专家优于单一审查者
单一审查者同时检查 Security + Performance + Correctness + API Contract 会遭受注意力稀释。每个领域需要根本不同的思维模式:
并行的专家加上隔离的上下文,产出更深、更高置信度的发现 —— 因为他们不需要在思维模式之间切换。
全新上下文原则
每个 sub-agent 接收:
他们不接收:
这种隔离是关键创新。当正确性专家阅读代码时,他们像陌生人一样阅读它 —— 和生产环境用户遇到功能的方式一样。Builder 的假设(如"我已经验证这个接线能工作")不会传递。
Profile 感知的分层
不是每个变更都需要全军出动:
关键覆盖: 如果 diff 超过 100 行,无论 profile 如何强制使用 full tier。一个 382 行的 "bugfix" 在对抗性审查层面不是 bugfix —— 它是一个跨模块迁移,涉及并发、import 顺序和死代码风险。
置信度门控
不是所有发现都一样重要。我们用置信度评分过滤噪音:
多专家确认(2+ 专家发现同一问题)置信度 +1 并标记为 "MULTI-SPECIALIST CONFIRMED" —— 这些是最高信号的发现。
红队层
红队是一个条件触发、串行执行的专家,只在以下情况触发:
与其他专家不同,红队接收所有专家的合并结果 —— 它寻找他们集体遗漏的问题。它的工作是系统级对抗:不是"代码正确吗?"而是"考虑到专家已经检查的一切,这个系统在生产中可能如何失败?"
Meta-Review:Pipeline 结构性看不到的
专家通过后,一个 Meta-Review sub-agent 寻找代码审查无法捕获的部署上下文 bug:
它分析 5 个维度:
这一层存在是因为我们的 pipeline 持续捕获代码正确性问题,但遗漏环境特定 bug:PyInstaller 二进制中的
sys.executable、daemon 中未设置的$HOME、per-session hook 中的 O(n) 扫描。机械门控:为什么文字规则失败了
不舒服的事实:我们构建了这个系统,详细记录了文档,然后跳过了 5 次:
基于文本的执行("你必须运行对抗性审查")每一次都失败了。Agent 用听起来完美的理由合理化绕过。
修复方式:物理上无法绕过的机械门控。
Pipeline 字面上无法完成 —— 除非有证据表明对抗性审查以正确的 tier 运行过。这不是提醒 —— 这是一个代码路径,拒绝写入
status: completed。反合理化门控
在 deliver 阶段的顶部(在"跳过"决定发生之前),放置对质检查点:
为什么位置重要: 放在文件末尾的反合理化表格永远不会被读到。跳过的决定发生在第 ~16 行。反驳在第 ~750 行。通过将门控放在第 2 步和第 3 步之间,agent 字面上无法跳过它而不阅读它。
结果
每次对抗性审查运行,都发现了 bug:
每次跳过对抗性审查,bug 都发布到了生产。
模式是明确的。对抗性审查门控是 pipeline 中最有效的质量机制 —— 比单元测试、集成测试或 self-review 的组合都更有效。
关键设计原则
适用性
这个模式适用于任何 AI 编程 pipeline,当:
核心洞察可以泛化:任何生产者也评判质量的系统,都会系统性地遗漏生产者假设 bug。 修复方式是结构性分离 —— 不是更好的 prompt,不是更多规则,而是物理上独立的评估上下文。
构建于 SwarmAI —— 一个 AI 指挥中心,一个 builder + AI 以团队规模运作。对抗性审查系统每周处理约 15 次 pipeline 运行,平均每次捕获 3.2 个所有其他质量门控遗漏的发现。
欢迎讨论: 在你的 AI 编程工作流中,你如何处理"测试通过但功能损坏"的问题?
Beta Was this translation helpful? Give feedback.
All reactions