0%

告别 OpenCode:用 Codex 接入 DeepSeek 开放平台 API 搭建本地 AI 编程工作流

背景

上一篇《告别 Claude Code:用火山方舟 Coding Plan + OpenCode 搭建本地 AI 编程工作流》里,我从 Claude Code 换到了 OpenCode。但用了两个月,我又把 OpenCode 换成了 Codex,模型侧也从方舟 Coding Plan 换成了 DeepSeek 开放平台的 API Key

这篇文章讲两件事:

  1. 为什么从 OpenCode 切到 Codex;
  2. 如何用 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

  1. 打开 DeepSeek 开放平台 并登录(新账号先充值,开放平台按量计费,无订阅绑定);
  2. 进入 API Keys 页面
  3. 点击「创建 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 配置。

脚本会自动完成:

  1. 把现有 ~/.codex/config.toml 备份到 ~/.codex/backup-deepseek/
  2. 写入 modelmodel_providerpreferred_auth_methodforced_login_methodmodel_reasoning_effortmodel_catalog_json 等顶层字段;
  3. 追加 [model_providers.deepseek] 配置段,写入你的 API Key;
  4. 生成 ~/.codex/models.json 模型目录(含 1M 上下文、推理档位等元数据);
  5. 清理冲突字段:例如把 wire_api = "chat" 修正为 "responses",删除会劫持请求的 profileopenai_base_url 等。

写入后的关键配置长这样:

1
2
3
4
5
6
7
8
9
10
11
12
model = "deepseek-v4-flash"
model_provider = "deepseek"
preferred_auth_method = "apikey"
forced_login_method = "api"
model_reasoning_effort = "high"
model_catalog_json = "~/.codex/models.json"

[model_providers.deepseek]
name = "deepseek"
base_url = "https://api.deepseek.com/"
wire_api = "responses"
experimental_bearer_token = "sk-你的密钥"

第四步:手动配置(可选)

不想跑脚本也可以手动改 ~/.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 模型。

日常管理与安全

  • 切换模型:重跑脚本,选 12
  • 恢复配置:重跑脚本,选 3,会从备份还原 config.toml 并删除 models.json
  • 密钥安全:确认 config.toml 没有被提交到 Git 或 dotfiles 仓库;在控制台给 Key 设置用量上限,并定期轮换。

参考