PR 和代码评审
目的
定义代码如何安全进入 main。
工具
| 需要 | 工具 |
|---|---|
| Pull request | GitHub |
| Required checks | GitHub branch protection |
| Review owner | CODEOWNERS |
| CI | GitHub Actions |
| Issue link | Linear / GitHub integration |
PR 模板
使用 templates/PR模板-pr-template.md。
每个 PR 必须说明:
- 改了什么。
- 为什么改。
- 如何测试。
- 风险是什么。
- 如何回滚。
- UI/API 行为变化时提供截图或证据。
还必须能看出闭环角色:
| 字段 | 用途 |
|---|---|
| Driver | 谁负责把 PR 推到 merge / close / retry |
| Reviewer | 谁负责代码和风险判断 |
| Approver | 谁负责产品、上线或风险接受 |
| Operator | 如需发布,谁负责部署和回滚 |
评审门禁
| 变更类型 | Review 要求 |
|---|---|
| 小 bug fix | 1 个 reviewer + CI |
| 用户可见功能 | 1 个 reviewer + 产品验收 |
| 数据库 migration | reviewer + migration plan |
| Auth/security/payment/production config | tech lead approval |
| 跨模块架构变化 | 先 RFC/ADR,再实现 |
| Runtime/Agent 权限变化 | platform owner approval |
评审结论只能是四种之一:
| 结论 | 含义 |
|---|---|
| Approve | 可以进入下一步 |
| Request changes | 需要修改后再审 |
| Blocked | 需要外部决策、信息或依赖 |
| Close / reject | 不再继续,必须记录原因 |
不要让 PR 长期处于“大家都看过但没人拍板”的状态。
三角色 PR 判断
| 角色 | 在 PR 中必须能看到 | 常见结论 |
|---|---|---|
| 产品负责人 | 用户可见变化、截图 / 录屏、验收结论、反馈入口 | 通过验收 / 需要改产品行为 |
| 技术负责人 | scope、架构影响、测试、风险、回滚 | approve / request changes / block |
| 平台 / 资深工程师 | CI、命令输出、migration、发布和监控入口 | 补检查 / 补脚本 / 补文档 |
分支保护
Main 分支应要求:
- PR review。
- Required CI checks。
- 禁止 force push。
- 必要时要求分支 up-to-date 或使用 merge queue。
- 敏感路径使用 CODEOWNERS。
评审者检查表
- 是否解决了正确问题?
- Scope 是否足够小?
- 是否尊重模块边界?
- 测试是否有意义?
- 生产风险是否清楚?
- 是否能回滚?
- Secret 和权限是否处理正确?
新人 PR 额外建议
新人前几个 PR 应优先小 scope,并在 PR 描述里多写一点上下文:
- 关联任务和验收标准。
- 自己理解的改动范围。
- 改了哪些关键文件。
- 跑了哪些检查,结果是什么。
- 哪些地方不确定,希望 reviewer 重点看。
Reviewer 对新人 PR 不只看代码,也要指出项目约定、测试习惯和文档入口。能写进文档的反馈,不要只留在一次性评论里。
后续 Agent 就绪要求
这一节在人类 PR review 已经能稳定执行后再看。
Agent 生成的 PR 也必须满足同一模板。Agent 可以生成证据,但最终 approval 由人类 reviewer 负责。
Agent PR 额外要求:
- 说明输入 task 和 scope。
- 列出 Agent 改过的文件。
- 附上测试命令和结果。
- 标出未验证风险。
- 给出 human reviewer 的下一步选项:merge、request changes、retry、close。
下一步阅读
读完或填完这份文档后,通常继续看:
- 33-测试和质量-testing-quality.md:PR 评审前后都要确认测试和质量证据。