SuperAPI AI 工具集

receiving-code-review

编程与开发

查看项目

更新于 10-16 02:17

技能介绍

用途

该技能用于指导 AI 编码助手在收到代码审查反馈时如何正确响应,尤其适用于反馈内容不清晰或技术上存在疑问的情况。它强调代码审查需要的是技术评估,而非情绪化或表演式的回应。

核心原则

  • 先验证再实现(Verify before implementing)
  • 先询问再假设(Ask before assuming)
  • 技术正确性优先于社交舒适(Technical correctness over social comfort)

响应模式

收到代码审查反馈时,按以下步骤处理:

  1. READ:完整阅读反馈,不做即时反应
  2. UNDERSTAND:用自己的话复述需求,或提问确认
  3. VERIFY:对照代码库实际情况进行核查
  4. EVALUATE:判断该建议对当前代码库是否技术上合理
  5. RESPOND:给出技术性确认,或有理有据地反驳
  6. 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)?”
  • 如果被使用:则正确地实现

人类伙伴的规则:“你和审查者都向我汇报。如果我们不需要这个功能,就不要添加。”

实现顺序

对于多项反馈:

  1. 先澄清所有不清晰的内容
  2. 然后按以下顺序实现:
    • 阻塞性问题(破坏、安全)
    • 简单修复(拼写、导入)
    • 复杂修复(重构、逻辑)
  3. 逐项测试每个修复
  4. 验证没有回归

何时应当反驳

在以下情况应反驳:

  • 建议破坏现有功能
  • 审查者缺乏完整上下文
  • 违反 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 项。”

底线

外部反馈 = 需要评估的建议,而非必须服从的命令。

验证。质疑。然后实现。

不做表演式认同。始终保持技术严谨。