1. OpenCode 接入第三方连接服务踩坑:内置列表里找不到我的模型怎么办
OpenCode 是一个跑在终端里的 AI 编码助手,能读代码、改文件、执行命令,适合习惯在本地编辑器旁边开一个终端窗口、把多模型来源统一管起来的开发者。它内置了一批服务提供商连接,但现实情况是:你手上可能有一张第三方云服务商的 Key,或者公司内部网关暴露了一个 OpenAI 兼容接口,这些都不在 OpenCode 的默认列表里。这时候就需要走配置文件,手动把第三方连接服务和模型塞进去。
我第一次遇到这个问题,是手里有一个 OpenAI 兼容的推理服务,接口地址和模型名都拿到了,但在 OpenCode 里翻遍连接列表就是找不到入口。当时以为是版本问题,升级了一遍还是老样子。后来才明白,OpenCode 的设计逻辑是:内置连接覆盖主流服务商,长尾的第三方来源统一通过opencode.json里的provider字段扩展。只要对方提供 OpenAI 格式接口,就能接进来。
这篇内容聚焦的就是这条路径:找到配置文件、写对baseURL和apiKey、声明模型名、重启验证。全程以 Windows 11 为例,macOS 和 Linux 的目录位置我会一并说明。你不需要改 OpenCode 源码,也不需要装额外插件,一个 JSON 文件就能搞定。适合的人群很明确:需要在本地编辑器工作流里统一管理多个模型来源、又不想为每个服务商单独装一套工具的开发者。
核心检索词先摆出来:OpenCode 添加第三方连接服务及模型,靠的就是配置文件里的 provider 扩展,接口必须是 OpenAI 兼容格式。下面从配置目录开始,一步步走完。
2. TaoToken 前置准备:拿到 Base URL、API Key 和 Model ID 三件套
在动配置文件之前,得先把三样东西凑齐:Base URL、API Key、Model ID。这三件套缺一个,后面都会报错。我拿 TaoToken 作为示例来源,因为它提供 OpenAI 兼容接口,接入路径和接其他第三方服务商完全一致,你换成自己手上的服务商地址即可。
先注册并登录,进入控制台。地址是 https://taotoken.net/api ,注意这个是不带追踪参数的 API 入口。登录后进控制台页面 https://taotoken.net/console ,在 API Keys 管理里创建一个新 Key。创建时给它起个能认出来的名字,比如opencode-local,方便以后区分。Key 只在创建时完整显示一次,复制下来先存到临时文本里,别关页面就忘了。
Base URL 这块要注意:TaoToken 的 OpenAI 兼容接口根地址是https://taotoken.net/api,但在 OpenCode 配置里通常需要写到/v1这一层,也就是https://taotoken.net/api/v1。具体以你所用服务商的文档为准,有的服务商根路径就带/v1,有的需要自己补。填错这一层,最常见的表现就是 404 或者连接被拒。
Model ID 是模型标识符,不是展示名。比如你想用某个模型,文档里会写清楚它的调用名,可能是gpt-4o这种,也可能是带前缀的。这个字符串必须一字不差地填进配置,大小写敏感。我踩过的坑就是把展示名当成了 Model ID,结果请求发出去返回模型不存在。
如果你还想在接入前先确认模型能不能正常对话,可以打开模型对话页面 https://taotoken.net/model-chat 手动发一条消息试试。这一步能帮你排除掉 Key 本身无效、余额不足这类问题,把变量控制住。等三件套都确认可用,再进配置文件环节,排障会轻松很多。
3. 可复制配置:opencode.json 里写对 provider 和 models
配置文件的位置分系统。Windows 11 下,在本机用户目录里找 OpenCode 的配置目录,通常是C:\Users\你的用户名\.config\opencode\。macOS 和 Linux 一般在~/.config/opencode/。如果目录里没有opencode.json,直接新建一个。有的话就在原有内容上追加,注意 JSON 不能有重复的顶层键。
下面是一份可以直接改的配置片段。我把它写成 TaoToken 一个连接、两个模型的例子,你可以按需增删:
{ "$schema": "https://opencode.ai/config.json", "provider": { "taotoken": { "options": { "baseURL": "https://taotoken.net/api/v1", "apiKey": "sk-你的实际Key" }, "models": { "gpt-4o": { "name": "gpt-4o" }, "gpt-4o-mini": { "name": "gpt-4o-mini" } } } } }几个关键点逐个说。provider下面的一级键taotoken是你自己起的连接名,随便叫什么都行,但后面在 OpenCode 里切换连接时看到的就是这个名字,起个能认出来的。options.baseURL填 OpenAI 兼容接口地址,TaoToken 这边写到/api/v1。options.apiKey填刚才创建的 Key,注意别把引号漏了。
models下面每个子项的键是 Model ID,也就是请求时真正发出去的模型标识;name字段是显示名,可以和键一样,也可以写得更友好。多个模型就在models里加子项。多个连接服务商,就在provider里重复配置子项,比如再加一个provider2,结构完全一样。
如果你用的是 TOML 风格的配置(部分版本或工具链支持),等价写法是这样:
[provider.taotoken.options] baseURL = "https://taotoken.net/api/v1" apiKey = "sk-你的实际Key" [provider.taotoken.models.gpt-4o] name = "gpt-4o"不过 OpenCode 主配置以 JSON 为准,TOML 片段更多是给你对照理解字段层级。改完保存,JSON 语法错误是新手最容易翻车的地方,建议用编辑器的 JSON 校验功能过一遍,或者贴到在线校验器里确认没有多余逗号、括号配对正确。
注意:
apiKey是明文存在本地配置文件里的,别把这个文件提交到 Git 仓库,也别截图发出去。团队协作时用环境变量注入更稳妥。
配置写完后,把正在运行的 OpenCode 完全退出,重新启动。这一步不能省,OpenCode 在启动时读取配置,热改不生效。重启后进入连接选择界面,应该能看到taotoken这个连接,切进去就能看到你声明的模型列表。
4. 验证请求:发一次对话确认接入真的生效
配置写完不代表接通了,得用一次真实请求验证。重启 OpenCode 后,先切到taotoken连接,再选一个模型,比如gpt-4o。如果配置里没写apiKey或者写错了,这一步可能会提示你输入 Key,按配置里填的再输一遍即可。
验证动作我建议分两层。第一层在 OpenCode 内部发一条最简单的对话,比如让它解释一段代码或者回答一个短问题。观察返回是否正常、有没有报错。第二层用命令行直接打接口,把 OpenCode 这一层排除掉,确认是服务端通还是客户端配置问题:
curl https://taotoken.net/api/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-你的实际Key" \ -d '{ "model": "gpt-4o", "messages": [ {"role": "user", "content": "用一句话说明什么是递归"} ] }'正常返回会是一个 JSON,里面choices数组第一项的message.content就是模型回答。如果这条 curl 通了,说明 Base URL、Key、Model ID 三件套都没问题,那 OpenCode 里再报错就是配置文件的字段层级或者连接名的问题。如果 curl 也不通,错误信息会直接告诉你方向:401 是 Key 问题,404 是路径问题,模型不存在是 Model ID 问题。
实测下来,OpenCode 里切换连接后第一次请求会稍微慢一点,因为要初始化。返回正常后,你可以在同一个会话里连续追问,确认多轮对话也稳定。到这一步,第三方连接服务和模型就算真正接进来了。想进一步确认模型能力,也可以回到模型对话页面 https://taotoken.net/model-chat 对比一下同样的提问,两边回答风格一致就说明接的是同一个模型。
5. 常见报错排查:401、local proxy failed、reading choices 逐个拆
接入过程里报错集中在几个地方,我把真实遇到过的对照着拆一遍。
401 Unauthorized。这个最直接,Key 无效或者没带上。检查三处:配置文件里apiKey有没有写错字符、有没有多余空格;Key 是不是已经过期或者在控制台被删了;请求头里的Bearer前缀有没有漏。如果是 OpenCode 内部报 401,先确认它读的是不是你改的那个配置文件——有时候机器上有多个配置目录,改错了地方。
local proxy failed / connection refused。这类是网络层到不了目标地址。先确认baseURL拼写,特别是/v1这一层有没有多写或少写。再确认本机网络能正常访问该域名,可以用curl -I https://taotoken.net/api/v1看返回头。如果公司网络有出口限制,可能需要走内部网关地址,这个得问运维。
reading choices 相关报错。典型表现是请求发出去了,但解析返回时读不到choices字段。原因通常是返回的不是标准 OpenAI 格式,比如服务商返回了错误对象而你当成了正常响应。先看完整返回体,确认error字段里写了什么。另一种可能是 Model ID 填错,服务端返回了兜底响应。把 Model ID 对照文档再核一遍。
OAuth 相关报错。如果你在配置里混用了需要 OAuth 的连接方式,而第三方服务商只支持 API Key,就会冲突。第三方 OpenAI 兼容接入统一走apiKey字段,不要配 OAuth 流程。把配置里多余的认证字段删掉,只留baseURL和apiKey。
模型列表为空。重启后连接出现了,但模型选不了。检查models字段的层级,它必须和options平级,都在连接名下面。缩进错了 JSON 结构就变了,模型自然读不到。
排查顺序建议固定下来:先 curl 打接口确认服务端通,再看配置文件 JSON 语法,最后看 OpenCode 里的连接名和模型名。这三层从下往上排,能覆盖九成以上的问题。如果你用的是 Cline MCP 或者 Codex 的auth.json那套体系,记住三件套永远是 Base URL、Key、Model ID,字段名可能不同,但缺一不可。
6. 把多模型来源统一管起来:后续怎么扩展和维护
配置跑通之后,真正的价值在于扩展。你可以在provider里继续加连接,比如再接一个内部网关、再接一个别的服务商,每个连接独立配baseURL和apiKey,模型列表各自声明。OpenCode 启动后所有连接和模型都在一个界面里切换,不用为每个来源装一套工具。
维护上有几个习惯值得养成。Key 轮换时只改配置文件里对应那一行,改完重启。新增模型时在models里加子项,Model ID 从服务商文档复制,别手打。配置文件建议留一份脱敏备份,把apiKey换成占位符,这样换机器时能快速恢复结构。
如果你长期在编码和 Agent 场景里用多模型,可以考虑 Coding Plan 这类按周期计费的方式,把常用模型固定下来,省得每次临时切。地址是 https://taotoken.net/coding-plan ,适合把 OpenCode 当日常主力工具的开发者。接入文档在 https://taotoken.net/doc ,字段细节和最新支持情况以文档为准。API Keys 管理还是回到 https://taotoken.net/api-keys ,新增或吊销 Key 都在那里操作。
最后留一个实用技巧:把opencode.json里的连接名起得有辨识度,比如按用途分taotoken-coding、taotoken-chat,这样在 OpenCode 里切换时一眼就知道该选哪个。模型多起来之后,这个命名习惯能省不少来回确认的时间。配置这件事,一次写对,后面就是复制粘贴加改字段,越用越顺。