opencode-plugin-codex — 在 Codex 裏使用 OpenCode
- TypeScript
- Node.js
- MCP
- Codex Plugin
- OpenCode CLI
- Vitest
一個公開的 Codex plugin,讓 OpenCode 直接在 Codex 內參與代碼審查、排障與任務交接。長時間任務可查看進度或取消,可見對話與私有上下文則保持分隔。
項目概覽
角色 獨立開發者 — Codex plugin 打包、MCP tool surface、OpenCode CLI 編排、transcript 邊界、測試
場景
Codex 與 OpenCode 各有優勢,但手動切換通常會丟上下文,也讓審查難以追蹤。這個項目的目標,是把 OpenCode 變成 Codex 裡可控的協作方,並保留清楚的 job control 與窄隱私邊界。
產品策略
我把 OpenCode 包成 Codex 裡的 MCP 工具,加入能力檢查、後台 job 狀態、取消能力與 transcript 邊界。OpenCode 可以審查或排障,但文件、git 與最終驗證仍由 Codex 控制。
成果與當前階段
公開 v0.2.3 · 十一個 typed MCP tools 共用同一個 response envelope · Codex 內的 OpenCode 審查支援
我的工作
- Codex plugin 暴露十一個 OpenCode MCP 工具:check、run、continue、rescue、review、adversarial review、transfer、sessions、status、result、cancel
- Background OpenCode job 編排,讓長時間 review 可在 Codex 內輪詢、檢查或取消
- 具有明確私隱邊界的會話匯入:opencode_transfer 僅傳遞使用者與助手可見的對話,隱藏的 system/developer 指令和工具輸出仍保留在 Codex 內
- Review 與 adversarial-review 入口,讓 OpenCode 擔任 diff 發出前的第二輪審查角色,而 findings 值不值得採納仍由 Codex 判定
- 確保任務文本先於檔案附件傳遞,加入檔案附件防護,並明確攔截要求 OpenCode 讀取 Codex 私有執行路徑的請求
技術證據
- TypeScript 編寫的 bundled stdio MCP server,打包為 Codex plugin
- OpenCode CLI 發現、版本檢查、背景進程管理、job ledger、timeout handling 與結果取回
- 按設計收窄 context transfer:可見對話是轉移界面,tool output 與隱藏指令留在 Codex 內
- 公開後的安全加固:任務文本保持 prompt before file 的順序,file attachment guard 區分提示詞與文件,要求讀取 Codex private runtime paths 的提示會被拒絕,除非該存取被顯式授權
- 用 Vitest 覆蓋 MCP tools 與 transcript-transfer 邊界
為什麼做它
它服務的是實際協作:當 Codex 已深入一個 repo 時,OpenCode 可以作為第二個 agent 做 review、rescue 或 adversarial critique。job status、result 與 cancel tools 讓協作過程可見、可控。
opencode_transfer 把可見對話帶入 OpenCode;私有 system/developer instructions 與 tool output 則留在 Codex 內。
公開後的加固也收緊了本地委派機制:prompt 保持在 files 之前,附件會驗證為真實文件,而要求讀取 Codex private runtime paths 的提示會被拒絕,除非該存取已被顯式授權。