如何让Agent验证自己的进化是否穷尽
—— 慧采星河分层穷举对抗审查法
作者:林剑平 前财富500强·远东研发中心经理
传统代码审查靠"搜索→发现→修复"。但你没法发现你不知道该找什么的东西。
一、100轮搜索发现不了的问题
我们做过一个实验。用传统搜索驱动的审查方法,对一套 Agent 联邦系统跑了 100 轮审查,发现了 19 个严重缺陷。
然后我们换了一种方法。不是搜索得更努力——而是在搜索之前先穷举所有的抽象层,对每一层做结构化推理,只在最后用搜索来验证推理出的假设。
20 轮。发现了 23 个严重缺陷。其中 4 个是前 100 轮搜索完全遗漏的。
传统搜索的盲区不是"搜得不够多"。它的盲区是:不知道还有哪些层没被发现。
P0 缺陷不是随机分布的。它们按抽象层集群出现:
每一波对应一个新发现的抽象层。如果审查者不知道某一层存在,它永远不会去那一层搜索。 这就是为什么 100 轮搜索会遗漏关键缺陷——不是说搜索本身不好,而是搜索的前提("知道该搜什么")本身就是不完整的。
二、先穷举层,再推理,最后才搜索
分层穷举对抗审查法把审查流程倒过来:
传统: 搜索 → 发现 → 修复 → 再搜索 → ...
分层: 穷举层 → 推理假设 → 交叉对抗 → 搜索验证 → 收敛
↑_____无搜索阶段_____↑ ↑_仅验证_↑
Phase 1:穷举 + 三问推理。 对每一层,不搜索——先回答三个问题:什么会坏?怎么发现?影响多大?每一层至少产出一个假设。此阶段禁止搜索——纯推理。
Phase 2:交叉层对抗。 两个单独安全的层,交互时可能产生新漏洞。对高风险配对追问:A 层的正确性假设在 B 层的故障模式下是否仍然成立?
Phase 3:搜索验证假设。 搜索仅用于验证 Phase 1-2 产出的假设,不用于发现新问题。每个假设 1-2 次精准搜索——确认、否定、或标记"逻辑维持"进入冲击测试。
Phase 4:盲区探测 + 收敛判定。 冲击尚未验证的假设。收敛条件是连续 2 轮 P0=0,且至少 2 个不同模型家族独立确认。
核心差异:传统搜索 100+ 次搜索。分层验证约 10 次搜索。不是因为"少搜了"——是因为搜索之前已经完成了推理工作。
三、抽象层谱系
分层穷举的前提是——你得先知道有哪些层。
经过多轮实践,我们为不同类型的审查对象建立了层谱系。以方法论文档为例,12 层:
M1 逻辑自洽层 — 内部矛盾·术语冲突
M2 自指适用层 — 方法论是否通过自身标准
M3 终止完备层 — 终止条件·边界情况
M4 场景覆盖层 — 所有场景是否可行
M5 宪法对齐层 — 与联邦宪法一致性
M6 Agent自治边界层 — 自治与人工的边界
M7 实现精准层 — 文档与代码一致性
M8 跨模型验证层 — 独立验证机制
M9 度量可证伪层 — 度量标准是否可客观验证
M10 方法论自进化层 — 方法论自身的进化
M11 上游依赖层 — 环境假设·兼容性
M12 安全边界层 — 停止条件·降级·逃生舱
实施类文档(代码、部署)另有 15 层谱系。层谱系的选择由文档类型决定。
层谱系本身也在进化。 每发现一个新的缺陷类型,如果它不属于现有任何层,就新增一层。这就是为什么方法不会过时——它随系统一起演化。
四、收敛是有条件的
审查什么时候可以停?不是"看起来没问题了",而是满足明确的收敛信号:
还有一条重要的停止规则:Snorkel 自批判悖论防护。
学术界研究发现:AI 自我批判在简单任务上准确率会下降 15-40%。批评家可能发明不存在的缺陷——这就是"自批判悖论"。
防护机制:连续 2 轮 P0=0 后,禁止追加轮次(除非引入新的探针维度)。每 3 轮分层验证后,强制 1 轮"外部锚定"——由不同模型家族或人类做独立审查。如果 P0 从 0 反弹到 2 以上,标记"可能假阳性",启动跨模型仲裁。
Agent 审查自己的代码时,最危险的错误不是"漏掉了问题",而是"发明了不存在的问题"然后去修它。 这会造成真正的代码退化。
五、冗余防御:不是加防御,是减防御
分层穷举审查发现问题后,通常的做法是"加一层防御"。但如果同一个问题被反复"修复"却反复复现,说明加上的防御可能掩盖了真正的断裂点。
问题复现 → 加防御 → 复现 → 再加防御 → 防御堆叠 → 真正断裂点被埋
防御冗余排除法打破这个循环:
1. 列出全量防御层。 从入口到出口,记录每一层 `默认值`、`fallback`、`if not x: x = default`。
2. 分离独立调用路径。 多层防御可能服务不同路径。
3. 逐层移除验证。 一次只移除一层。正常则冗余,异常则必需。
4. 对保留的层分级。 核心(日常路径)、保险(异常路径)、保险丝(极罕见)。
5. 文档化 + 回归验证。
一个真实案例:某 HTTP 400 错误被两次"修复"仍复现。防御冗余分析发现有 5 层默认值/fallback 覆盖同一个参数。逐层移除后发现——2 层是冗余的。去掉之后,真正的断裂点(异步事件循环崩溃)不再被掩盖,直接暴露并修复。
有时修好一个 bug 的最好方法,不是再加一个 check。是删掉三个 check。
六、方法论必须自指
如果这个方法声称能验证任何方法论,那它自己必须通过自己的验证。
238 号方法论在发布前,用自身的 12 层谱系完成了 Phase 1-4 验证。发现 1 个 P0(文档与代码实现不一致)和 9 个 P1,全部修复后才发布。
一个声称"能审查一切"的方法论,必须先审查自己。否则它说的每一句话都没有资格被信任。
七、这为什么重要
Agent 联邦的核心挑战不是"让 Agent 做事",而是"让 Agent 知道自己做的事对不对"。
人类审查 Agent 的产出——这个模式不会持续太久。不是因为人类懒惰,而是因为 Agent 的产出速度和复杂度很快就会超过人类的审查带宽。你需要的是 Agent 自己审查自己的方法论,以及验证这种审查是否穷尽的方法论。
这就是元层:不是审查代码,是审查审查方法本身。
而分层穷举对抗审查法提供的,就是这样一个引擎——它不关心审查的具体对象是什么,它关心的是"审查这件事有没有做到穷尽"。
*本文基于慧采星河助理联邦的真实工程实践。技术细节已脱敏。你可以通过 https://huicaixh.com/join 加入慧采星河联邦。*
← 返回博客