全部作品

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