PR审查
审查PR的流程。审查规则(语气、评论分类、决策流程、不应做的事)位于Playbook的“PR审查”部分;本技能涵盖的是如何实施。不要在此重述规则,而是直接应用它们。Playbook的“共享标准”在整个过程中适用(简洁、无AI废话、验证而非断言、绝不捏造)。
审查前
- 先索要工单。根据Playbook的强制第一步,在获取工单之前不要获取diff或进行任何分析。工单设定了工作类型(功能 vs 跟进 vs 调查)和验收标准,这些会改变审查方式。
- 确定PR:如果没有给出,请询问PR编号/URL。
收集上下文
- 使用GitHub CLI获取diff和元数据:
gh pr view <pr>和gh pr diff <pr>。 - 对于调查类型的PR,还需检查
docs/investigations/目录中的预期格式。 - 当行为依赖于周围代码时,要完整阅读变更文件,而不仅仅是diff片段。
审查
逐文件遍历diff。应用Playbook的“PR审查”部分:
- 运行Playbook检查清单(验收标准、编译/测试失败、调用者是否更新、测试覆盖率、调查类PR的证据)。
- 根据Playbook将每个发现分类为阻塞、微小或疑问。
- 使用Playbook的决策流程判断每个观察是否值得发表评论。
- 根据工单类型确定范围规则(跟进:在此解决所有问题;功能:重构也有效)。从工单确认类型。
- 遵循Playbook的“验证而非断言”:在重复他人说法之前自己进行检查。运行
gh pr checks <pr>检查CI,在仓库中grep删除的符号。PR描述是作者的声明,而不是证据。 - 遵循Playbook的“不得静默删除现有行为”:未确认的行为回归是一个阻塞性的发现,即使作者在PR描述中提到了它。
输出
遵循Playbook的“PR审查 > 格式”部分。直接在聊天中输出审查结果(除非用户要求,否则不要输出为文件),格式为一行裁决后跟发现项。这不是散文、对话日志或“已收集上下文”/“初步审查”等章节。每个发现项精确为:一个位置+代码引用行、一个可复制的围栏块形式的评论、以及原因说明。具体来说,一个发现项如下所示:
### 阻塞
`internal/adapters/users/adapter.go:281`
```go
_, err := u.providersClient.Update(ctx, request)
```
评论(粘贴到PR中):
这丢弃了这些写入所依赖的最终一致性重试。Core到Users的延迟导致 NotFound 错误,而新的仅临时错误策略不会重试,因此写入会立即失败。
原因:验收标准#3要求确认没有路径依赖于重试应用级错误;该路径确实依赖于重试,而diff在未确认窗口期已消失的情况下移除了它。
````
每个发现重复这样一个块,并按 `### 阻塞` / `### 微小问题` / `### 疑问` 分组(省略空分组)。“评论”后的围栏块是用户唯一需要复制到GitHub的内容;其余内容仅供导航。如果一切正常,仅输出裁决行。
## 发布评论(仅在要求时)
如果用户希望直接发布评论而不是在聊天中草拟,请先确认,然后使用 `gh pr review` / `gh pr comment`。默认在聊天中草拟。