配置 OpenCode 的 Router One provider 与模型 ID
OpenCode 是 Anomaly 出品的开源终端编程 agent,自定义模型 provider 直接写进 opencode.json。一段指向 Router One OpenAI 兼容端点的 provider 配置,就能把 GPT、Claude、Gemini、Grok 系列模型放进它的模型选择器,共用一把 Key——网关在大陆可直连,支付宝或银行卡即可充值。agent 会话无人值守时烧 token 很快,每次调用在网关侧都有成本 Trace,给 Key 设 maxSpend 上限就是硬性止损。
把 OpenCode 配置到 Router One base URL
在 opencode.json(项目级;全局配置在 ~/.config/opencode/opencode.json)的 provider 下新增一条:npm 填 @ai-sdk/openai-compatible,options.baseURL 指向网关,想进选择器的目录模型在 models 里逐个列出。Key 用 {env:变量名} 语法从环境变量读取,不用明文写进文件。选模型用 provider-id/model-id 的格式——这里就是 router-one/<模型 ID>,在 TUI 的 /models 命令里选,或固定写进顶层的 model 字段:
{
"$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": {
"<model-id-from-/models>": {
"name": "<label shown in the picker>"
}
}
}
},
"model": "router-one/<model-id-from-/models>"
}OpenCode 该填哪个模型 ID?
从 /models 页复制精确的模型 ID,保留大小写、连字符和版本后缀,不要用展示名称代替。打开该模型的详情页,核对支持的 API 端点、上下文窗口和工具调用等能力,再与 OpenCode 当前选择的 provider 和功能对应。模型出现在目录里,不等于当前客户端能调用它的所有功能。建议为每个工具单独建 API Key,并设置 maxSpend 消费上限。
OpenCode 用的是哪种 API 协议?
OpenAI 兼容描述的是接口格式,不能据此推断 Chat Completions(/v1/chat/completions)、Responses(/v1/responses)和 Anthropic Messages(/v1/messages)可以互换。先核对工具当前版本、provider 配置和实际请求路径,再查模型详情与 API 兼容性事实页。一次普通对话成功,也不能证明服务端工具、历史状态或文件编辑功能都受支持。
在 trace 里验证 OpenCode 的调用
先在 OpenCode 发出一次简单文本请求,再到 Dashboard → Logs 按时间、模型和 request_id 核对 trace:tokens、花费、延迟和状态码。成功后再分别验证流式输出、工具调用和多轮历史。失败时保留实际请求路径、完整错误消息及 request_id;没有对应日志时,先查客户端配置和网络,不能仅凭客户端报错认定是网关或上游故障。
常见问题
OpenCode 提示模型未知或认证失败,怎么排查?
按顺序查三处:model 字符串里的 provider id 必须和 provider 下的键名一致(router-one/<模型 ID>);每个模型都要出现在该 provider 的 models 里,ID 与 /models 页完全一致;options.apiKey 必须能解析——用 {env:ROUTER_ONE_API_KEY} 时,启动 opencode 的那个 shell 必须已经导出该变量,变量不存在时会被替换成空字符串,而不是报错。
Claude 系列能走 Router One 的 Anthropic 兼容端点吗?
可以,属于可选项。上面的 OpenAI 兼容配置已经覆盖 Claude 系列;如果想让这些模型走原生 Messages API,再加一条 provider:npm 填 @ai-sdk/anthropic,options.baseURL 填 https://api.router.one/v1——网关在 /v1/messages 上原生服务 Claude 系列,该包发送的 x-api-key 头里放同一把 Key 即可。两条 provider 用不同的 id,模型列表互不干扰。
OpenCode 能通过网关用哪些模型?
选用当前目录中同时支持 OpenCode 所用端点和所需功能的模型。精确 ID、当前单价与能力以 /models 及模型详情为准;不要仅按 GPT、Claude 等系列名判断兼容性。客户端能列出模型,只证明模型发现成功,仍需验证实际调用。
能列出模型,但调用报 400 或 404,怎么办?
先记录实际请求路径和错误消息,再核对精确模型 ID。400 可能是参数、工具类型或模型与端点不匹配;404 可能是请求路径或资源不存在,不能直接判定模型下线。若错误提示 must be called via,按它指明的端点调整客户端 provider,或换用支持当前端点的模型。不要在所有工具里统一增删 /v1 或 /chat/completions。
中国大陆能直连吗?
能。网关在大陆可直连、无需 VPN,配置与全球环境完全一致。
报 401/402/403/429 怎么排查?
先到 Dashboard → Logs 核对请求及错误消息。401 查 Key 是否传入和有效;402 查钱包余额与 maxSpend;403 查 Key 权限和访问限制;429 查请求频率、token 限额及上游限流,按错误来源处理。保留 request_id,再按错误码速查页逐项排查。