前言¶
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 查詢,分頁抓取三類內容:
- Conversation comments:PR 頂層的 issue 式討論評論
- Reviews:Approve / Request changes / Comment 等 review 提交及其正文
- Review threads:inline 行級評論線程,包含
isResolved、isOutdated、文件路徑、行號等元數據
腳本會先調用 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 README 與 Codex 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.md 與 scripts/)放入以下任一目錄即可被自動發現:
- 項目級:
.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 裏包含 isResolved、path、line 等字段,便於與 GitHub 網頁對照。
適用場景與注意事項¶
適合使用的場景:
- 當前分支已有 open PR,且 review 評論分佈在多個 thread,需要系統化彙總
- 希望 Agent 協助改代碼,但想保留「選哪些評論要改」的控制權
- 團隊已統一使用
ghCLI,本地認證與倉庫權限配置成熟 - 與 Codex 其他 GitHub 類 Skill(如
gh-fix-ci、yeet)組合,形成「改評論 → 修 CI → 提交 PR」的自動化鏈路
需要注意的限制:
- 非全自動:Skill 明確要求用戶選擇編號,不會靜默修改所有 review 意見
- 依賴 open PR:腳本通過
gh pr view解析當前分支 PR,無 PR 或 PR 已關閉則無法工作 - 修復質量取決於 Agent:Skill 規範流程,具體 patch 是否正確仍需人工 review 或 CI 驗證
- 網絡與權限:Codex 沙箱下
gh可能需要提升權限;auth scope 不足會導致 GraphQL 查詢失敗 - 倉庫遷移:
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/ 即可。官方資料:
- Skill 目錄:https://github.com/openai/skills/tree/main/skills/.curated/gh-address-comments
- Codex Skills 文檔:https://developers.openai.com/codex/skills
- Agent Skills 開放標準:https://agentskills.io