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 之后到底变了什么。
对照表
| OpenCode | Claude Code | Codex CLI | |
|---|---|---|---|
| 开源协议 | 开源(MIT) | Anthropic 的厂商 CLI,不开源 | OpenAI 的厂商 CLI,开源(Apache-2.0) |
| 经 Router One 可调模型 | 目录里任何对话模型:Claude、GPT、Gemini、DeepSeek、Grok、GLM、MiniMax、豆包 | Claude 系列 + DeepSeek V4 | GPT 系列 + DeepSeek V4 |
| 端点家族 | /v1/chat/completions(OpenAI 兼容) | /v1/messages(Anthropic 兼容) | /v1/responses |
| 配置方式 | opencode.json 里一个 provider 块 | 两个环境变量,或 ~/.claude/settings.json 的 env 块 | ~/.codex/config.toml 加 env_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.json;opencode models router-one 会列出你声明的模型。分步版本见 OpenCode 接入 Router One。
坑在这里: 自定义 provider 自己没有模型清单——没在 models 里声明的模型对 OpenCode 来说就不存在,而且每个键应填 /models 上带前缀的精确目录 ID(如 anthropic/claude-sonnet-5)——网关也接受多数官方原名作为别名,但目录 ID 是保证匹配的形式。想让剩余上下文显示正常,就给每个模型加一个含 context 和 output 的 limit 对象。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.json 的 env 块,再发一个 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 毫发无伤。rateLimit和tokenLimitTpm能在半路上按住失控的重试循环。 - 每次请求一条成本 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。
下一步
- 配置 OpenCode:OpenCode 接入 Router One
- 国内跑 Claude Code:Claude Code 国内接入
- 国内跑 Codex CLI:Codex CLI 国内使用,以及为什么中转对 Codex 404
- 两个厂商 CLI 正面对比:Claude Code vs Codex CLI;不订 ChatGPT Plus 跑 Codex:不用 ChatGPT Plus 也能用 Codex CLI
- 终端还是编辑器:Cline vs Cursor vs Claude Code、Aider vs Claude Code
- 实时价格与套餐:模型页、定价
到 router.one 建一把 Key,设好上限,让每个工具各跑一周真实工作,再做决定。