你的審查 skill,用在每一張 MR。
Argus 是自架的 GitLab AI 審查工具。你被指派為 reviewer 時,它用你自己的 skill 審查 MR,並以你的 GitLab 身分留下 inline 意見與總結。
運作方式
不必設定 webhook。Argus 會自己找出你被指派為 reviewer 的 MR。
被指派為 reviewer
Argus 每 30 秒向 GitLab 查詢以你為 reviewer 的開啟中 MR。想要即時?開完 MR 後呼叫 trigger API 即可。
自動審查
Claude Code 在程式庫的 shallow clone 上唯讀執行,依你自己的審查 skill 與 diff 檢查。
留言並持續追蹤
發現以 inline 討論加一則總結的形式、用你的名義留下。每次 push 後只重審新的變更,已修正的討論會自動 resolve。
主要功能
一個 Argus 可以服務整個團隊。每個人用自己的登入、skill 與訂閱。
你的 skill,你的口吻
每位使用者上傳自己的
SKILL.md,並自訂門檻、留言語言與模型。用你自己的 Claude 訂閱
每人以 GitLab OAuth 登入,貼上
claude setup-token產生的 token。用量計入自己的方案,不會動到別人的。增量重審
只審上次審查之後的 diff。先前的發現會標示為已修正或仍存在,已修正的 inline 討論自動 resolve。
由你裁決
認為沒問題的發現,回覆
/argus accept即可。Argus 會 resolve 並重算結論,不必重跑 AI。Trigger API
讓你的 coding agent 在開完 MR 後立刻請 Argus 審查。每位使用者有自己的 API key。
選用功能
可選擇開啟自動 approve(以你本人名義,且僅限乾淨的一輪),以及 Jira 需求背景(Server / Data Center)。
審查紀錄
依 MR 檢視每一輪的狀態、發現數與實際執行的模型。失敗的審查會自動重試。
部署簡單
單一 Node 程序、SQLite 儲存、伺服器端渲染的 Web UI。用 Docker Compose 部署。
多人使用,owner 核准
新註冊的使用者要等 owner 核准才會開始審查,不會有人收到沒要求的審查。
實際畫面
以下皆為示意,使用虛構的名稱與資料。

結論:需要修改。仍存在 1 項、上輪至今已修正 1 項、審查者已接受 1 項。
發現
- 仍存在minor
src/auth/session.ts:58
Session cookie 沒有設定到期時間,登入失效後仍會留著。 - 已修正
src/api/orders.ts:112order.items缺少 null 檢查。討論已 resolve。 - 已接受
src/jobs/sync.ts:30
重試迴圈沒有上限。已接受:另案追蹤於 PROJ-123。
/argus accept tracked in PROJ-123
安全設計
讀取不可信程式碼的 AI,不該拿著你的鑰匙。Argus 把兩者分開。
- Token 不進 AIagent 只能對 shallow clone 使用
Read、Grep、Glob。你的 GitLab 與 Claude token 都不在它的上下文裡。 - 寫入全由確定性程式碼負責留言、resolve、approve 都由一般程式碼根據 agent 輸出的結構化發現執行,不靠模型呼叫工具。
- 預設 dry-run審查會執行並記錄,但在 owner 切換為正式模式前不會發出任何留言。
- 加密存放儲存的 token 以 AES-256-GCM 加密。Web UI 有 CSRF token、嚴格的 content security policy,session id 只存雜湊。
- 謹慎的自動 approve預設關閉,需自行開啟。approve 綁定被審查的那個 commit,且只會撤回 Argus 自己做的 approve。
快速開始
主機只需要 Docker 與 Compose v2。
git clone https://github.com/duedue/argus-gitlab-review.git && cd argus-gitlab-review
cp .env.example .env && chmod 600 .env
openssl rand -base64 32 # put the output in ARGUS_MASTER_KEY
$EDITOR .env # set BASE_URL, GITLAB_URL, ARGUS_MASTER_KEY
docker compose up -d --build
接著開啟 BASE_URL。第一次會進入 /setup,需要容器日誌中的一次性 setup code、你的 GitLab OAuth application 憑證,以及 owner 的 GitLab user id。之後用 GitLab 登入、上傳 skill、貼上你的 Claude token。結果看起來沒問題後,再到管理頁把 dry-run 切成正式模式。
完整步驟:docs/SETUP.md(英文),另有 README(英文)。
需求與限制
- Claude 訂閱。每位使用者需要自己的訂閱。沒有 token 的使用者,審查會被略過,Argus 不會改用 owner 的訂閱。
- GitLab OAuth application。需為 confidential,scope 為
api與read_repository。已在 GitLab 15.11 測試。 - Jira 為選用,且僅支援 Server / Data Center。不支援 Jira Cloud。
- Web UI 為繁體中文,詳細文件(
docs/)為英文。留言語言可由每位使用者自行設定。 - 採輪詢而非 webhook。約 30 秒內開始審查,使用 trigger API 則可即時。
- 過大的 diff 不審查。Argus 會請作者拆分 MR。Draft MR 會被略過。