TL;DR
OpenAI 在自己的 GitHub 上開源了一個給 Claude Code 用的官方外掛 openai/codex-plugin-cc(Apache-2.0,撰文當下 30,993 顆星)。裝上去之後,你可以在 Claude Code 裡直接叫 Codex 審 code、或把整個任務丟給它跑。
我實際裝了 v1.0.6 並拿一段我故意寫壞的付款程式碼測:/codex:review花 41 秒抓出 2 個 P1;但同一份程式碼換/codex:adversarial-review抓出 4 個,多出來的兩個是「刪訂單摧毀稽核軌跡」和「完全沒有退款授權邊界」——這兩個標準 review 完全沒提。
這篇把安裝、7 個指令的實際差別、以及那個預設關閉、開了會咬人的 review gate 寫透。
📌 目錄
- 這是什麼,以及為什麼值得注意
- 裝起來:實際指令與前置需求
- 7 個指令各自在幹嘛
- 實測:兩種 review 差在哪
- review gate 的坑:預設關閉,失敗時會擋住你
- 它不是另一個 Codex,是你本機那個
- 什麼情況該用、什麼情況不用
- 常見問題
- 延伸資源
⭐ 這是什麼,以及為什麼值得注意
openai/codex-plugin-cc 是 OpenAI 官方發布、掛在 OpenAI 自己 GitHub organization 下的 Claude Code 外掛。授權是 Apache-2.0,完全開源。
我在撰文當天(2026-08-03)用 GitHub API 撈到的客觀數據:
| 項目 | 數值 |
|---|---|
| Repo | openai/codex-plugin-cc |
| Stars | 30,993 |
| 授權 | Apache-2.0 |
| 建立時間 | 2026-03-30 |
| 最新 release | v1.0.6(2026-07-08) |
| Contributors | 13 |
| Open issues | 396 |
順帶一提 396 個 open issue 這個數字:對照 31k 星,代表用的人多、但也還在快速迭代中。這不是一個穩定到可以閉眼睛裝的東西。
🔧 裝起來:實際指令與前置需求
前置需求
README 明列兩項:
- ChatGPT 訂閱(含 Free)或 OpenAI API key——用量會計入你的 Codex 額度
- Node.js 18.18 以上
安裝
三步,在 Claude Code 裡打:
/plugin marketplace add openai/codex-plugin-cc
/plugin install codex@openai-codex
/reload-plugins
裝完跑 /codex:setup 檢查。我這台實際跑出來的結果(--json 版本,方便看全貌):
{
"ready": true,
"node": { "available": true, "detail": "v24.18.0" },
"npm": { "available": true, "detail": "11.16.0" },
"codex": { "available": true, "detail": "codex-cli 0.144.4; advanced runtime available" },
"auth": {
"loggedIn": true,
"detail": "ChatGPT login active",
"authMethod": "chatgpt",
"verified": true
}
}
ready: true 才算真的裝好。如果 Codex 沒裝,/codex:setup 會問要不要幫你裝;想自己裝就 npm install -g @openai/codex,沒登入就 !codex login。
我裝的版本是 1.0.6,claude plugin list 確認 Status: ✔ enabled。
提醒:這個外掛會註冊SessionStart、SessionEnd、Stop三個 hook。動全域 plugin 設定前,我習慣先備份~/.claude/plugins/底下的installed_plugins.json跟known_marketplaces.json,出事好回頭。
📋 7 個指令各自在幹嘛
README 列了 7 個 slash command 加 1 個 subagent。我把它們按用途分三組:
| 指令 | 用途 | 會不會改你的 code |
|---|---|---|
/codex:review | 一般 code review | 否(read-only) |
/codex:adversarial-review | 可導向的挑戰式 review | 否(read-only) |
/codex:rescue | 把任務丟給 Codex 動手 | 會 |
/codex:transfer | 把當前 Claude session 轉成 Codex thread | 否 |
/codex:status | 看背景任務進度 | 否 |
/codex:result | 看完成任務的結果 | 否 |
/codex:cancel | 取消背景任務 | 否 |
/codex:review 跟 /codex:adversarial-review 都支援 --base 比對分支、--wait 前景等、--background 背景跑。差別在 adversarial 可以吃自訂 focus 文字,一般 review 不行:
/codex:review --base main
/codex:adversarial-review --base main 質疑這裡的快取與重試設計是不是對的
/codex:rescue 走的是 codex:codex-rescue 這個 subagent。我讀了它的定義檔,它被寫成一個「薄轉發層」——明文禁止它自己讀 repo、自己想解法,只准把你的需求轉發給 Codex。支援 --model、--effort、--resume、--fresh;講 spark 會被對應到 gpt-5.3-codex-spark。
🧪 實測:兩種 review 差在哪
這是我最想驗的一題:兩個 review 指令到底只是換句話說,還是真的不一樣。
測試設計
我在 /tmp 開了一個乾淨的 git repo,先 commit 一份基準 payment.js,然後加一個我故意寫壞的批次退款函式當作「未提交的改動」:
// 新增:批次退款
async function refundBatch(orderIds) {
for (const id of orderIds) {
const order = await db.query(SELECT * FROM orders WHERE id = ${id});
await db.query(UPDATE accounts SET balance = balance + ${order.amount} WHERE user_id = ${order.user_id});
await db.query(DELETE FROM orders WHERE id = ${id});
}
return orderIds.length;
}
我埋的問題:字串內插造成 SQL injection、三個操作不在同一交易內、刪掉訂單等於刪掉稽核依據、完全沒檢查呼叫者有沒有權限退這筆。
一般 review:41 秒,2 個 P1
抓到的兩個:
- [P1] 參數化呼叫端傳入的 order ID(
payment.js:19-21)——指出1 OR 1=1這類輸入可以刪到不該刪的訂單 - [P1] 讓餘額入帳與訂單刪除具原子性(
payment.js:20-21)——指出 DELETE 失敗會導致重複退款
Adversarial review:4 個,含兩個前面沒抓到的
同一份 code,改下這行:
/codex:adversarial-review --wait 質疑這個批次退款的設計方向本身是否正確
回傳 Verdict: needs-attention,四個 finding:
| 嚴重度 | 問題 | 一般 review 有抓到嗎 |
|---|---|---|
| critical | 退款非原子且無冪等性,重試或併發會重複入帳 | ✅ 有(P1) |
| high | 刪除訂單破壞帳務稽核與失敗復原能力 | ❌ 沒有 |
| high | 退款資格與授權邊界完全缺失 | ❌ 沒有 |
| high | orderIds 直接插入 SQL | ✅ 有(P1) |
另外一個實用細節:我用繁體中文下 focus,它整份就用繁體中文回。
我的解讀
一般 review 看的是「這段 code 對不對」,adversarial review 看的是「這個設計該不該存在」。要注意這是單一案例、單次執行,不是統計結論——但方向明確:上線前的把關,用 adversarial 那個。
兩者跑完都會給 Codex session ID,可以 codex resume 直接跳進 Codex 接著弄。
⚠️ review gate 的坑:預設關閉,失敗時會擋住你
這是我覺得整包東西裡最需要講清楚、README 也給了警告的功能。
/codex:setup --enable-review-gate
/codex:setup --disable-review-gate
開啟後,它掛的 Stop hook 會在 Claude 每次要結束回合時,叫 Codex 針對這一輪的改動做一次審查;審出問題就擋住,讓 Claude 先修完再停。
我讀了 stop-review-gate-hook.mjs 的實作,有幾個數字和行為是文件沒細講、但你該知道的:
- hook 的 timeout 設定是 900 秒(15 分鐘)
- Codex 必須回傳開頭是
ALLOW:或BLOCK:的第一行 - 回傳無法解析、逾時、或執行失敗,一律當作 block 處理——也就是說,Codex 那邊出基礎設施問題時,擋住你的不是「你 code 有 bug」,而是「審查跑不起來」
- prompt 明文要求:只審上一輪真的有動到 code 的情況,純狀態回報一律直接 ALLOW
我的建議是預設維持關閉,需要嚴格把關的時候手動跑 /codex:adversarial-review 就好。自動化的把關很誘人,但一個會在失敗時 block、又可能燒額度的迴圈,值得你先想清楚再開。
🔌 它不是另一個 Codex,是你本機那個
README 的 FAQ 特別列了一條澄清:這個外掛沒有自己的 Codex runtime。它包的是你本機已經裝的 Codex CLI 與 Codex app server。
代表:
- 用的是你本機同一份 Codex 安裝
- 用的是你本機同一份登入狀態(我這台是 ChatGPT 帳號登入,
authMethod: "chatgpt") - 用的是同一份設定檔
~/.codex/config.toml 會被沿用。要針對某個專案指定模型,在專案根目錄放 .codex/config.toml:
model = "gpt-5.4-mini"
model_reasoning_effort = "high"
專案級設定只在該專案被標記為 trusted 時才會載入。
🤔 什麼情況該用、什麼情況不用
用了半天之後,我的判斷:
適合的情況
- 你本來就同時有 ChatGPT 跟 Claude 訂閱,Codex 額度閒著
- 你想在上線前多一雙不同來源的眼睛,尤其是設計層面的質疑
- 你已經習慣 Claude Code 的工作流,不想為了用 Codex 切換環境
- 你沒有 Codex 帳號也不想再開一個——這外掛不會憑空給你 Codex 額度
- 你要的是省 token:這是多花一份錢換第二意見,不是省錢方案
- 你期待兩個 AI 自動協作把事做完——實際上是你手動下指令、它跑完回報的輪流制
- 兩個 review 都是 read-only,不會幫你修
- 多檔案的 review 會跑一段時間,官方建議用
--background - 396 個 open issue,還在高速迭代
/codex:transfer要求來源檔必須在~/.claude/projects底下,太舊的 Codex 版本不支援 session import
❓ 常見問題
Q:這真的是 OpenAI 官方的嗎?
是。repo 在 github.com/openai/codex-plugin-cc,plugin.json 的 author 欄位寫 OpenAI,授權 Apache-2.0。撰文當下 30,993 顆星。
Q:免費嗎?
外掛本身開源免費。但它會用掉你的 Codex 額度,而 Codex 需要 ChatGPT 訂閱(Free 方案也算)或 OpenAI API key。所以「外掛免費、推論要錢」。
Q:需要另外開一個 Codex 帳號嗎?
如果這台機器已經登入過 Codex,直接就能用,它讀你本機的 Codex CLI 認證。沒用過 Codex 的話要先 codex login。
Q:/codex:review 跟 /codex:adversarial-review 差在哪?
一般 review 不可導向、不吃自訂文字,看的是程式碼細節;adversarial 可以吃 focus 文字,會質疑設計方向與取捨。我用同一段有問題的付款程式碼實測,一般版抓 2 個、adversarial 抓 4 個,多的兩個是稽核軌跡與授權邊界這類設計層問題。
Q:review gate 該開嗎?
預設是關的,我建議先維持關閉。它會在每次 Claude 要停下來時叫 Codex 審一遍,審出問題就擋。官方警告它可能造成長時間迴圈並快速消耗額度;而且從原始碼看,Codex 逾時或失敗也會 block,不只是 code 有問題才擋。
Q:它會偷偷改我的 code 嗎?
兩個 review 指令都是 read-only。只有 /codex:rescue 會實際動手,而那是你明確叫它做事的時候。
🔗 延伸資源
想接著做的話,我的建議順序是:先/codex:setup 確認 ready: true,再拿一段你自己寫過、心裡有底的舊 code 跑一次 /codex:adversarial-review——用你已經知道答案的東西去測它,比拿新 code 更能看出它到底值不值得留在工作流裡。