背景
上一篇《告别 Claude Code:用火山方舟 Coding Plan + OpenCode 搭建本地 AI 编程工作流》里,我从 Claude Code 换到了 OpenCode。但用了两个月,我又把 OpenCode 换成了 Codex,模型侧也从方舟 Coding Plan 换成了 DeepSeek 开放平台的 API Key。
这篇文章讲两件事:
- 为什么从 OpenCode 切到 Codex;
- 如何用 DeepSeek 开放平台的 API Key 把 Codex 接起来——DeepSeek 现在原生支持 Responses API,官方提供一键接入脚本,不需要任何代理。
为什么从 OpenCode 切到 Codex
OpenCode 本身没有做错什么,它依然是「一个终端接多家模型」的好工具。但工具选择要看两个维度:官方支持程度和工作流深度。这两点上,Codex 明显更符合我的需求。
1. DeepSeek 把 Codex 当「一等公民」支持
- DeepSeek API 原生支持 OpenAI Responses API,base_url 就是
https://api.deepseek.com/,Codex 可以直接对话; - DeepSeek 官方专门提供了 Codex 一键接入脚本,还写了完整接入文档;
- 配置文件是 Codex CLI、ChatGPT 桌面端、VS Code Codex 插件共用的,配置一次,三个客户端全部生效。
反观 OpenCode:没有任何官方接入文档,全靠社区适配,provider 的 baseURL、模型 limit 都要自己维护在 opencode.json 里。
2. Agent 工作流成熟度差距
Codex 是 OpenAI 官方编程 Agent,工程化能力是完整的产品矩阵:Plan 模式、多智能体并行、skills、MCP、hooks、沙箱与审批、AGENTS.md 项目约定。做「跨多文件重构、长任务、写博客」这类深度工作流时,Codex 的表现明显更稳。
OpenCode 的核心定位是「终端里聚合多家模型的 TUI」,复杂工作流能力更多依赖社区生态,遇到长任务时稳定性和可控性都不如官方产品。
3. 稳定性和迭代节奏
Codex 由 OpenAI 持续投入,CLI、桌面端、IDE 三端同步演进,配置格式稳定;OpenCode 是社区开源项目,迭代很快,但破坏性变更也频繁,opencode.json 的格式和 provider 机制隔段时间就要跟着改。
4. 接入成本:一键 vs 手写
OpenCode 接 DeepSeek 需要自己写自定义 provider(npm 包、baseURL、模型 limit、环境变量注入);Codex 接 DeepSeek 一条官方命令,自动备份配置、切换模型、恢复默认,还附带官方维护的 models.json 模型目录,1M 上下文、推理档位这些元数据都是现成的。
对比小结
| 维度 | OpenCode(+方舟) | Codex(+DeepSeek) |
|---|---|---|
| 官方接入支持 | 无,社区适配 | DeepSeek 官方文档 + 一键脚本 |
| 客户端形态 | 仅 CLI | CLI / 桌面端 / IDE 三端共用配置 |
| 协议 | OpenAI 兼容,需自配 provider | Responses API 原生支持,零代理 |
| Agent 工作流 | TUI + 社区生态 | Plan / 多智能体 / skills / MCP / hooks |
| 配置方式 | 手写 opencode.json |
官方脚本生成,自动备份/恢复 |
| 模型元数据 | 自己填 limit | 官方 models.json 现成可用 |
一句话:如果你的诉求是「一个工具接多家模型」,OpenCode 仍然值得用;如果你的主力模型是 DeepSeek、且想要稳定深度的 agent 工作流,切到 Codex 更顺。
第一步:准备 DeepSeek API Key
- 打开 DeepSeek 开放平台 并登录(新账号先充值,开放平台按量计费,无订阅绑定);
- 进入 API Keys 页面;
- 点击「创建 API Key」,复制形如
sk-...的密钥。
密钥创建后只完整显示一次,请立即保存。后面也可以先用环境变量
DEEPSEEK_API_KEY传入,避免粘贴到终端历史里。
第二步:安装 Codex
1 | npm install -g @openai/codex |
(安装 ChatGPT 桌面客户端 也可以,配置文件是共用的。)安装完成后至少运行一次 codex,让它生成 ~/.codex 配置目录,否则接入脚本会报错。
第三步:一键接入(推荐)
1 | bash <(curl -fsSL https://cdn.deepseek.com/api-docs/codex-deepseek-setup.sh) |
运行后按菜单选择:
1:使用deepseek-v4-flash;2:使用deepseek-v4-pro(是否已开放以 DeepSeek 官方文档 为准);3:恢复默认 Codex 配置。
脚本会自动完成:
- 把现有
~/.codex/config.toml备份到~/.codex/backup-deepseek/; - 写入
model、model_provider、preferred_auth_method、forced_login_method、model_reasoning_effort、model_catalog_json等顶层字段; - 追加
[model_providers.deepseek]配置段,写入你的 API Key; - 生成
~/.codex/models.json模型目录(含 1M 上下文、推理档位等元数据); - 清理冲突字段:例如把
wire_api = "chat"修正为"responses",删除会劫持请求的profile、openai_base_url等。
写入后的关键配置长这样:
1 | model = "deepseek-v4-flash" |
第四步:手动配置(可选)
不想跑脚本也可以手动改 ~/.codex/config.toml,内容就是上面那段,再新建 ~/.codex/models.json 写入 deepseek-v4-flash 的模型声明。几个关键点:
wire_api必须是"responses":Codex 只认 Responses API,"chat"会导致无法启动。DeepSeek 已原生支持该格式,所以不需要 LiteLLM、Moon Bridge 之类的转发层;model_catalog_json指向模型目录:让 Codex 知道模型的上下文窗口、推理档位、工具能力等元数据,缺了它模型行为会退化;- 密钥保护:写完后
chmod 600 ~/.codex/config.toml,不要把这份配置同步进 dotfiles 仓库。
第五步:验证
1 | codex |
- Codex CLI 启动信息中应显示
model: deepseek-v4-flash; - 随便提个需求测试,比如「列出当前目录结构并解释项目用途」;
- 如果你用 ChatGPT 桌面端:模型选择器显示「自定义」即表示正在使用本地配置的 DeepSeek 模型。
日常管理与安全
- 切换模型:重跑脚本,选
1或2; - 恢复配置:重跑脚本,选
3,会从备份还原config.toml并删除models.json; - 密钥安全:确认
config.toml没有被提交到 Git 或 dotfiles 仓库;在控制台给 Key 设置用量上限,并定期轮换。