second-opinion:用 Codex 或 Antigravity 對 Git 變更做外部代碼審查

前言

在 IDE 裏讓主模型改完代碼後,很多人會再開一輪「別的模型幫我看一眼」:未提交的 diff、相對 main 的分支變更,或某個 commit。自己拼 prompt、截 patch、對齊兩份審查範圍,既費時也容易漏掉未跟蹤文件。下面介紹 Trail of Bits 在 skills 市場裏提供的 second-opinion Skill:在 Agent 會話裏選定審查提供方與範圍,把同一份變更交給外部 CLI 做獨立審查,並整理發現項;它不自動改代碼,也不把結果發到遠端服務。

這是什麼

second-opinion 是 trailofbits/skills 倉庫裏 plugins/second-opinion/skills/second-opinion 下的 Agent Skill(SKILL.md 格式)。維護方是 Trail of Bits,與其 Code Auditing、安全審查類插件同屬一個 Claude Code / Codex 插件市場。

一句話定位:對用戶選定的 未提交變更、相對指定基線的分支 diff,或 指定 commit,調用 Codex 或 Antigravity(以及仍支持賬戶下的 Gemini CLI)做外部模型代碼審查,輸出 findings;可選雙提供方並行、對比結論。

核心功能

Skill 元數據中的描述爲:對 uncommitted changes、branch diffs、commits 從 Codex 或 Antigravity 獲取獨立審查;在用戶要求 external review、second opinion、codex review、gemini review、antigravity review,或使用 /second-opinion 時啓用。允許使用的工具包括 Bash、Read、Glob、Grep、AskUserQuestion。

審查維度(由用戶或缺省補全)

  1. Provider:Codex、Antigravity,或兩者同時(用於對比)。用戶點名某一 CLI 時保留該選擇。
  2. Scope:工作區未提交變更;相對命名基線的分支 diff;或單個 commit。未給基線時嘗試用遠端默認分支;無法確定時再問用戶。
  3. Context:默認帶上適用的項目說明(除非用戶排除);用戶顯式要求與倉庫內容在 prompt 裏分開寫。
  4. Focus:默認一般正確性與可維護性;用戶可指定 security、performance 等。

未指定 Google 系 CLI 時,優先 Antigravity(agy)。用戶明確要求 Gemini CLI 時按 Gemini 參考文檔走;若賬戶返回 UNSUPPORTED_CLIENT,說明遷移到 Antigravity 並在改 CLI 前詢問。

輸入與 diff

執行前讀取倉庫內 references/review-input.md 中的共享 prompt 與 diff 配方。雙提供方對比時使用同一份捕獲的 diff。未提交審查包含 未跟蹤文件;Git 報錯保留原樣,不當作空 diff。

無變更則不調用外部提供方。超出 CLI 或模型限制時說明限制並請用戶縮小範圍,不靜默截斷 patch。

臨時 prompt、輸出與診斷文件用 mktemp 建在 checkout 之外;每個提供方單獨輸出與診斷文件;倉庫內容以字面量寫入,避免 shell 展開。

提供方與調用方式

Provider 說明
Codex references/codex-invocation.md:codex exec,配合 references/codex-review-schema.json
Antigravity references/antigravity-invocation.md:agy 的 print 模式,散文體輸出
Gemini CLI references/gemini-invocation.md:仍支持賬戶下的 headless gemini

Codex 路徑不需要 MCP server;不要啓動 codex mcp-server,也不要用 codex app-server 替代 CLI 調用。

雙提供方且工具支持時併發執行;前臺 Bash 審查可設 timeout: 600000(最長約十分鐘)。不爲審查運行開啓自動批准寫入。

結果與失敗

呈現項包含:提供方與實際模型、嚴重程度、文件與行號、影響、修改建議;低嚴重度問題仍保留。Codex schema 嚴重程度:0 信息、1 低、2 中、3 高,按降序排列。

兩份審查都完成時,概括一致與分歧,不把「一致」當作證明;區分外部 findings 與 Agent 自己的判斷。

非零退出、無輸出、無效 JSON、權限導致無法檢查、或要求批准 plan,均視爲未完成而非「乾淨通過」;報告失敗與部分結果。僅在可診斷、可恢復原因下重試;認證或配額失敗後不要輪換提供方死循環。

缺少可執行文件或賬戶配置視爲審查失敗,給出對應安裝說明;若請求了雙提供方,在可用的一方繼續並標明跳過的一方。

安裝與啓用

Skill 隨 trailofbits/skills 市場安裝,不是單獨 git clone 本 Skill 目錄。

Claude Code 添加市場並安裝插件:

/plugin marketplace add trailofbits/skills

瀏覽並安裝:

/plugin menu

在菜單中選擇包含 second-opinion 的對應插件(路徑爲 plugins/second-opinion/)。

Codex 可直接使用 Claude 插件市場兼容能力:

codex plugin marketplace add trailofbits/skills
codex plugin list
codex plugin add <plugin-name>@trailofbits

將 <plugin-name> 換爲 codex plugin list 中與 second-opinion 對應的插件名(倉庫目錄爲 second-opinion)。

本地開發時,在 本倉庫的父目錄 執行:

cd /path/to/parent
/plugins marketplace add ./skills

各提供方還需本機已安裝並登錄對應 CLI(codex、agy 或 gemini)。資料中未給出 Cursor 專用安裝步驟,此處不展開。

典型用法

官方 SKILL 中的示例(斜槓命令形式,具體前綴以你所用宿主爲準):

  1. 用 Codex 審查未提交變更(含 staged、unstaged、untracked),關注 bug:
/second-opinion:second-opinion use Codex to review my uncommitted changes for bugs
  1. 在同一分支相對 origin/main 的 patch 上對比 Codex 與 Antigravity:
/second-opinion:second-opinion compare Codex and Antigravity on this branch against origin/main
  1. 用 Gemini CLI 審查指定 commit,聚焦安全問題:
/second-opinion:second-opinion use Gemini CLI to review commit abc1234 for security issues

自然語言觸發亦可:例如要求 external review、second opinion、codex / gemini / antigravity review。

適用場景與注意

適合:提交或開 PR 前希望第二模型掃 diff;安全或性能專項審查;對比 Codex 與 Antigravity 對同一變更的判斷差異。

限制:只產出 findings,不自動修代碼、不發帖到 GitHub 等遠端;依賴外部 CLI 與賬戶配額;大 diff 需主動縮小範圍;Gemini 賬戶若已不支持客戶端需遷移 Antigravity。

與倉庫內 differential-review(偏安全向的差分審查與 git 歷史)等同屬 Trail of Bits 審計類能力,second-opinion 側重「外部 CLI 第二意見」與多提供方對比,可按需求選用。

結尾

second-opinion 把「同一 patch、多模型交叉審查」收成可複用的 Skill 流程,適合已在使用 Claude Code 或 Codex 插件市場、且本機配置了 Codex / Antigravity(或仍支持的 Gemini CLI)的團隊。官方 Skill 與說明見:

https://github.com/trailofbits/skills/tree/main/plugins/second-opinion/skills/second-opinion

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜