gh-address-comments:用 Agent Skill 结构化处理 GitHub PR Review 评论

前言

Pull Request 合并前的 Code Review,往往是开发流程里最耗心力的一环。Reviewer 在 diff 上留下 inline 评论、在 Conversation 里补充说明、再发一条 Request changes——评论散落在 GitHub 网页的不同区域。开发者需要在浏览器和 IDE 之间来回切换,逐条对照「谁说了什么、改哪一行、是否已 resolved」,改完还要自己核对有没有漏掉某条 thread。

如果你已经在用 AI 编程 Agent 写代码、跑测试,PR 评论处理却仍是纯手工,上下文切换的成本就更高了。gh-address-comments 是 OpenAI 在 openai/skills 仓库 skills/.curated/ 目录下维护的精选 Skill,专门把「拉取 PR 评论 → 人工筛选 → Agent 改代码」这条链路标准化。它不是一键全自动吞掉所有 review,而是保留人工判断的同时,把机械部分交给 Agent 和 gh CLI 完成。

gh-address-comments 是什么

gh-address-comments 是一个基于通用 SKILL.md 格式的 Agent Skill,由 OpenAI 维护,归类为 Codex curated(精选)技能。其官方描述为:

Help address review/issue comments on the open GitHub PR for the current branch using gh CLI; verify gh auth first and prompt the user to authenticate if not logged in.

一句话定位:在当前 Git 分支关联的 open PR 上,借助 GitHub CLI(gh)拉取全部 review 与 issue 评论,经用户确认后再逐条修改代码。

它解决的核心痛点是:PR 评论来源多(Conversation 评论、Review 提交、inline review thread),手动汇总费时且易漏;Agent 若缺少固定流程,又可能误改需要人工裁决的反馈。该 Skill 用脚本统一抓取、用编号清单呈现、让用户勾选后再动手——属于典型的 human-in-the-loop 工作流设计。

说明:openai/skills 仓库 README 标注该仓库已 deprecated,后续 Codex 插件示例迁移至 openai/plugins。但 gh-address-comments 仍可从原仓库获取,安装方式与 SKILL.md 内容以仓库内文件为准。

核心功能与工作流程

官方 SKILL.md 将执行流程分为三步,并附带一个 Python 辅助脚本。

第一步:检查待处理评论

Agent 运行 Skill 目录下的 scripts/fetch_comments.py,拉取当前分支关联 PR 上的全部评论数据。脚本通过 gh api graphql 发起 GraphQL 查询,分页抓取三类内容:

  1. Conversation comments:PR 顶层的 issue 式讨论评论
  2. Reviews:Approve / Request changes / Comment 等 review 提交及其正文
  3. Review threads:inline 行级评论线程,包含 isResolvedisOutdated、文件路径、行号等元数据

脚本会先调用 gh auth status 确认 CLI 已登录,再通过 gh pr view --json number,headRepositoryOwner,headRepository 解析当前分支对应的 PR(支持跨仓库 PR)。输出为 JSON,可重定向保存:

python scripts/fetch_comments.py > pr_comments.json

第二步:编号汇总,请用户选择

Agent 将所有 review thread 和 comment 逐条编号,并为每条附上一句「若要修复,需要做什么」的摘要,然后询问用户:哪些编号需要处理?

这一步是设计亮点:并非 Agent 自行决定改什么。涉及架构取舍、产品语义、是否接受建议等需要人拍板的评论,可以留在清单里不选;明确的技术修正(命名、边界检查、测试补充等)则勾选后交给 Agent。

第三步:按选择修改代码

用户确认编号后,Agent 根据评论上下文理解 diff 位置与意图,在本地仓库应用对应修改。具体改法依赖 Agent 的代码理解能力,Skill 本身不硬编码修复逻辑——它规范的是流程,而非某一种固定补丁模板。

认证与权限前置条件

Skill 要求在使用前完成 gh 认证,并建议以提升权限运行 gh auth status(包含 workflow / repo 等 scope),确保后续 gh api graphql 不被沙箱或权限不足阻断。运行中若遇到 auth 或 rate limit 问题,应提示用户重新执行 gh auth login 后重试。Codex 环境下,官方还注明所有 gh 命令需要 elevated network access(网络访问提升权限)。

目录结构

官方仓库目录 可见,该 Skill 包含:

路径 说明
SKILL.md 技能定义与三步工作流
scripts/fetch_comments.py 通过 gh api graphql 拉取 PR 评论的辅助脚本
agents/ Agent 相关配置目录
assets/ 附加资源
LICENSE.txt 许可证文件

fetch_comments.py 是整套 Skill 的技术核心:它不依赖额外 Python 包,仅通过 subprocess 调用 gh,GraphQL query 覆盖 comment、review、reviewThread 三类节点并支持 cursor 分页,适合评论较多的大型 PR。

安装与启用

在 OpenAI Codex 中安装

根据 openai/skills READMECodex Skills 文档,curated 技能可通过 Codex 内置安装器一键拉取:

$skill-installer gh-address-comments

也可指定 GitHub 目录 URL 安装:

$skill-installer install https://github.com/openai/skills/tree/main/skills/.curated/gh-address-comments

安装后若未出现在技能列表,重启 Codex。在 CLI 中也可输入 /skills 浏览并手动选用已安装技能。Codex 的全局技能目录为 ~/.agents/skills/,仓库级为 .agents/skills/

在 Cursor 中使用

Cursor 支持通用 Agent Skills 格式。将 gh-address-comments 文件夹(含 SKILL.mdscripts/)放入以下任一目录即可被自动发现:

  • 项目级:.cursor/skills/gh-address-comments/.agents/skills/gh-address-comments/
  • 全局:~/.cursor/skills/gh-address-comments/~/.agents/skills/gh-address-comments/

常见做法是从官方仓库复制对应目录,或 sparse checkout 只拉取该 Skill 子路径。Cursor 启动时会扫描上述路径;也可在 Agent 对话中输入 /gh-address-comments 显式调用。

环境前置:GitHub CLI

无论在哪款 AI 编程工具中使用,都需要先安装并登录 GitHub CLI

# 一次性登录
gh auth login

# 确认状态(Skill 要求运行前验证)
gh auth status

当前分支必须已关联一个 open 状态的 PR;若分支尚无 PR 或 PR 已合并关闭,脚本无法解析目标 PR。

典型用法示例

场景:PR 收到多条 inline 评论

假设你正在功能分支 feat/oauth-refresh 上开发,同事在 PR 上留了 8 条 inline 评论和 2 条 Conversation 说明。在 Codex 或 Cursor Agent 对话中可以这样触发:

请使用 gh-address-comments 技能处理当前分支 PR 上的 review 评论
先拉取全部评论并编号汇总我再告诉你改哪几条

Agent 按 Skill 流程执行后,可能返回类似下面的摘要(示意):

1. [inline] src/auth/token.go:42  建议对 refresh token 做空值检查
2. [inline] src/auth/token.go:78  错误信息不应暴露内部 ID
3. [review] @reviewer  Request changes补充单元测试覆盖过期场景
...
请选择需要处理的编号 1,2,3)。

你回复 1,2,3 后,Agent 在本地修改对应文件,并可继续协助跑测试、提交 commit。

单独运行抓取脚本

即使不通过 Agent,也可在 Skill 目录下手动查看 PR 评论全貌:

cd skills/.curated/gh-address-comments
python scripts/fetch_comments.py | jq '.pull_request, (.review_threads | length)'

这在调试「Agent 是否漏了某条 thread」时很实用——JSON 里包含 isResolvedpathline 等字段,便于与 GitHub 网页对照。

适用场景与注意事项

适合使用的场景:

  • 当前分支已有 open PR,且 review 评论分布在多个 thread,需要系统化汇总
  • 希望 Agent 协助改代码,但想保留「选哪些评论要改」的控制权
  • 团队已统一使用 gh CLI,本地认证与仓库权限配置成熟
  • 与 Codex 其他 GitHub 类 Skill(如 gh-fix-ciyeet)组合,形成「改评论 → 修 CI → 提交 PR」的自动化链路

需要注意的限制:

  1. 非全自动:Skill 明确要求用户选择编号,不会静默修改所有 review 意见
  2. 依赖 open PR:脚本通过 gh pr view 解析当前分支 PR,无 PR 或 PR 已关闭则无法工作
  3. 修复质量取决于 Agent:Skill 规范流程,具体 patch 是否正确仍需人工 review 或 CI 验证
  4. 网络与权限:Codex 沙箱下 gh 可能需要提升权限;auth scope 不足会导致 GraphQL 查询失败
  5. 仓库迁移openai/skills 已标记 deprecated,长期分发可能转向 plugin 形态,但 Skill 内容与安装命令仍以官方仓库为准

在同属 OpenAI curated 系列的 Skill 中,gh-fix-ci 侧重修复 GitHub Actions 失败检查,yeet 侧重一键 stage/commit/push/开 PR;gh-address-comments 则聚焦 review 评论消化,三者互补,覆盖 PR 生命周期不同阶段。

小结

PR Code Review 的难点从来不只是「改几行代码」,而是找全评论、理解上下文、决定改不改。gh-address-comments 用 fetch_comments.py + gh GraphQL 把评论抓取标准化,用编号清单把决策权留给开发者,再让 Agent 执行选定的修改——在自动化与可控之间取得了平衡。

若你使用 Codex,可直接 $skill-installer gh-address-comments 安装;若使用 Cursor,将 Skill 目录放入 .cursor/skills/ 即可。官方资料:

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜