---
title: "对抗性评审"
description: 防止懒惰"看起来不错"评审的强制推理技术
sidebar:
  order: 5
---

通过要求发现问题来强制进行更深入的分析。

## 什么是对抗性评审？

一种评审技术，评审者*必须*发现问题。不允许"看起来不错"。评审者采取怀疑态度——假设问题存在并找到它们。

这不是为了消极。而是为了强制进行真正的分析，而不是对提交的内容进行草率浏览并盖章批准。

**核心规则：**你必须发现问题。零发现会触发停止——重新分析或解释原因。

## 为什么有效

普通评审容易受到确认偏差的影响。你浏览工作，没有发现突出的问题，就批准了它。"发现问题"的指令打破了这种模式：

- **强制彻底性**——在你足够努力地查看以发现问题之前，不能批准
- **捕捉遗漏**——"这里缺少什么？"成为一个自然的问题
- **提高信号质量**——发现是具体且可操作的，而不是模糊的担忧
- **信息不对称**——在新的上下文中运行评审（无法访问原始推理），以便你评估的是工件，而不是意图

## 在哪里使用

对抗性评审出现在 BMad 工作流程的各个地方——代码评审、实施就绪检查、规范验证等。有时它是必需步骤，有时是可选的（如高级启发或派对模式）。该模式适应任何需要审查的工件。

## 需要人工过滤

因为 AI 被*指示*要发现问题，它就会发现问题——即使问题不存在。预期会有误报：伪装成问题的吹毛求疵、对意图的误解，或完全幻觉化的担忧。

**你决定什么是真实的。**审查每个发现，忽略噪音，修复重要的内容。

## 示例

而不是：

> "身份验证实现看起来合理。已批准。"

对抗性评审产生：

> 1. **高** - `login.ts:47` - 失败尝试没有速率限制
> 2. **高** - 会话令牌存储在 localStorage 中（易受 XSS 攻击）
> 3. **中** - 密码验证仅在客户端进行
> 4. **中** - 失败登录尝试没有审计日志
> 5. **低** - 魔法数字 `3600` 应该是 `SESSION_TIMEOUT_SECONDS`

第一个评审可能会遗漏安全漏洞。第二个发现了四个。

## 迭代和收益递减

在处理发现后，考虑再次运行。第二轮通常会捕获更多。第三轮也不总是无用的。但每一轮都需要时间，最终你会遇到收益递减——只是吹毛求疵和虚假发现。

:::tip[更好的评审]
假设问题存在。寻找缺失的内容，而不仅仅是错误的内容。
:::

---
## 术语说明

- **adversarial review**：对抗性评审。一种强制评审者必须发现问题的评审技术，旨在防止草率批准。
- **confirmation bias**：确认偏差。倾向于寻找、解释和记忆符合自己已有信念的信息的心理倾向。
- **information asymmetry**：信息不对称。交易或评审中一方拥有比另一方更多或更好信息的情况。
- **false positives**：误报。错误地将不存在的问题识别为存在的问题。
- **diminishing returns**：收益递减。在投入持续增加的情况下，产出增长逐渐减少的现象。
- **XSS**：跨站脚本攻击（Cross-Site Scripting）。一种安全漏洞，攻击者可在网页中注入恶意脚本。
- **localStorage**：本地存储。浏览器提供的 Web Storage API，用于在客户端存储键值对数据。
- **magic number**：魔法数字。代码中直接出现的未命名数值常量，缺乏语义含义。
