跳轉到主要內容
這份教學會帶你在 GitHub Actions 中用 Cursor CLI 設定程式碼審查。工作流程會分析 pull request、找出問題,並把回饋以留言方式貼上。
對大多數使用者,我們建議改用 Bugbot。Bugbot 提供免設定的託管式自動程式碼審查。這種 CLI 作法適合用來探索功能與進行進階自訂。
自動化程式碼審查進行中,在 Pull Request 上顯示內嵌留言

設定驗證

在 GitHub Actions 中設定你的 API 金鑰與儲存庫機密,用來讓 Cursor CLI 通過驗證。

設定代理權限

建立一個設定檔,控制代理能執行哪些動作。這能避免非預期的操作,例如推送程式碼或建立 pull request。 在你的儲存庫根目錄建立 .cursor/cli.json
{
  "permissions": {
    "deny": [
      "Shell(git push)",
      "Shell(gh pr create)",
      "Write(**)"
    ]
  }
}
這個設定允許代理讀取檔案並使用 GitHub CLI 發佈評論,但會阻止它對你的儲存庫做出任何變更。請參考權限說明以取得更多設定選項。

建立 GitHub Actions 工作流程

現在我們一步步來建立這個工作流程。

設定工作流程觸發器

建立 .github/workflows/cursor-code-review.yml,並設定在 pull request 時執行:
name: Cursor 程式碼審閱

on:
  pull_request:
    types: [opened, synchronize, reopened, ready_for_review]

jobs:
  code-review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
    
    steps:

取得存放庫

新增 checkout 步驟以存取 pull request 的程式碼:
- name: 檢出存放庫
  uses: actions/checkout@v4
  with:
    fetch-depth: 0
    ref: ${{ github.event.pull_request.head.sha }}

安裝 Cursor CLI

加入 CLI 安裝步驟:
- name: 安裝 Cursor CLI
  run: |
    curl https://cursor.com/install -fsS | bash
    echo "$HOME/.cursor/bin" >> $GITHUB_PATH

設定 review 代理

在實作完整的 review 步驟之前,先來了解我們的 review 提示結構。本節說明我們希望代理的行為: 目標: 我們希望代理檢視目前的 PR diff,只標記明確且高嚴重性的問題,並且只在變更的行上留下非常短的行內留言(1–2 句),最後在結尾附上一段簡短總結。這能維持良好的訊噪比。 格式: 我們要精簡且到點的留言。會使用表情符號讓掃讀留言更容易,並在最後提供整體 review 的高階總結。 提交: 當 review 完成後,我們希望代理根據檢查結果附上一段短評。代理應提交一個包含行內留言與精煉總結的單一 review。 邊界情況: 我們需要處理:
  • 既有留言已被解決:問題處理後,代理應將其標記為完成
  • 避免重複:如果相似回饋已存在於相同或相鄰行,代理應略過留言
最終提示: 完整提示會結合以上所有行為要求,產出聚焦且可執行的回饋 現在來實作 review 代理步驟:
- name: 執行程式碼審查
  env:
    CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
    GH_TOKEN: ${{ github.token }}
  run: |
    cursor-agent --force --model "$MODEL" --output-format=text --print "你正在 GitHub Actions runner 中執行自動化程式碼審查。gh CLI 可用,並已透過 GH_TOKEN 完成驗證。你可以對 pull request 發表評論。
    
    Context:
    - Repo: ${{ github.repository }}
    - PR Number: ${{ github.event.pull_request.number }}
    - PR Head SHA: ${{ github.event.pull_request.head.sha }}
    - PR Base SHA: ${{ github.event.pull_request.base.sha }}
    
    Objectives:
    1) 重新檢視既有的審查評論,若已處理則回覆已解決
    2) 審查當前 PR 的 diff,只標註明確且高嚴重性的問題
    3) 僅在變更的行上留下非常短的行內評論(1-2 句),並在最後附上一段精要摘要
    
    Procedure:
    - 取得現有評論:gh pr view --json comments
    - 取得 diff:gh pr diff
    - 如果先前回報的問題看起來已被鄰近變更修正,回覆:✅ 這個問題看起來已由最近的變更解決
    - 避免重複:若相似的回饋已存在於相同或相近的行,請略過
    
    Commenting rules:
    - 最多 10 則行內評論;優先處理最關鍵的問題
    - 每則評論只針對一個問題;放在確切變更的那一行
    - 語氣自然、具體且可行;不要提及自動化或高信心
    - 使用表情符號:🚨 關鍵 🔒 安全 ⚡ 效能 ⚠️ 邏輯 ✅ 已解決 ✨ 改進
    
    Submission:
    - 提交一份包含行內評論與精簡摘要的審查
    - 僅使用:gh pr review --comment
    - 不要使用:gh pr review --approve 或 --request-changes"
.
├── .cursor/
│   └── cli.json
├── .github/
│   └── workflows/
│       └── cursor-code-review.yml

測試你的審查員

建立一個測試 pull request,確認工作流程正常運作,並讓代理在審查評論中貼上表情符號回饋,並對特定行提供行內意見。
Pull request showing automated review comments with emojis and inline feedback on specific lines

下一步

你現在已經有一個可運作的自動化程式碼審查系統。可以考慮這些強化:
  • 設定額外的工作流程來修復 CI 失敗
  • 針對不同分支設定不同的審查等級
  • 與你團隊現有的程式碼審查流程整合
  • 依不同檔案類型或目錄自訂代理的行為
I