WSL2 里的 OpenCode,opencode.json 的 Base URL 填 TaoToken

发布时间:2026/9/20 5:01:34
WSL2 里的 OpenCode,opencode.json 的 Base URL 填 TaoToken
从 WSL2 到 OpenCode一次把 Base URL 填对的完整记录在 WSL2 的 Ubuntu 里装好 OpenCode 之后真正卡住我的不是 Node 版本也不是 npm 全局安装的权限而是~/.config/opencode/opencode.json里那个baseURL到底该填什么。原文 6.3 节写的是「你的中转地址/v1」可这个地址从哪来、Key 去哪创建示例里没展开。这篇就把这一步补全用 TaoToken官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 拿到 Base URL 和 API Key填进 OpenCode 的配置文件让终端会话和 Web 界面都能正常跑起来。WSL2 安装、JDK/Maven、.wslconfig镜像网络、Swagger 中文丢失这些坑仍按原文自己处理本文只聚焦「接入配置」这一件事。一、原问题与场景6.3 节那两行配置为什么容易填错原文的 6.3 节给了两种配置方式环境变量和配置文件。两种方式里都有两个占位符OPENAI_BASE_URL/baseURL写的是https://你的中转地址/v1OPENAI_API_KEY/apiKey写的是你的API密钥问题就出在这两个占位符上。第一地址和 Key 需要自己去某个服务商注册后获取原文没有指定第二示例里带了/v1后缀很多人会下意识地把服务商给的地址再拼一个/v1结果变成/v1/v1请求直接 404第三OpenCode 的provider配置里baseURL和model是两套命名model要写成provider名/模型名provider 名是自己起的模型名要对得上服务端实际支持的 ID写错任何一个都会报「model not found」。我当时的实际报错是终端里opencode启动后发消息返回404 page not found日志里能看到请求打到了.../v1/v1/chat/completions。这就是典型的「示例带 /v1自己又加了一次」。所以这一节的核心不是「怎么装 OpenCode」而是「Base URL 和 Key 从哪来、怎么填才不重复」。二、TaoToken 前置先拿到 Base URL 和 KeyTaoToken 在这里只负责一件事提供一个 OpenAI 兼容的 Base URL 和一把 API Key。不替代编辑器不参与 WSL2 安装也不管你的 JDK 和 Maven。操作顺序如下打开官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册并登录账号。进入控制台找到 API Keys 页面deep linkhttps://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 创建一个新的 Key。复制这把 Key形如YOUR_API_KEY只显示一次先存好。记下 Base URLhttps://taotoken.net/api。注意这里不带/v1也不加任何 UTM 参数。OpenCode 的 OpenAI 兼容层会自己在后面拼/v1/chat/completions这类路径你只需要给到/api这一层。如果你还想确认模型 ID 有哪些可选可以在模型对话页面https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 里看一下当前可用的模型名后面model字段要用到。三、可复制配置opencode.json 与环境变量两种写法回到 WSL2 的 Ubuntu 终端。先确认 OpenCode 已经装好opencode --version然后创建配置目录和文件mkdir -p ~/.config/opencode vim ~/.config/opencode/opencode.json方式一配置文件推荐字段清晰{ provider: { taotoken: { type: openai, name: TaoToken, baseURL: https://taotoken.net/api, apiKey: YOUR_API_KEY } }, model: taotoken/gpt-4o-mini }几个关键点provider下的键名taotoken是自己起的随便叫什么都行但要和model字段的前缀一致。baseURL填https://taotoken.net/api不要写成https://taotoken.net/api/v1。apiKey填你在控制台创建的那把 Key。model写成provider名/模型名模型名换成你实际要用的 ID。如果模型名不对启动后会提示找不到模型。方式二环境变量适合临时切换在~/.bashrc末尾追加export OPENAI_API_KEYYOUR_API_KEY export OPENAI_BASE_URLhttps://taotoken.net/api然后source ~/.bashrc环境变量方式的OPENAI_BASE_URL同样不带/v1。两种方式选一种即可同时配置时以配置文件为准容易互相覆盖排查时先确认哪一层生效。四、验证请求与成功结果配置写完后先做一次最小验证。进入任意项目目录cd ~/projects/your-project opencode启动交互式会话后输入一句简单的话比如让它解释当前目录下的某个文件。如果配置正确会看到模型正常返回内容终端里不会出现 404 或 401。再验证 Web 模式对应原文 6.4 节opencode web --port 3000浏览器打开http://localhost:3000在输入框里对 WSL2 项目内的代码提问。能正常返回说明baseURL和apiKey都生效了。如果想在后台常驻nohup opencode web --port 3000 ~/opencode.log 21 tail -f ~/opencode.log日志里如果出现POST https://taotoken.net/api/v1/chat/completions 200就是完全通了。看到404基本是地址多拼了/v1看到401基本是 Key 不对或没生效。五、本篇常见错排查错误 1404 page not found最常见。原因就是baseURL写成了https://taotoken.net/api/v1OpenCode 又拼了一次/v1。改回https://taotoken.net/api即可。检查方法看日志里实际请求的完整 URL数一下/v1出现了几次。错误 2401 UnauthorizedKey 没填对或者环境变量和配置文件冲突。先确认opencode.json里的apiKey是完整复制的那把 Key没有多余空格如果同时设了OPENAI_API_KEY先注释掉环境变量再试。错误 3model not foundmodel字段的模型名写错了或者 provider 前缀和provider下的键名不一致。比如provider叫taotokenmodel却写成my-gpt-proxy/gpt-4o-mini就会找不到。统一前缀即可。错误 4改了配置不生效OpenCode 可能缓存了旧配置或者你改的是另一个用户的配置文件。确认当前用户是 WSL 里的登录用户路径是~/.config/opencode/opencode.json改完后重新启动opencode。环境变量方式则要source ~/.bashrc或重开终端。错误 5WSL2 里能 ping 通但请求超时这通常不是 TaoToken 的问题而是 WSL2 的网络模式。原文 4.1 节的.wslconfig镜像网络模式在这里同样适用networkingModemirrored配好后wsl --shutdown重启。如果公司网络有代理也要确认 WSL 继承了 Windows 的代理设置。错误 6Web 界面打不开opencode web --port 3000启动后浏览器访问http://localhost:3000。WSL2 的端口转发一般没问题如果打不开先确认进程还在ps -ef | grep opencode再看日志有没有报错。端口被占用就换一个比如--port 3001。六、接入文档与后续配置过程中如果对 Key 的创建、Base URL 的格式还有疑问可以直接看接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面把 OpenAI 兼容的接入方式写得很清楚。需要管理或重新生成 Key去 API Keys 页面https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 。如果你打算把 OpenCode 长期用在日常编码里而不是偶尔问两句可以了解一下 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 适合这种持续性的 Agent 式使用场景。想先确认模型能力再决定用哪个模型对话页面https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 可以直接试。回到这篇的主题WSL2 里的 OpenCodeopencode.json的 Base URL 填https://taotoken.net/api不带/v1Key 填控制台创建的那把。把这两行填对6.3 节就不再是坑6.4 节的 Web 界面也能顺利起来。剩下的 WSL2 安装、JDK/Maven、镜像网络、Swagger 中文仍按原文自己处理即可。