跳转至

Rule — 独立 agent 审查(消除作者 anchor bias)

触发场景:写完任何 P0/P1 级别的核心代码后(调度、状态机、持久化、安全相关)。

为什么需要这个规则?

v0.10.44 的关键发现:

轮次 视角 发现 bug 数
v0.10.38 自我 review 第 1 轮 自己新代码 2
v0.10.40 自我 review 第 2 轮 MV3 持久化 3
v0.10.41 自我 review 第 3 轮 跨模块同款 1
v0.10.43 自我 review 第 4 轮 数据 / 错误处理 0(以为收敛)
独立 agent fresh-eyes 不带 anchor 3(含 1 个 P0)

根本原因:自己写的代码自己 review,下意识按"我当初的思路"看。 anchor bias 是认知偏见,不是技术问题 —— 无法用更多轮 review 消除,只能换视角。

具体案例(ISSUE-0028):

v0.10.40 的 doResumeFromInterception 末尾我写了 manageQueue()。 4 轮 review 我都路过这行,下意识认为"启动了调度"。 独立 agent 直接对比 resumeBatch:735-736 的 canonical 模式, 一眼看出 pumpScheduler/pumpPager 漏了。

触发条件

必须跑独立 agent 审查的场景:

场景
调度 / 状态机改动 doResumeFromInterceptionresumeBatchonInterception
MV3 持久化机制改动 新加 storage key、改 alarm 注册
安全相关改动 auth、cookies、token 处理
跨模块大改动 涉及 background + content + UI
修了 P0 bug 之后 确认没引入新问题

可选跑独立 agent 的场景:

  • 写完任何"看着很简单但真要写就发现 corner case 很多"的功能
  • 改了 1-2 个版本前的核心代码(自己已忘记当初思路)

用法(Agent tool)

Agent({
  description: "Independent fresh-eyes audit",
  subagent_type: "general-purpose",
  prompt: `
独立审查 <project path>(v<version>)。

## 上下文:我已经做过哪些 review(避免重复)

- <轮次 1>: <发现内容>
- <轮次 2>: ...

## 我可能的盲区(请重点查)

- <盲区 1>
- <盲区 2>
- ...

## 约束

- 不要扫 X(已有工具)
- 不要重复 Y issues
- 重点找:真 bug,不是 quality 改进
- 输出 < 800 字

## 输出格式

1. 真 bug 清单(高确定性)
2. 可疑但需更多上下文
3. 明确不是 bug 的复核

如果没找到真 bug,明确说"未找到,确认收敛"。不要凑数。
`
})

关键 brief 原则

  1. 明确告知前几轮做了什么 —— 避免 agent 重复挖你已挖过的角度
  2. 明确我可能的盲区 —— 让 agent 知道你看哪个少
  3. 限定约束(不要凑数 / 不要 quality 改进)
  4. 限制输出长度 —— agent 倾向长篇大论,强制 800 字内
  5. 要求"未找到就明确说" —— 否则 agent 可能为了交差列假命题

Trust but Verify

agent 给的 bug 清单 必须验证再修

# 对每个 agent 报告的 bug:
1. grep 验证位置(行号是否对得上)
2. 读上下文确认 agent 理解正确
3. 看是否真是 bug 还是 agent 误判
4. 修复后再跑一次扫描验证

agent 也会误判 / hallucinate。约 70-80% 命中率是合理预期。

流程图

写完 P0/P1 代码
自己跑 N 轮 review(按 MV3持久化陷阱清单 等 rule)
跑 pnpm scan:mv3 + pnpm compile + pnpm build
觉得"收敛了"
  ↓ ← 这里 anchor bias 最强
🔍 必须跑独立 agent fresh-eyes audit
agent 报告 → trust but verify → 修真 bug
重要的代码可以再跑一次(验证 anchor bias 是否消除)
进入版本发布

反模式

❌ "我自己 review 这么多轮了,肯定没问题"—— anchor bias 不在乎你 review 多少轮 ❌ "agent 报告了 5 个 bug,全修"—— 必须验证,agent 也会误判 ❌ "让 agent 提建议"—— 模糊的 prompt 给模糊的输出。明确"找真 bug" ❌ "让 agent 评 1-10 分"—— 没用,要的是具体可修的 bug

历史案例

  • [[0028-captcha-resume-missing-map-schedule|0028-拦截恢复漏调地图调度]] — 独立 agent 找到的 P0,我自己 4 轮 review 都漏看

元教训

技术规则(如 MV3持久化陷阱清单)可以靠工具自动扫,但认知偏见只能靠换视角。 独立 agent 是消除作者 anchor bias 的最低代价方式。

"你不知道你不知道的事" — 这就是 anchor bias 的本质。