六、代码审查:让你的AI助手成为可靠的协作者

5 阅读4分钟

代码审查不是走过场。Superpowers的Requesting Code Review技能定义了审查的正确方式:对照计划的独立验证。

为什么需要AI参与代码审查

人会疲劳、遗漏、偏向。AI可以:

  • 保持一致性:每次审查标准相同
  • 对照计划:不是泛泛的"代码好不好"
  • 独立验证:不信任实现者的报告

但AI的审查需要正确的方法。不是"检查一下",是两阶段的独立验证。

两阶段审查

Superpowers定义两个阶段:

  1. Spec Compliance:对照实现计划,确认做了要求的事
  2. Code Quality:检查代码质量、清晰度、风险

顺序重要:先确认内容,再确认质量。因为如果内容错了,质量检查没有意义。

Spec Compliance审查

审查者(独立子代理)收到:

  • 任务描述:从计划中提取
  • 文件路径:涉及哪些文件
  • Spec要求:这个任务应该做什么

审查者不收到:

  • 实现者的报告(防止信任)
  • 其他审查者的结论(独立判断)

审查者独立阅读代码,对照任务要求:

Task spec: Implement addTodo in todoStore.js
Requirements:
- Function signature: addTodo(text)
- Returns: new task object with { id, text, completed: false }
- Generates unique ID

Reviewer findings:
- Function signature: addTodo(text) ✓
- Returns: { id, text, completed } ✓
- ID generation: uses incrementing counter ✓
- Extra feature found: logs "Task added" (not in spec)

Issue severity: Low (logging is benign but not requested)

审查者发现问题:添加了未请求的日志功能。这不是严重问题,但报告为"低严重性"。

严重性分级:

  • Critical:阻止合并,必须修复
  • High:应该修复,可能阻止合并
  • Medium:建议修复,不阻止合并
  • Low:可选修复,信息性

Code Quality审查

Spec compliance通过后,进入code quality检查:

Code quality findings:
- Code clear and minimal ✓
- Naming: addTodo, text parameter - clear ✓
- Error handling: what if text is empty? Not handled.
- Test coverage: test for addTodo exists ✓

Issue: Empty text not handled (Medium severity)

审查者发现:空文本没有处理。虽然spec没有明确要求,但这是明显的边界情况。

审查循环

如果发现问题,进入修复循环:

Implementation agent:
Received review feedback:
- Low: Remove "Task added" log (not in spec)
- Medium: Add empty text validation

Fixing:
1. Removed log statement
2. Added validation: if (!text) throw Error("text required")
3. Added test for validation

Self-review: Fixes complete.

审查者再次检查:

Re-review:
- Log removed ✓
- Validation added ✓
- Test added ✓

All issues resolved. Approved.

审查者的独立性

关键是审查者独立验证,不信任实现者的报告。

如果实现者说"I added validation",审查者不直接相信,而是读代码确认:

function addTodo(text) {
  if (!text) throw new Error("text required");  // Confirmed: validation exists
  ...
}

只有看到代码中确实有验证,审查者才确认通过。

这是防止AI自我合理化的机制。实现者可能说"我做了X",但实际可能做得不完全。审查者独立验证确保合规。

Receiving Code Review技能

当你收到审查反馈时,Superpowers有另一个技能:Receiving Code Review。

这个技能告诉你如何应对:

  • 不是表演式同意:"好的,我来修复"
  • 是技术验证:理解问题,验证问题确实存在,考虑修复方案

应对流程:

  1. 理解反馈:问题是什么?为什么是问题?
  2. 验证问题:读代码确认问题确实存在
  3. 评估严重性:Critical/High必须修复,Medium/Low可选
  4. 修复:如果决定修复,遵循TDD
  5. 回应:如果不同意,技术性解释(不是情绪性反驳)

如果审查反馈看起来不清楚或技术上可疑,你可以技术性讨论。

审查在流程中的位置

在Subagent-driven Development中,审查发生在每个任务完成后:

Task 1 complete → Review Task 1 → Issues → Fix → Re-review → Approved
Task 2 start → ... → Task 2 complete → Review Task 2 → ...

不是所有任务完成后一次性审查。是每个任务独立审查。

好处:

  • 问题发现早:不累积到最后
  • Context新鲜:审查者刚看到代码,记忆清晰
  • 修复容易:任务小,修复范围明确

结论

Superpowers的代码审查:

  • 两阶段:Spec Compliance → Code Quality
  • 审查者独立:不信任实现者报告
  • 严重性分级:Critical/High必须,Medium/Low可选
  • 审查循环:问题→修复→重新审查
  • 每个任务审查:不累积到最后

这不是泛泛的"代码好不好",是对照计划的独立验证。审查者有明确的任务描述,检查合规性。

AI参与审查不是替代人类,是辅助:保持一致性,独立验证,详细报告。最终决策是人类。

下一步

下一篇《Git Worktree:为什么隔离工作空间很重要》将展示:

  • Worktree如何创建隔离环境
  • 为什么干净的起点是必要的
  • 完成后如何处理worktree