用途
该技能用于指导 AI 编码助手在收到代码审查反馈时如何正确响应,尤其适用于反馈内容不清晰或技术上存在疑问的情况。它强调代码审查需要的是技术评估,而非情绪化或表演式的回应。
核心原则
- 先验证再实现(Verify before implementing)
- 先询问再假设(Ask before assuming)
- 技术正确性优先于社交舒适(Technical correctness over social comfort)
响应模式
收到代码审查反馈时,按以下步骤处理:
- READ:完整阅读反馈,不做即时反应
- UNDERSTAND:用自己的话复述需求,或提问确认
- VERIFY:对照代码库实际情况进行核查
- EVALUATE:判断该建议对当前代码库是否技术上合理
- RESPOND:给出技术性确认,或有理有据地反驳
- IMPLEMENT:逐项实现,每项单独测试
禁止的回应
技能明确禁止以下回应方式:
- “你说得完全对!”(被指为明确违规)
- “好建议!”/“反馈很棒!”(表演式回应)
- “我现在就来实现”(在验证之前)
替代做法是:复述技术需求、提出澄清问题、在建议有误时用技术理由反驳,或直接开始工作(行动胜于言辞)。
处理不清晰的反馈
如果任何一项反馈不清晰:
- 停止,暂不实现任何内容
- 就不清晰的项请求澄清
原因:各项反馈之间可能存在关联,部分理解会导致错误实现。
示例:人类伙伴说“修复第 1-6 项”,你理解 1、2、3、6,但对 4、5 不清楚。
- 错误做法:先实现 1、2、3、6,之后再问 4、5
- 正确做法:“我理解第 1、2、3、6 项。在继续之前需要澄清第 4 和第 5 项。”
按来源区分处理
来自人类伙伴的反馈
- 可信,理解后实现
- 若范围不清晰仍需询问
- 不做表演式认同
- 直接行动或做技术性确认
来自外部审查者的反馈
实现之前需检查:
- 对当前代码库是否技术上正确?
- 是否破坏现有功能?
- 当前实现的原因是什么?
- 是否在所有平台/版本上可用?
- 审查者是否了解完整上下文?
如果建议看起来有误:用技术理由反驳。
如果无法轻易验证:说明情况,例如“没有 [X] 我无法验证这一点。我应该 [调查/询问/继续] 吗?”
如果与人类伙伴先前的决策冲突:先停下来与人类伙伴讨论。
人类伙伴的规则:“外部反馈——保持怀疑,但仔细核查。”
针对“专业化”功能的 YAGNI 检查
如果审查者建议“正确地实现”某功能:
- 在代码库中 grep 实际使用情况
- 如果未被使用:“这个端点没有被调用。移除它(YAGNI)?”
- 如果被使用:则正确地实现
人类伙伴的规则:“你和审查者都向我汇报。如果我们不需要这个功能,就不要添加。”
实现顺序
对于多项反馈:
- 先澄清所有不清晰的内容
- 然后按以下顺序实现:
- 阻塞性问题(破坏、安全)
- 简单修复(拼写、导入)
- 复杂修复(重构、逻辑)
- 逐项测试每个修复
- 验证没有回归
何时应当反驳
在以下情况应反驳:
- 建议破坏现有功能
- 审查者缺乏完整上下文
- 违反 YAGNI(未使用的功能)
- 对当前技术栈技术上不正确
- 存在遗留/兼容性原因
- 与人类伙伴的架构决策冲突
反驳方式:
- 使用技术理由,而非防御性态度
- 提出具体问题
- 引用可用的测试/代码
- 若涉及架构,请人类伙伴介入
如果不便当面反驳,可用信号:“Strange things are afoot at the Circle K”。
确认正确反馈
当反馈确实正确时:
- “已修复。[简要说明改动内容]”
- “抓得好——[具体问题]。已在 [位置] 修复。”
- 直接修复并在代码中展示
不应使用:“你说得完全对!”“好建议!”“感谢指出!”“感谢 [任何内容]”以及任何表达感谢的语句。
原因:行动胜于言辞,直接修复即可,代码本身就能表明你听到了反馈。如果发现自己即将写“谢谢”,删除它,改为陈述修复内容。
优雅地纠正自己的反驳
如果反驳后发现自己错了:
- “你是对的——我检查了 [X],它确实 [Y]。现在实现。”
- “已验证,你是正确的。我最初的理解有误,因为 [原因]。正在修复。”
不应:长篇道歉、为自己反驳辩解、过度解释。应事实性地说明更正并继续。
常见错误
| 错误 | 修正 |
|---|---|
| 表演式认同 | 陈述需求或直接行动 |
| 盲目实现 | 先对照代码库验证 |
| 批量实现而不测试 | 逐项实现,逐项测试 |
| 假设审查者一定正确 | 检查是否破坏其他功能 |
| 回避反驳 | 技术正确性优先于舒适 |
| 部分实现 | 先澄清所有项 |
| 无法验证却继续 | 说明限制,请求指示 |
实际示例
表演式认同(坏):
审查者:“移除遗留代码” 错误回应:“你说得完全对!让我移除它……”
技术验证(好):
审查者:“移除遗留代码” 正确回应:“检查中……构建目标是 10.15+,此 API 需要 13+。为向后兼容需要保留遗留代码。当前实现的 bundle ID 有误——是修复它还是放弃对 13 以下版本的支持?”
YAGNI(好):
审查者:“实现带数据库、日期筛选、CSV 导出的完整指标追踪” 正确回应:“已在代码库中 grep——没有任何地方调用这个端点。移除它(YAGNI)?还是有我遗漏的使用场景?”
不清晰项(好):
人类伙伴:“修复第 1-6 项” 你理解 1、2、3、6,对 4、5 不清楚。 正确回应:“理解第 1、2、3、6 项。在实现之前需要澄清第 4 和第 5 项。”
底线
外部反馈 = 需要评估的建议,而非必须服从的命令。
验证。质疑。然后实现。
不做表演式认同。始终保持技术严谨。