GitHub PR Review Workflow 是一套用于处理 GitHub Pull Request 评审的完整工作流技能,基于 agynio/gh-pr-review 扩展。它指导从接收评审请求到解决评审线程的全过程。
用途
用于系统化地处理 GitHub PR 上的评审意见,包括阅读反馈、修改代码、回复评论和解决线程。
安装
如尚未安装 gh-pr-review 扩展,运行: gh extension install agynio/gh-pr-review 验证安装: gh pr-review --help
工作流概览
流程依次为:获取 PR 编号/仓库上下文 → 列出所有评审线程 → 分析反馈与评论 → 验证每条评论是否适用并解释决策 → 在代码中实施修复 → 运行测试(单元 + lint + 类型检查)→ 回复所有未关闭的评审线程并说明 → 最多等待 5 分钟以处理后续反馈 → 解决评审线程(或处理后续反馈)→ 提交并推送变更。
主要步骤
- 获取 PR 上下文:使用 gh pr view --json number 获取 PR 编号,git remote get-url origin 获取仓库信息。
- 列出评审线程:gh pr-review threads list --pr <PR_NUMBER> --repo <OWNER/REPO>,返回包含 threadId、isResolved、isOutdated、path、line 等字段的列表。若无评审线程,则用 gh pr view <PR_NUMBER> --comments --json author,comments,reviews 查看普通评论。
- 阅读与分析反馈:通过 gh api repos/<OWNER>/<REPO>/pulls/<PR_NUMBER>/comments 获取评论,读取涉及的文件,将反馈分为高、中、低优先级,并在改代码前验证每条评论的准确性。若建议不正确或过时,应详细解释为何未实施。
- 实施修复:编辑相关文件,遵循仓库约定(如 AGENTS.md),并为新逻辑添加或更新测试。
- 验证变更(关键):运行 bun run test(或 test:unit、test:e2e)、bun run typecheck、bun run lint,确保无错误。
- 提交并推送:git add、git commit(含清晰信息)、git push,最后确认工作树干净。
- 回复评审线程:使用 gh pr-review comments reply --pr <PR_NUMBER> --repo <OWNER/REPO> --thread-id <THREAD_ID> --body "...",回复应以 @reviewer 开头,说明改了什么,可用 heredoc 处理多行内容。普通评论可用 gh pr comment。
- 等待后续并解决线程:推送并回复后,最多等待 5 分钟(每次 sleep 60 并重新列线程,最多 5 次)。若有后续提示,按步骤 3-7 处理后再解决;若有确认,使用 gh pr-review threads resolve --pr <PR_NUMBER> --repo <OWNER/REPO> --thread-id <THREAD_ID> 解决线程。
- 最终确认:再次运行 gh pr-review threads list,确保所有线程 isResolved 为 true。
命令参考
gh pr-review threads list:列出所有评审线程 gh pr-review threads resolve:解决指定线程 gh pr-review threads unresolve:重新打开已解决线程 gh pr-review comments reply:回复评审线程 gh pr-review review:管理待处理评审 常用参数:--pr <number>、-R/--repo <owner/repo>、--thread-id <id>。
最佳实践
回复前仔细阅读所有评论并理解意图;实施修复时遵循现有代码模式并运行完整测试;回复时礼貌并说明改动;解决前确保问题已处理且测试通过。
故障排查
若提示 command not found,需安装扩展;若提示 must specify a pull request,需添加 --pr 或从 PR 目录运行;若 --repo 报错,需提供 owner/repo;若 --body 有 shell 转义问题,使用 heredoc;若线程未找到,检查 threadId 是否为准确的 GraphQL ID。
限制
该工作流依赖 gh CLI 和 gh-pr-review 扩展;部分命令示例中的测试脚本(如 bun run test)需项目支持。其他平台适配、具体价格与收费信息暂未提供。