OpenCode 装好后,/model 里每个模型都要单独一把 Key,TaoToken 想把这步简化:到 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 创建一把 Key,Base URL 填 https://taotoken.net/api,Kimi、DeepSeek 便能在一处切换。
OpenCode 是 GitHub 上那个自称 the open source AI coding agent 的项目,装完之后在终端里长什么样,第一次见的人多半会愣一下:一幅 ASCII 字符画的 logo,外加一串斜杠命令。真开始用它,第一个卡住的点通常不是它读不懂项目,而是/model这个命令。弹出的 Switch model 列表里塞满了各家模型,Moonshot 的 Kimi、DeepSeek,还有本地 Ollama 里的 Llama 和 Qwen,看着很自由,选起来很累——每接一家就要去那家开账号、复制 Key、翻文档找 Base URL,然后在 OpenCode 里填一遍。这篇就围绕这一步写:怎么把多模型切换收成一把 Key,配置落盘之后/model里又该怎么用。官网落地页统一用 https://taotoken.net/?utm_source=taotoken_aicg_blog_end,填进工具的接口地址统一用https://taotoken.net/api,这两个别混着用。
1. OpenCode 装完到 /model 能用,中间隔了哪些事
1.1 node -v 与 opencode --help:这两条命令先跑通
不管走桌面版还是 CLI,OpenCode 底层都吃 Node.js 这套生态。Windows 上把官网 LTS 安装包跑完,安装向导最后那个 "Tools for Native Modules" 的勾选项建议留着,它会顺手把 Python 和 Visual Studio Build Tools 装上,将来碰到需要本地编译的依赖,不用回头补课。
装完开一个 cmd,敲node -v,能看到 v20.x 或者 v22.x 这样的版本号,地基就算打好了。CLI 版一行命令:
npm i -g opencode-ai-g是全局安装,装完在任何目录都能唤醒。验证方式是opencode --help,屏幕上出现那幅 ASCII 字符画和一串命令说明,说明二进制已经进了 PATH。这一步翻车的人不少,多数是 npm 全局目录没写进环境变量,或者公司网络对 npm registry 有限制,跟 OpenCode 本身没关系。
1.2 /model 弹出来的列表,为什么每个模型都要重配一遍
在一个空目录里敲opencode唤醒 Agent,输入/model(或者按 Tab 唤出命令菜单选 Switch model),列表里的模型确实齐:Claude 系列、GPT 系列、Kimi、DeepSeek,本地 Ollama 那几家也在。
麻烦就出在这个「齐」字上。这些模型不是同一家提供的,每一家一套鉴权方式:各自的控制台、各自格式的 Key、各自文档里的 Base URL,有的还要求把模型 ID 连前缀一起写全。你原本的想法很简单——写页面用便宜快的,啃遗留代码用推理强的,在两者之间来回切。可每接一家就要重复一遍开账号、复制 Key、查文档、填配置,切个模型比写代码还费神。
更烦的是配置散落。换机器、重装系统、换项目目录,填过的那些东西未必还在。所以更省事的思路是:把多家模型的调用收敛到一条统一的兼容通道上,OpenCode 只认一个 Base URL、一把 Key,剩下的切换动作留在/model里完成。
2. 一把 Key 覆盖多家模型:先去 TaoToken 拿 YOUR_API_KEY
2.1 创建 Key 的动作,全都发生在同一个页面
OpenCode 配置里要填的东西只有三样:Base URL、API Key、模型 ID。Key 得你自己去创建。打开 TaoToken 完成注册和登录,进控制台的 API Keys 页面创建一个 Key,复制出来。
后文所有示例里,这个 Key 一律用占位符YOUR_API_KEY表示,你实际填的是自己复制出来的那一串。创建 Key 和看模型列表最好放在同一个浏览器窗口里:一边复制 Key,一边对着模型广场抄模型 ID,省得来回切标签页。
顺手养成一个习惯:Key 只放配置文件,别贴在聊天记录、issue、截图里。多人共用的机器上,配置文件的读写权限也收一收,这一步花不了半分钟。
2.2 模型 ID 必须对着模型广场抄
Base URL 好记,统一是https://taotoken.net/api,末尾不加/v1。真正容易写错的是模型 ID。
在 OpenCode 的配置里,模型 ID 是对象的一个键。写错了它不会温和地告诉你「名字不对」,表现出来往往是请求发出去没下文,或者/model里选完没反应,回头排查半天。所以模型 ID 一律以模型广场当时列表里显示的为准,不要凭记忆写,也不要去抄别人半年前博客里的配置。
Kimi、DeepSeek 这些名字在列表里都看得到,但具体到 ID 字符串,各家的命名规则不一样,有的带版本后缀,有的带厂商前缀。把你打算用的那一两个先抄进便签,配置的时候直接粘,别手打。
3. opencode.json 里把 provider 指到统一通道
3.1 配置文件放哪:全局一份,项目一份
OpenCode 的配置是一个 JSON 文件,有两种放法:
- 全局配置:Linux / macOS 在
~/.config/opencode/opencode.json,Windows 在%USERPROFILE%\.config\opencode\opencode.json - 项目配置:放在项目根目录的
opencode.json,只对这个仓库生效
日常最省事的做法是全局写一份通用配置,偶尔遇到某个项目要换模型,再在项目根目录放一份覆盖它。改文件之前先把原文件备份一份,配置写坏导致 OpenCode 起不来时,回滚比重写快。
3.2 provider 段怎么写:baseURL 与 apiKey 的位置
下面这份是全局配置的骨架,把里面的大写占位符换成你自己的值:
{ "$schema": "https://opencode.ai/config.json", "provider": { "taotoken": { "npm": "@ai-sdk/openai-compatible", "name": "TaoToken", "options": { "baseURL": "https://taotoken.net/api", "apiKey": "YOUR_API_KEY" }, "models": { "YOUR_MODEL_ID": { "name": "YOUR_MODEL_ID" }, "YOUR_SECOND_MODEL_ID": { "name": "YOUR_SECOND_MODEL_ID" } } } }, "model": "taotoken/YOUR_MODEL_ID" }几个必须盯住的点:
baseURL写https://taotoken.net/api,结尾不要加/v1,加了会走到别的路径上,报错信息还不一定直白。apiKey填你从官网创建的那串,别把YOUR_API_KEY这个占位符原样留在文件里。models里一次可以写多个模型,Kimi 一个、DeepSeek 一个,切换时只要换model这一行,或者在/model命令里选。- 顶层
model是默认模型,格式是provider 名/模型 ID。
OpenCode 版本迭代比较快,字段名以你本机版本的配置文档为准。如果用的是更新或更旧的版本,npm这一项可能换了名字,也可能被省略掉,对着文档核一遍再保存。
3.3 回到 /model:Switch model 里把配好的模型选出来
保存配置后,重启 OpenCode,或者直接新开一个会话。输入/model,选 Switch model,这次列表里应该能看到刚配的那个 provider 下面挂着的模型。用方向键选中,回车确认,接着正常发消息就行。
如果列表里没出现,先别急着怀疑网络,多数情况是三个字符级的问题:JSON 里多了个逗号、baseURL写成带/v1的、模型 ID 和models里的键对不上。这三处用编辑器的高亮对一遍,比反复重装快。
4. 跑通第一次对话:读文件、改文件、换模型
4.1 起一个空目录,先让它做一件小事
新建一个空目录,比如D:\opencode-test,在目录里敲opencode唤醒 Agent,然后给一个最小的任务,例如「写一个把 Markdown 表格转成 CSV 的 Node 脚本,放在当前目录」。让它读目录、写文件、顺手说清楚每一步在做什么。
这一步的观察点不是代码质量,而是请求有没有真的发出去。能在几秒内开始输出、能创建文件、能解释自己打算怎么做,说明 Base URL 和 Key 都是通的。你可以顺手让它再改一版,加上从标准输入读取的能力,看多轮对话是否连贯。
4.2 换一个模型再问一遍,确认切换真的生效
同一个会话里输入/model,换成另一个模型,再问一个风格差异明显的问题,比如「刚才那个脚本如果输入文件超过 100 MB 会怎样」。不同模型在啰嗦程度、追问习惯、给的方案上会有区别,能感觉到差异,就说明切换确实换了后端模型,而不是一直挂在默认那个上。
想验证得更严谨一点,可以让它自报家门,或者换个技术选型问题看它给出的库是否变化。这个动作做一次就够了,不用每次都试。
5. /model 切换模型时的报错对照
5.1 401 与 invalid api key:三种常见原因
报 401 基本是鉴权这一步的问题,按顺序排:
第一,apiKey里还留着占位符,或者复制 Key 的时候把首尾的空白一起带进去了,粘进 JSON 后肉眼看不出来,用编辑器的显示空白字符功能看一眼。
第二,Key 被删除或在别处重新生成过,控制台里那把已经失效,去 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 重新建一把替换。
第三,项目根目录还有一份opencode.json,它把全局配置覆盖掉了,里面写的是旧的 Key。两处都查一遍。
5.2 baseURL 多写了 /v1 之后的表现
https://taotoken.net/api/v1这种写法看起来符合习惯,但在这套配置里是不对的,接口地址就是https://taotoken.net/api。多一段路径之后,请求会落到不存在的位置,表现可能是 404,也可能是连着重试后超时,具体取决于当前版本怎么处理。
排查办法很直接:打开配置文件,搜一下baseURL,看有没有/v1,顺手也看看结尾有没有多余的斜杠。改完保存,重开会话再试。
5.3 列表里选完没反应:模型 ID 与 provider 没对上
有一种情况是/model里能看到模型,选中也不报错,但发消息就是没输出。这通常是models里的键、顶层model那一行、以及模型广场上真实的 ID 三者有出入。
对照办法:打开模型广场,找到你要的那个模型,把 ID 整串复制出来,替换models里的键和model里的后半段。注意大小写和连字符,这两处最容易被手打搞错。
6. 多模型混用之后,回控制台对一下账
6.1 /sessions、/share、/timeline 在多模型下的注意点
OpenCode 的会话管理挺适合多模型混用。/new开一个新会话,上下文是干净的,刚才调试钢琴页面的对话不会污染新任务;/sessions列出历史会话,上下键选回去,之前的对话记录和文件改动都还在。多模型切换时,建议一个任务尽量待在同一个会话里,不要让同一个上下文在不同模型之间反复横跳,输出风格会变得很碎。
/share生成的是只读链接,会把对话和每一步改动复现出来,发给同事看进度很方便。/timeline是改动的时间线,能看到每次 AI 对文件的修改,不满意可以回滚。这两处分享出去的内容里不要出现配置文件截图,Key 就在那里面。
6.2 用量回看与接下来的几个入口
跑了几个会话之后,回到控制台看一眼这一次的调用有没有记上账,顺便确认模型 ID 是不是你配置里的那个,别把便宜的模型和贵的模型用反了。
配置改完、第一次对话也跑通了,接下来可以按这个顺序走:先在 TaoToken 模型对话 里用同一把 Key 发一条测试消息,确认 Key、Base URL、模型 ID 三者是配套的;确定要把 OpenCode 当日常主力写代码,就去 Coding Plan 看套餐够不够用;想给别的工具单独开一把 Key,控制台 API Keys 直接建;如果顺手也装了 Claude Code,环境变量怎么对照,接入文档 里有现成的写法。