第三方中转(Claude Code 兼容)
这一页只做一件事:把“宣称兼容 Claude Code”的第三方中转,接到 OpenCode 里。
学完你能做什么
你将完成 3 件事:
- 配一个独立 provider(例如
claudecode-relay),把baseURL指到中转的.../v1 - 配置 API Key(二选一:写在
opencode.json或存到auth.json) - 在
/models里选择模型并发一句话验证
🎒 开始前的准备
- [ ] 完成了 1.2 安装,能运行
opencode - [ ] 你已经从中转服务拿到了
baseURL和API Key
从中转服务拿到两样东西:
- baseURL:中转给你的接口地址
- API Key:通常形如
k-...
baseURL 的填写规则(常见两种给法):
- 对方给到
/v1就原样填:例如https://url.com/v1 - 只给域名就补
/v1:例如https://url.com→https://url.com/v1
提示:很多 Claude/Anthropic 兼容中转的消息接口路径会包含
.../v1/messages,可用于你排查 baseURL 是否少了/v1。
跟我做
第 1 步:在 opencode.json 配置一个独立 provider
编辑 ~/.config/opencode/opencode.json,添加一个自定义 provider(这里用 claudecode-relay 作为 provider ID):
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"claudecode-relay": {
"npm": "@ai-sdk/anthropic",
"options": {
"baseURL": "https://url.com/v1"
},
"models": {
"claude-opus-4-5-20251101": {
"name": "zhongzhuang",
"limit": {
"context": 200000,
"output": 64000
},
"options": {
"thinking": {
"type": "enabled",
"budgetTokens": 16000
}
}
}
}
}
}
}说明:
npm用来告诉 OpenCode:这个 provider 要按哪种"协议/SDK 驱动"发请求。Claude/Anthropic 兼容中转一般要用@ai-sdk/anthropic;如果你删掉这行,OpenCode 可能会按默认的 OpenAI-compatible 方式去理解这个 provider,从而请求失败。- 你也可以直接改
provider.anthropic来走中转;那种写法本质上同样是在走 Anthropic 这套协议,但不建议(原因见文末"补充说明")。 claude-opus-4-5-20251101会作为你在 OpenCode 里看到的"模型 ID",在/models里显示成claudecode-relay/claude-opus-4-5-20251101models.<id>.name需要替换成中转商要求的模型名(本章用zhongzhuang作为教学占位)limit.context和limit.output定义模型的上下文窗口和最大输出长度。如果不配置,默认值为 0,会导致自动压缩功能失效。推荐值见下表。
| 模型 | context | output |
|---|---|---|
| claude-opus-4-5 | 200000 | 64000 |
| claude-sonnet-4-5 | 200000 | 64000 |
💡 想深入了解上下文压缩机制和
limit参数的作用?请参阅 5.20 上下文压缩。
第 2 步:配置 API Key(二选一)
你只需要选下面一种方式配置 Key:
方案 1:把 Key 写在 opencode.json(更简单)
在上面的 provider.claudecode-relay.options 里添加 apiKey,并推荐用 {env:...}:
{
"provider": {
"claudecode-relay": {
"options": {
"baseURL": "https://url.com/v1",
"apiKey": "{env:CLAUDECODE_RELAY_API_KEY}"
}
}
}
}方案 2:把 Key 存到 OpenCode 认证(auth.json)
运行:
opencode auth login在交互界面里:
- 选择
Other - 输入 provider ID:
claudecode-relay - 粘贴你的 API Key
它会把 Key 写入 OpenCode 的认证文件 auth.json。你可以用下面命令查看“实际写到了哪个路径”(命令输出里会显示路径):
opencode auth list重要:不要两边都写
为了避免你“以为换了 Key 但没生效”,建议只保留一种方式。
- 如果你选择了方案 1(
opencode.json里有options.apiKey),就不要再做auth login。 - 如果你选择了方案 2(存到
auth.json),就不要在opencode.json里再写options.apiKey。
原因:当 opencode.json 里存在 options.apiKey 时,会优先使用它。
第 3 步:选择模型并验证
启动 OpenCode:
opencode输入:
/models选择 claudecode-relay/claude-opus-4-5-20251101,然后发送一句话验证:
你好,请简单介绍一下你自己检查点 ✅
- [ ]
/models里能看到claudecode-relay/...并成功选择 - [ ] 发送消息能收到 AI 回复
踩坑提醒
| 现象 | 原因 | 解决 |
|---|---|---|
| 404 / Not Found | baseURL 写错了 | 优先检查 baseURL 是否应该是 .../v1,并确认它能拼出 .../v1/messages |
| 401 / Unauthorized | Key 无效/没权限 | 重新生成 Key,或检查套餐/权限 |
| 选了模型就报错 | 模型名不支持 | 调整 models.<id>.name 为中转商支持的模型名 |
补充说明:为什么不建议直接改 provider.anthropic
你当然可以把中转写到 provider.anthropic,但不建议这么做:
- 会把你原本的
anthropic配置也一起“换成中转”(不利于后续切回官方或对比排查) - 更容易在
opencode auth login时把 Key 存到错误的 providerID(例如误存成anthropic),排查会变复杂
用一个独立 providerID(例如本章的 claudecode-relay)能把“中转配置”与“官方 anthropic 配置”隔离开。
下一步
- 回到 1.4 总览 选择下一条路线,或进入 2.1 界面与基础操作
遇到问题?
中转配置卡住了?加入社群,和 500+ 同路人一起交流,实时答疑。

