今天發點適合雙劍合璧的東西。
在Claude Code 和 Codex 之間一直存在誰更好用的爭議,但是都成年人了還做什麼選擇,我都要。
這個 GitHub 的 codex-plugin-cc 項目就是爲了解決這個爭議而生的,裝上可以在 Claude Code 內部運行 Codex 了。

01. 項目簡介
codex-plugin-cc 可以理解成:把 OpenAI Codex 接進 Claude Code 的橋接插件。
項目地址:https://github.com/openai/codex-plugin-cc
使用過程中 Claude Code 還是主窗口,Codex 作爲第二個編碼代理被 Claude 調用,用來做代碼審查、挑戰式審查、任務委託、會話遷移。
插件調用的是你機器上的全局 codex 命令,也就是本機 Codex CLI 和 Codex app-server。
核心功能:
/codex:review:讓 Codex 做代碼審查
最常用的審查流程是三步:
/codex:review --background
/codex:status
/codex:result
第一條命令會啓動 Codex 代碼審查,並放到後台運行。
/codex:status 用來查看審查進度。
任務完成後,再用 /codex:result 查看結果。
如果要審查當前分支相對 main 的全部改動,可以輸入:
/codex:review --base main --background
- /codex:adversarial-review:讓 Codex 挑戰方案
適合檢查方案是否站得住。Codex 會重點檢查設計取捨、隱藏假設、邊界條件和失敗模式。
- /codex:rescue:把任務交給 Codex 調查或修復
把一個具體問題交給 Codex 接手。適合處理排查類任務:構建失敗、測試失敗、複雜 bug、舊任務繼續推進。
- /codex:transfer:把 Claude 會話轉到 Codex 繼續
適合已經在 Claude Code 裏聊了很多上下文,後面想切到 Codex App 或 Codex CLI 繼續。

02. 項目實測
安裝起來很簡單,大家先在 Claude Code 輸入框輸入:
/plugin marketplace add
出現 Add Marketplace 彈窗後,然後填:
openai/codex-plugin-cc
添加成功後,再回到 Claude Code 輸入框,輸入:
/reload-plugins
最後輸入:
/codex:setup

case 1 代碼審查
先讓 Claude Code 做一個新功能:
提示詞:給當前登錄頁增加功能:連續認證失敗 3 次後禁用登錄按鈕 30 秒,並顯示剩餘秒數。只有用戶名或密碼錯誤才計入失敗次數,網絡錯誤和服務器錯誤不能計入。要求補測試。只修改必要文件,先不要提交。

然後我們運行:
/codex:review --background

Codex審查出兩條問題:
1.claude/settings.local.json 權限問題
.claude/settings.local.json:11Bash(node *) 授予了任意 Node 腳本的無審批執行權限
2.登錄鎖定倒計時問題
src/components/LoginForm.tsx:14第三次認證失敗前頁面已打開一段時間,now 仍保持掛載時的值,第一次鎖定渲染可能顯示虛高倒計時。
我們可以讓 Claude Code 繼續改:
提示詞:
根據 Codex review 修復下面的問題。只改必要文件,補充或調整測試,修完後運行 npm test 和 npm run build,不要提交。
不要把 .claude/settings.local.json 作爲本次功能改動提交。如果只是本地權限設置,請恢復該文件到本次任務前狀態。
修復 src/components/LoginForm.tsx 的鎖定倒計時問題:觸發第三次認證失敗並設置 lockoutUntil 時,要同步刷新 now,確保鎖定開始後的首次渲染倒計時從 30 秒開始,而不是使用頁面掛載時的舊 now 值。

然後再 review 一次:

改完又審查出代碼可能會把最後一次認證失敗算成第 3 次連續認證失敗。
繼續再讓 Claude Code 改:
提示詞:
根據 Codex review 修復下面的問題。只改必要文件,補充或調整測試,修完後運行 npm test 和 npm run build,不要提交。
[P2] 非認證錯誤後應重置計數器 — src/components/LoginForm.tsx:55
當前 network 或 server 錯誤分支不會重置 failCount。序列 auth → auth → network → auth 會錯誤觸發鎖定,儘管這四次認證失敗並非連續。如果需求是“連續認證失敗 3 次”,則應在非認證錯誤時重置計數器,打斷連續鏈條。

再 review 一次:

好的,代碼審查過關!
case 2 挑戰方案
我們先讓Claude Code做個給登錄頁增加記住用戶名功能:
提示詞:給當前登錄頁增加“記住用戶名”功能:用戶勾選後,下次打開頁面自動填充上次成功登錄的用戶名;取消勾選後清除已保存用戶名。要求考慮 localStorage 不可用的情況,補測試。只修改必要文件,先不要提交。

然後讓 Codex 挑戰方案,看方案是否靠譜:
/codex:adversarial-review

Codex 對於Claude Code 的方案挑戰性審查出了這些問題:
- safeRemoveStorage 吞掉刪除失敗
- 用戶名長期保存在 localStorage
- claude/settings.local.json 混進功能改動
- 初始化時讀取 localStorage 兩次
- safeSetStorage 的保存失敗被忽略
- 純空格用戶名會通過校驗
- saved_username 這個 key 太通用
- 沒測 removeItem 拋異常時的行爲
- 沒測 setItem 保存失敗時是否給用戶反饋
- 沒測“勾選記住用戶名 + 登錄失敗”時不應保存用戶名
- 沒測存儲值是純空格時不應初始化爲已記住用戶名
- vi.stubGlobal(‘localStorage’, …) 沒有在 afterEach 清理,可能污染其他測試
我們可以就這些問題繼續讓 Claude Code 改進:
提示詞:
根據 Codex 挑戰式審查結果修復明確問題。只改必要文件,補充或調整測試,修完後運行 npm test 和 npm run build,不要提交。
需要修復:
- 不要把 .claude/settings.local.json 混入本次 feature diff。如果只是本地權限變化,請恢復該文件到本次任務前狀態。
- 修復取消“記住用戶名”時的隱私問題:safeRemoveStorage 不要吞掉 removeItem 失敗。removeItem 失敗時,界面不能假裝已經清除成功;需要向用戶展示明確錯誤狀態,或保持記住用戶名勾選狀態。
- 修復保存失敗的問題:safeSetStorage 不要被忽略。用戶勾選“記住用戶名”併成功登錄,但 localStorage.setItem 失敗時,要有用戶可見反饋。
- 初始化讀取 localStorage 時只讀一次,讓 username 初始值和 rememberUsername 狀態都從同一個讀取結果派生,避免不一致。
- 存儲裏的用戶名需要 trim 後校驗。純空格不應該初始化爲已記住用戶名。
- 把 localStorage key 從 saved_username 改成應用內命名空間,例如 codex_login_lab.saved_username。
- 給“記住用戶名”增加過期時間,例如 7 天 TTL。保存時寫入 { value, expiresAt },讀取時過期就清除並視爲無保存值。
- 補測試覆蓋:
– removeItem 拋異常時的行爲
– setItem 失敗時的用戶可見反饋
– 勾選記住用戶名但登錄失敗時,不應保存嘗試的用戶名
– localStorage 存儲純空格時,不應初始化爲已記住用戶名
– localStorage mock/stub 需要 afterEach 清理,避免污染其他測試

完美解決,12個問題全修復了。
case 3 問題交付
當 Claude Code 寫的代碼有問題時也可以交給 Codex來修復。
我們讓 Claude Code 製作一個小 bug 來體現這個功能:
提示詞:爲了測試 Codex rescue 流程,請在當前登錄頁裏故意製造一個小 bug:讓登錄成功後不再清空密碼輸入框。只改業務代碼,不改測試,不要提交。

bug已經制造好了,我們補個測試給他測出來:
爲"登錄成功後清空密碼輸入框"補一個測試。只加測試,不改業務代碼,不要提交。

接下來讓 Codex 來修復:
1 /codex:rescue --background fix the failing test with the smallest safe patch

Codex 做了正確的最小修復,很不錯:
const result = await login(username.trim(), password);
setPassword('');
setSuccessMessage(`歡迎回來,${result.displayName}`);
case 4 會話轉移
我們剛纔在 Claude Code 裏做了很多事,正好適合 transfer,在 Claude Code 裏輸入:
/codex:transfer

會給我們一個會話 ID ,我們可以直接在 Codex 裏繼續這個對話,在PowerShell 裏輸入:
codex resume 019f402e-3ff0-7d42-975d-c88c8bf1e45f

可以看到,我們與 Claude Code 的對話全都傳過來了,接下來就可以用 Codex 來繼續這個項目了。
03. 挖一挖
AI 編程不會收斂成一個 all-in-one 工具。
因爲真實開發更像一條業務流:審查、修復、上線,每一步都可能適合不同 AI。
GitLab 2026 AI Accountability Report:91% 組織已經同時使用 2 個以上 AI 編碼工具,54% 使用 3 個以上。
說明使用痛點已經從有沒有 AI 工具用,變成能不能串起來用。

Claude Code 和 Codex 串起來用,不是爲了炫技,而是爲了 AI 寫完,再由另一個 AI 審一遍。
codex-plugin-cc 讓Claude Code 負責主對話和實現,Codex 負責第二視角審查、方案挑戰、問題接手和會話延續。這個組合能減少很多真實開發裏的隱性成本:反覆切工具、重複交代上下文、人工補審查、測試失敗後重新定位問題。
對我們來說,codex-plugin-cc 可以當成一個隨叫隨到的代碼 reviewer。寫完功能後,讓 Codex 看一遍邊界條件、測試缺口和隱藏風險,比自己盯着 diff 硬看更容易發現問題。
codex-plugin-cc 不是讓開發者再多裝一個工具,而是把兩個 AI 編程助手接進同一個工作現場。
未來 AI 寫代碼會越來越常見,真正拉開差距的,會是怎麼組織這些 AI 助手,讓代碼更穩、審查更早、交付更快。
原文鏈接:GitHub 狂攬 27K Stars,把Claude Code 和 Codex 串起來用