跳到主要内容
Router One
返回博客

OpenCode vs Claude Code vs Codex CLI:一把 Key 全跑通

发布作者Router One 团队方法说明

OpenCode、Claude Code、Codex CLI 是 2026 年国内开发者真正会放进候选名单的三个终端编程 agent,一句话结论:要在 Claude 系列上拿到最大自主性,选 Claude Code;要一个沙箱优先、跑 GPT 系列的 agent,选 Codex CLI;不想绑定任何一家厂商、要开源且能对接任意 OpenAI 兼容端点的 agent,选 OpenCode

在 Router One 上,OpenCode 意味着一个配置文件就能调用全部 40+ 模型。三个工具都能用同一把 Router One Key 计费:Claude Code 走 Anthropic 兼容端点,Codex CLI 走 Responses 端点,OpenCode 走 OpenAI 兼容端点,每一次请求都落进同一个钱包、带同一套每请求成本 Trace;端点国内直连、无需 VPN,充值用支付宝或银行卡,不需要境外信用卡。下面按可验证的属性对比三者——开源协议、模型家族、配置方式、计费路径、国内可用性——然后给出在一个账号上把三个都跑起来的完整配置。

如果你已经把范围缩到两个厂商 CLI,Claude Code vs Codex CLI 深入讲了自主性与沙箱的取舍;如果问题是「终端还是编辑器」,先看 Cline vs Cursor vs Claude Code。本文补上两篇都跳过的第三个角:不绑厂商的开源 agent,以及三者共用一把 Key 之后到底变了什么。

对照表

OpenCodeClaude CodeCodex CLI
开源协议开源(MIT)Anthropic 的厂商 CLI,不开源OpenAI 的厂商 CLI,开源(Apache-2.0)
经 Router One 可调模型目录里任何对话模型:Claude、GPT、Gemini、DeepSeek、Grok、GLM、MiniMax、豆包Claude 系列 + DeepSeek V4GPT 系列 + DeepSeek V4
端点家族/v1/chat/completions(OpenAI 兼容)/v1/messages(Anthropic 兼容)/v1/responses
配置方式opencode.json 里一个 provider 块两个环境变量,或 ~/.claude/settings.jsonenv~/.codex/config.tomlenv_key
经 Router One 计费钱包按 token 扣费,Key 级消费上限同一个钱包、同一套 Trace同一个钱包、同一套 Trace

协议这一行决定了其余所有行:两个厂商 CLI 只能调 Router One 以各自协议提供的模型,而 OpenCode 说的 /v1/chat/completions 是 Router One 上每一个模型都提供的端点,所以它是三者里唯一能在同一份配置里同时调到 Claude、GPT、Gemini 和 DeepSeek 的工具。

OpenCode:开源,不绑任何厂商

OpenCode 是一个开源(MIT)的终端编程 agent:客户端/服务端架构上的一个 TUI,把模型供应商当成配置来处理。在 opencode.json 里声明一个 provider,列出它提供的模型,再以 provider/model-id 的形式选用。因为它对你给的任何 base URL 都按 OpenAI 兼容协议通信,一个 provider 块就能覆盖 Router One 上的全部模型,Claude 也包括在内:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "router-one": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Router One",
      "options": {
        "baseURL": "https://api.router.one/v1",
        "apiKey": "{env:ROUTER_ONE_API_KEY}"
      },
      "models": {
        "anthropic/claude-sonnet-5": { "name": "Claude Sonnet 5" },
        "openai/gpt-5.6-sol": { "name": "GPT-5.6 Sol" },
        "deepseek-v4-pro": { "name": "DeepSeek V4 Pro" }
      }
    }
  },
  "model": "router-one/anthropic/claude-sonnet-5"
}

在运行 opencode 的 shell 里导出 Key(export ROUTER_ONE_API_KEY=sk-your-api-key),OpenCode 加载配置时会把 {env:…} 替换成真实值;也可以改用它的 /connect 命令把 Key 存起来。配置文件放在项目根目录,或全局放在 ~/.config/opencode/opencode.jsonopencode models router-one 会列出你声明的模型。分步版本见 OpenCode 接入 Router One

坑在这里: 自定义 provider 自己没有模型清单——没在 models 里声明的模型对 OpenCode 来说就不存在,而且每个键应填 /models 上带前缀的精确目录 ID(如 anthropic/claude-sonnet-5)——网关也接受多数官方原名作为别名,但目录 ID 是保证匹配的形式。想让剩余上下文显示正常,就给每个模型加一个含 contextoutputlimit 对象。npm 保持 @ai-sdk/openai-compatible,OpenCode 文档把它对应到 /v1/chat/completions;文档也允许换成 @ai-sdk/openai 走 Responses 协议,或给内置的 Anthropic provider 覆盖 base URL,但这两条路各自只够到该协议原生提供的那部分模型,而且我们没有端到端验证过 OpenCode 覆盖内置 Anthropic provider 这条路(网关本身接受该包发送的 x-api-key 头)。

Claude Code:Anthropic 协议上的最大自主性

Claude Code 是 Anthropic 的终端 agent:在仓库里跑 claude,描述任务,它就自己读文件、改代码、跑测试、迭代,hooks、skills 和 CLAUDE.md 留给想把团队规范固化下来的人。它说 Anthropic Messages 协议,所以在 Router One 上走 Anthropic 兼容端点,能调 Claude 系列——Claude Opus 5、Claude Sonnet 5、Claude Haiku 4.5——以及同一端点上的 DeepSeek V4(deepseek-v4-pro / deepseek-v4-flash)。配置就是两个环境变量:

export ANTHROPIC_BASE_URL=https://api.router.one
export ANTHROPIC_AUTH_TOKEN=sk-your-api-key

也可以交给一键脚本:未安装就先装 Claude Code,把同样两个值写进 ~/.claude/settings.jsonenv 块,再发一个 1 token 的请求验证 Key:

curl -fsSL https://router.one/install/claude-code.sh | bash -s -- sk-your-api-key

注意 base URL 不带 /v1——Claude Code 会自己拼路径。Windows 命令见 CLI 配置指南

坑在这里: 两个变量,不是三个。ANTHROPIC_API_KEY 不需要设置,之前设过请 unset——残留的 export 在当前版本会触发一次多余的授权确认。另外优先级和多数人的直觉相反:~/.claude/settings.json 里的 env 块会覆盖 shell 的 export,所以如果请求 Trace 里出现了你没料到的 base URL,先查文件再查 shell。

Codex CLI:Responses 协议上的沙箱优先

Codex CLI 是 OpenAI 的开源终端 agent(Apache-2.0)。它沙箱优先——命令在明确的审批模式下运行——而且说的是 Responses API 线协议而非经典的 Chat Completions,这正是通用中转对它 404、而原生实现了 wire_api = "responses" 的网关能直接跑通的原因(见 Codex 与 Responses API)。通过 Router One 它能调 GPT 系列——GPT-5.6 Sol、GPT-5.5、GPT-5.4、GPT-5.3 Codex Spark——以及 DeepSeek V4。provider 写在 ~/.codex/config.toml 里:

model = "gpt-5.6-sol"
model_provider = "router"

[model_providers.router]
name = "Router One"
base_url = "https://api.router.one/v1"
wire_api = "responses"
env_key = "ROUTER_ONE_API_KEY"

env_key 就是机制本身:配置里写的是环境变量名,Codex 从那个变量读你的 Key,作为 Bearer token 发送,不碰你的 ChatGPT 登录状态。把 ROUTER_ONE_API_KEY 写进 shell profile,或者交给一键脚本写文件、持久化变量并验证 Key:

curl -fsSL https://router.one/install/codex.sh | bash -s -- sk-your-api-key

坑在这里: model 这一行必须是 /v1/responses 上提供的模型。在 config.toml 里填一个 Claude 系列的 ID,网关会在任何模型跑起来之前就用 400 拒掉请求——Claude 在 Anthropic 兼容端点和 /v1/chat/completions 上提供,从不在 Responses 上,每个模型页都列出了它的端点。还有一个只在中转上才会撞到的坑:Codex 的 review 线会以模型 ID codex-auto-review 发请求,Router One 的目录里就有它,所以 /review 不用改 review_model 也能直接用。

一把 Key 跑三个工具

「一把 Key 能不能跑三个」的字面答案是能——同一把 sk- Key 在三个端点上都被接受。更好的做法是一个工具一把 Key,全部由同一个钱包供血,因为 Key 级归因才能把账本变成答案:

  • 每个工具一个硬上限。 给每把 Key 设 maxSpend——比如给一个没用过的 agent 试用一周,设 $10——会话失控时到顶即停,钱包和另外两把 Key 毫发无伤。rateLimittokenLimitTpm 能在半路上按住失控的重试循环。
  • 每次请求一条成本 Trace。 每次调用都记录模型、token、花费、延迟和状态(Dashboard → Logs),「那个烧钱的下午是 OpenCode 还是 Claude Code」就是按 Key 筛一下,不用猜。账本具体记什么见成本追踪,「一个工具一把 Key」的实操见按 Key 归因成本
  • 三个工具共享同模型故障转移。 上游返回可重试的 5xx 或超时时,Router One 可以把请求改由另一条提供同一个所请求模型的健康线路重试。它不会换成别的模型,也不是零宕机保证——长 agent 会话仍应容忍偶发的失败调用。
  • 换模型不换工具。 Claude Code 用 /model deepseek-v4-pro 就切到 DeepSeek V4;Codex 改一行 model =;OpenCode 在 models 下多加一条。三者都不需要新账号、新 Key 或新的计费关系。模型页就是实时价目表——部分模型最低可到官方公示价的 1 折(最高省 90%),具体见低价 Claude API低价 GPT API;想要固定月费,钱包之外还有 Pro/Max/Ultra 订阅,见定价

国内使用:差异最大的一节

三个工具默认调用的厂商端点,在国内运营商网络上不挂 VPN 都不稳定;厂商计费也默认你有境外卡——OpenCode 自己没有计费,继承的是你配置的那个供应商的门槛。Router One 把这两堵墙一起拆掉:端点国内直连、无需 VPN;钱包在同一个托管收银台用支付宝或银行卡充值,也支持 6 条链上的 USDT/USDC(Tron、BSC、以太坊、Polygon、Base、Arbitrum),全程不需要美国信用卡。换好端点之后如果仍然报 403 或「unsupported country, region, or territory」,说明请求其实还在走旧端点:对照 Claude Code 403 排查清单地区限制修复逐项检查。三个工具的国内专属配置页:Claude Code 国内接入Codex CLI 国内使用OpenCode 接入 Router One

常见问题

OpenCode 能通过 Router One 调 Claude 模型吗? 能。OpenCode 说 OpenAI 兼容协议,而 Router One 在 /v1/chat/completions 上和其他模型一起提供 Claude 系列。在 models 里声明精确的目录 ID(例如 anthropic/claude-sonnet-5),再以 router-one/anthropic/claude-sonnet-5 选用即可。

Claude Code 能调 GPT 模型吗?Codex CLI 能调 Claude 吗? 不能。Claude Code 说 Anthropic 协议,能调 Claude 系列加 DeepSeek V4;Codex CLI 说 Responses 协议,能调 GPT 系列加 DeepSeek V4。把 Claude 的 ID 发到 /v1/responses,会在任何模型跑起来之前收到 400。DeepSeek V4 是三个工具都能驱动的唯一家族。

需要三把 API Key 吗? 一把 Key 三个工具都能用。推荐的做法是一个工具一把 Key,由同一个钱包供血:每把 Key 各带自己的 maxSpend 上限,每请求 Trace 按 Key 筛选,每个工具花了多少是事实而不是估算。

用这些 CLI 需要 Claude Pro、Claude Max 或 ChatGPT Plus 吗? 不需要。通过 Router One,三个工具都从预充值钱包按公开的模型费率按 token 扣费,OpenCode 本来就没有厂商订阅这回事。重度用户也可以选 Router One 自己的 Pro/Max/Ultra 订阅作为固定月费的替代,见定价

三个工具里哪个最省钱? 决定账单的是模型,不是工具:同一个模型、同一个公开费率,从哪个工具发出去都是一样的价。差别在每个 agent 每轮发多少上下文、会话跑多长,所以 Claude Code token 成本详解把篇幅花在模型分工、会话卫生和 Key 级上限上——这些建议原样适用于 OpenCode 和 Codex。

下一步

router.one 建一把 Key,设好上限,让每个工具各跑一周真实工作,再做决定。

相关权威页面

这篇文章归入「Claude Code 中国」主题,以下页面作为商业页、配置文档、证据页和信任事实源。

相关阅读