用途
Explain This PR 用于阅读一个 GitHub Pull Request,理解它改动了什么,并写出一段通俗英语的解释,然后将其作为 PR 评论发布,让审查者能立即获得上下文。
主要能力
- 支持三种输入方式:GitHub PR 链接(如 https://github.com/owner/repo/pull/123)、当前仓库中的 PR 编号(如 #123),或关键词 "current" 表示使用当前分支对应的 PR。
- 通过 gh 命令获取 PR 元数据,包括编号、链接、标题、正文、作者、基础分支、头分支、新增行数、删除行数、变更文件数、提交、标签、状态以及是否为草稿。
- 获取 PR 的代码差异(diff)。若差异超过 400 行,则读取 --stat 摘要和差异的前 200 行。
- 获取已有评论,以避免重复已有内容。
- 撰写两段式解释:第一段说明技术层面做了什么(具体文件、函数、系统,前后对比,具体数字,主动语态、现在时);第二段说明业务或产品影响(谁受益、解决什么问题或降低什么风险,若提交信息中包含原因则使用该上下文,若没有明确原因则省略该段)。
- 对解释进行自检:第一段是否点名了差异中的具体文件或函数、是否编造了指标或结果、是否使用了破折号、是否有填充短语、总字数是否低于 150 词、若无明确原因是否省略了第二段。
- 将解释作为 PR 评论发布,通过 stdin 传递正文以安全处理反引号、引号和换行。
- 若用户要求 "output only",则仅在代码块中呈现解释,供手动复制粘贴,不发布。
使用方式
- 检查设置:确认 gh 已认证(gh auth status),若未认证则运行 gh auth login 并按提示操作。确认用户提供了 PR 链接、PR 编号或 "current";若没有输入,则询问用户。
- 获取 PR 上下文:使用 gh pr view 获取元数据;若 isDraft 为 true,提示用户该 PR 仍为草稿,解释基于当前状态。使用 gh pr diff 获取差异;若超过 400 行,则读取摘要和前 200 行。获取已有评论。
- 撰写解释:按规则写两段,总字数低于 150 词。
- 自检:发布前检查各项规则,修正违规之处。
- 发布为 PR 评论:向用户展示解释,询问是否准备发布或需要先编辑。确认后通过 stdin 传递正文发布。发布后提示评论已添加并给出链接。若用户说 "output only",则仅在代码块中呈现解释。
适用场景
- 需要快速理解一个 PR 做了什么以及为什么这样做时。
- 希望为审查者提供即时上下文时。
- 需要将解释作为 PR 评论发布时。
限制
- 需要 gh 已认证。
- 需要用户提供 PR 链接、PR 编号或 "current"。
- 若差异超过 400 行,仅读取摘要和前 200 行。
- 解释总字数低于 150 词。
- 若差异或提交信息中没有明确的原因,则省略第二段,不进行猜测。
- 不编造结果,仅陈述差异或提交信息中直接可见的影响。
- 若 PR 是纯重构且无行为变化,需明确说明。