載入中

GitHub Actions 與程式碼審查

第 7 課6 分鐘
載入中

GitHub Actions 與程式碼審查

交接重複性工作的最佳地點就是 pull request。這裡是審查發生的地方、變更落地的地方,也是您許多瑣碎工作所在的地方。在這裡讓 Claude 發揮作用有兩種方式,它們解決的是不同的問題。一種是您開啟的受管理服務。另一種是您自行接線的 GitHub Action。讓我們逐一了解這兩者,並弄清楚何時該使用哪一種。

受管理路徑:Code Review

最簡單的選項是 Code Review。這是一項由 Anthropic 託管的服務,透過 Claude GitHub app 來審查您的 pull request。您不需要建置或託管任何東西。您只要開啟它,它就會開始在重要的程式碼行上以行內留言的方式張貼發現的問題。

您 Claude 組織的 Owner 可以從 Claude Code 管理設定中啟用此功能。您會找到一個「Code review」區段,其中有一個「Allow code review」開關,可啟動設定流程。

接著,Owner 會安裝 Claude GitHub app,選擇它要監看哪些儲存庫,並決定它何時執行。如果該 Owner 並非 GitHub 組織的擁有者,則必須先有人安裝並連結該 app。您有幾種時機可以選擇:

  • PR 開啟時執行一次
  • PR 每次推送時執行
  • 僅在有人留言 @claude review 時執行

一旦開啟,所有運作都在 Anthropic 的基礎架構上進行。一組審查代理會針對您完整的程式碼庫分析差異,而不只是孤立地檢視變更的行。接著,它會在特定行上以行內留言張貼發現的問題,並依嚴重程度標記,並在檢查執行中附上摘要表格。

以下是其中一項發現的樣子。它會以 Claude 的留言形式出現在該行上,附有清楚的說明和建議的修正方式。

好的一點是,它會去除重複並對發現的問題進行排序。因此,您讀到的不是一堆瑣碎的挑剔意見,而是少數幾個真正值得您關注的問題。

Code Review 會做與不會做的事

這裡有幾件關於界限的事情需要記住:

  • 它絕不會核准或封鎖 PR。判斷仍由人類來做。Claude 會標記問題;由您來決定。
  • 它不會推送修正。該服務只會張貼發現的問題。
  • 它僅適用於 Team 和 Enterprise 方案。

由於該服務只會張貼發現的問題,因此採取行動是您的事:修正程式碼並推送。若要在推送前檢查您的修正,請從您自己的終端機執行 /code-review。它會對您的差異執行自己的審查,而其 --fix 旗標會將該次審查的發現套用到您的工作樹中。

自行動手路徑:GitHub Action

Code Review 負責處理審查。當工作超出審查範圍時,您就要使用 GitHub Action。這適用於自訂 CI:根據留言實作變更、執行排程報告,以及任何您通常會撰寫工作流程來處理的事情。它會在 PR 留言、排程工作以及任何 GitHub 事件上執行代理。

設定從 Claude Code 內部開始。執行 /install-github-app 指令。您需要儲存庫管理員權限才能執行此操作。此斜線指令會引導您完成安裝 GitHub app 以及在儲存庫上設定 Anthropic API 金鑰密鑰的流程。

該 action 本身是 anthropics/claude-code-action@v1。以下是您實際會用到的輸入項目:

  • anthropic_api_key — 當執行需要呼叫 Claude API 時為必填,除非您使用 claude_code_oauth_token(來自 Claude 訂閱)或工作負載身分聯合(透過 Claude Console 服務帳戶設定,因此不需儲存密鑰)進行驗證。與下方的雲端供應商搭配使用時不需要此項。
  • github_token — 選填。若省略,action 會以您在設定時安裝的 Claude GitHub app 身分進行驗證。只有在需要覆寫此行為時才傳入權杖。
  • trigger_phrase — action 在留言中監聽的內容。預設為 @claude。
  • use_bedrock / use_vertex / use_foundry — 將執行路由透過 Amazon Bedrock、Google Cloud's Agent Platform 或 Microsoft Foundry,而非 Claude API,並以您的雲端帳戶而非 API 金鑰登入。
  • prompt — 自動執行的指示。設定此項後,Claude 會在事件發生時執行,而不需等待提及。若省略,action 會等待觸發詞。
  • claude_args — 一串直接傳遞給 Claude Code 的 CLI 引數。

回應 @claude 的工作流程

將一個工作流程放入 .github/workflows/claude.yaml,它就會監聽 PR 留言和 issue 留言中的 @claude。在該工作的 permissions 下,授予 id-token: write,讓 action 能以 Claude GitHub app 的身分登入。核心步驟如下所示:

yaml
- uses: anthropics/claude-code-action@v1
  with:
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
    trigger_phrase: "@claude"
    claude_args: "--max-turns 5 --model claude-sonnet-5"

現在有人在 pull request 上寫下 @claude implement the spec in the linked Linear issue,action 就會接手處理。Claude 會推送提交並張貼留言說明它做了什麼。

按排程執行的工作流程

同一個 action 也適用於每日彙總報告。一個 cron 觸發器會在例如 9:00 UTC 觸發,action 會執行您的 prompt,而您可以在該次執行的日誌中讀取彙總結果。排程執行本身不會張貼留言。您也可以加入 workflow_dispatch 觸發器,以便從 Actions 分頁手動啟動它。

當 action 執行時,您可以在 Actions 分頁中觀看它逐步執行,就像任何其他 GitHub 工作流程一樣。

使用 claude_args 調整執行方式

claude_args 這一行就是進行微調的地方。有幾個值得了解的調整項:

  • --max-turns 5 對代理迴圈設下硬性上限,讓它不會無限執行下去。
  • 權限模式。對於無人看管的工作,您會希望它不要停下來詢問,因為沒有人在那裡回答。
  • 允許的工具。只給這項工作它確實需要的東西,不多不少。對於報告而言,這表示僅限唯讀。

您應該使用哪一種?

簡短版本如下:

  • 對於 PR 審查,採用受管理路徑。啟用 Code Review,讓 GitHub app 張貼行內發現的問題,然後修正程式碼並推送。
  • 當工作超出審查範圍時,就使用 action。設定時使用 /install-github-app,一個工作流程用於 @claude 提及,另一個用於 cron,所有調整都在 claude_args 中進行。

從受管理服務開始。當您需要 Claude 在 CI 中實際執行某件事,而不只是留言評論時,再轉向使用 action。