K4.6.1 Task 4.6

同会话审查:0.3 条发现。独立实例:3.7 条。人类基线:4.1 条。

同会话自审在结构上就是无效的。模型在对话上下文中保留着生成推理,不愿意质疑自己的决定。任何 prompt 指令都克服不了这一点。

数据

方法每文件发现数
同会话 + “严格审查”0.2-0.5
独立实例3.7
人类基线4.1

差距是 7-18 倍。独立实例达到了人类表现的 90%。同会话审查只达到 5-12%。

为什么 Prompt 指令没用

“批判性审查”、扩展思考、角色扮演 prompt、最低发现数量要求——全都测试过了。最大改进:0.2 → 0.5 条发现。生成推理在对话上下文里。每一次评估都经过”我写这段是因为…”的滤镜——这个滤镜压制了真正的批评。

强制最低发现数量会产生编造的问题。模型为了凑数发明问题,而不是找到真的问题。

架构层面的修复

两次独立的 API 调用,上下文完全隔离:

调用 1(生成): claude -p "为 auth 模块写单元测试" > tests.ts
调用 2(审查): claude -p "审查 tests.ts 的正确性和覆盖缺口"

审查者只收到生成的输出和审查标准。没有生成 prompt,没有对话历史,没有设计目标。它根据代码本身的优劣来评估。

投入产出

独立审查增加额外的 API 时间(3 分钟 CI 预算中多出约 45 秒)。生产数据:独立审查以 $180 的额外 API 成本阻止了每月 $1,000 的 bug 损失——净省 $820/月。

审查者应该收到什么

  • 生成的代码/输出(被审查的产物)
  • 项目审查标准(来自 CLAUDE.md)
  • 测试执行结果(客观事实,不是主观推理)
  • 原始需求作为独立文档

绝不能收到:生成 prompt、对话历史、或任何关于代码为什么这样写的推理。


一句话总结: 自审偏差是结构性的而非行为性的——唯一的修复是一次独立 API 调用,审查者零生成上下文,达到 3.7 条发现而非同会话的 0.3 条。