全部作品

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 的提示會被拒絕,除非該存取已被顯式授權。