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/ 即可。官方資料:

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

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

小夜