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 的提示会被拒绝,除非该访问已被显式授权。