Thariq Skills #6 — Code Quality & Review:Adversarial Review 與程式碼品質護欄
agent 寫的程式碼,誰來審查?
最直覺的答案是「你來」。但有一個更好的模式——讓另一個 agent 來審查,而且是帶著明確批評任務的 subagent。
類別定義
“Enforce code quality, help review code. Can include deterministic scripts. Run automatically via hooks or GitHub Actions.”
這個類別有三個層次:
- 風格強制:linter、formatter 設定的封裝(確定性腳本)
- 品質審查:對 PR 或程式碼段落做邏輯、安全性、可維護性的評估
- adversarial review:subagent 帶著批評立場反覆挑戰直到品質達標
第三個層次是最強大、也最被低估的模式。
Thariq 的範例
adversarial-review — 核心模式:一個 subagent 被指派為「批評者」,對主 agent 的輸出提出反對意見,主 agent 回應並修改,迭代直到批評者無話可說。
Thariq 原文描述:“subagent critique → iterate”
這不只是「讓 agent 自我審查」,而是在架構上製造一個對立的觀點,強迫輸出品質提升。
code-style — 風格規範 skill。不只是「用 ESLint」,而是你的團隊對哪些模式有明確偏好、哪些反模式要避免——這些超出 linter 規則的內容。
testing-practices — 測試規範。什麼需要 unit test、什麼需要 integration test、test case 命名規範、mock 的使用原則。
Adversarial Review 的運作方式
主 agent 寫完程式碼
↓
adversarial-review skill 啟動
↓
Subagent A(批評者):
- 找安全性問題
- 找邊界案例
- 挑戰設計決策
↓
主 agent 回應並修改
↓
重複直到批評者無法找到重大問題
↓
輸出帶有審查記錄的最終版本
單一 agent 的自我審查有「確認偏誤」問題——它傾向確認自己的設計是對的。Adversarial 模式透過明確指派「反對立場」,強制 agent 跳出原有的思維框架。這直接對應 Thariq 的技巧#1:「專注於能把 Claude 推出常規思維的資訊」。
結合確定性腳本
Code Quality skills 的一個優勢是可以混合 LLM 判斷和確定性腳本:
code-review/
├── SKILL.md
├── scripts/
│ ├── run-linter.sh ← 確定性:eslint / ruff / golangci-lint
│ ├── check-test-coverage.sh ← 確定性:coverage threshold
│ └── security-scan.sh ← 確定性:依賴漏洞掃描
├── review-checklist.md ← LLM 審查的檢查清單
└── gotchas.md ← 常見的程式碼反模式記錄
確定性腳本先過濾低懸果實(格式、語法錯誤),LLM 再做高層次的邏輯和設計審查。
SuperPortia 實戰觀點
SP 在這個類別有合理的覆蓋:
| SP Skill | 功能 | 評估 |
|---|---|---|
code-review | 通用程式碼審查 | 有,但缺 adversarial 模式 |
code-standards | SP 的程式碼風格規範 | 有,對應 EGS Ch.2 |
codex-review | 用 Codex CLI 做跨模型審查 | 有,SP 獨特的優勢 |
最大的缺口:沒有 adversarial-review 模式。目前 codex-review 最接近這個概念——用 GPT-5.4 對 Claude 的輸出做第二意見審查——但它是人工觸發的單次審查,不是迭代的對立批評流程。
SP 有 Claude Code + Codex CLI + Gemini CLI 三個 agent 可用。這比 Thariq 描述的 adversarial-review 還要強——不只是同一個模型的子 agent 批評,而是真正不同的模型架構在做審查。codex-review skill 把這個能力封裝起來,但還可以更系統化:建立一個流程讓主 agent 自動觸發 Codex 審查,而不是等人工指示。
與 Hooks 的結合
Thariq 提到 Code Quality skills 可以「run automatically via hooks or GitHub Actions」。這對應到 SP 的 PostToolUse hooks——每次 agent 寫完程式碼,hook 可以自動觸發 linter 或基本的品質檢查。
目前 SP 的 hooks 主要做安全性阻擋(防止危險指令),還沒有做主動的品質觸發。這是一個可探索的方向。
回到總文
本文是九大類別系列的第六篇。完整框架與 SuperPortia 對照請見:
...q-skills-scaffolding-templates|Thariq Skills — Code Scaffolding & Templates]] — 框架樣板生成的 skill 模式 6. [[Thariq Skills — Code Quality & Review]] — adversarial-review...