在 Rocky10 虚拟机里折腾 OpenClaw 的时候,最顺的一段是本地 Ollama:把 Ollama 监听到 12555,firewall-cmd 放行端口,再到 Windows 本机用 netsh interface portproxy 把虚拟机的 12555 映射到本机 8089,浏览器打开 localhost:8089 就能看到本地模型在回话。但本地模型回答短、排队慢,想换成云端模型时,OpenClaw 的模型供应商配置里那一栏认证信息是空的,原文也没写怎么填。TaoToken 在这里的角色很简单:提供一条兼容 OpenAI 的 API 通道,你只需要一个 Base URL 和一把 Key。先去 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 注册并创建 Key,回到 OpenClaw 的模型配置里把 Base URL 填成 https://taotoken.net/api,Key 填刚刚复制的那串。下面把「傻瓜模式安装」之后缺失的模型供应商配置单独拆开讲,同时保留原文的 firewalld 放行、portproxy 映射和 Ollama 本地部署步骤,不做替换。
1. Rocky10 里 OpenClaw 与 Ollama 12555 的原始链路
1.1 虚拟机内的 OpenClaw 安装与 Ollama 端口调整
原文用 Rocky10 虚拟机,先装 OpenClaw 的傻瓜模式,再装 Ollama。Ollama 默认监听 11434,但原文改成了 12555。改端口通常是在 systemd 的 override 文件里加环境变量,或者启动时带OLLAMA_HOST。如果你已经按原文跑通,虚拟机里执行ss -tlnp | grep 12555应该能看到 Ollama 在监听。这里不重复安装步骤,只强调一点:本地模型和云端模型是两条独立的配置线,本地端口跑通不代表 OpenClaw 知道怎么调云端。OpenClaw 的模型设置里可以同时存在多个供应商,本地 Ollama 只是其中一个,后面要新增的云端供应商需要单独填地址和 Key。
Ollama 监听 12555 之后,虚拟机内部用curl http://127.0.0.1:12555/api/tags应该能列出本地模型。这一步能过,说明 Ollama 本身没问题。如果这一步就报连接拒绝,先检查 Ollama 服务是否启动,再检查端口有没有被其他进程占用。原文在这一段没有展开,但它是后面所有验证的基础,建议先确认本地 12555 是通的。
1.2 firewall-cmd 放行 12555 和 netsh portproxy 映射 8089
Rocky 的 firewalld 默认会拦外部访问。原文执行的是:
sudo firewall-cmd --zone=public --add-port=12555/tcp --permanent sudo firewall-cmd --reload这两条命令把 12555 加入 public 区域的永久放行列表,然后重载防火墙。执行完可以用sudo firewall-cmd --zone=public --list-ports确认 12555/tcp 已经在列表里。如果虚拟机重启后防火墙规则丢失,说明--permanent没生效,重新执行一次即可。
然后在 Windows 本机用管理员 PowerShell 做端口映射:
netsh interface portproxy add v4tov4 listenport=8089 listenaddress=0.0.0.0 connectport=12555 connectaddress=虚拟机IP这一步是把本机的 8089 转发到虚拟机的 12555。注意connectaddress要换成你虚拟机的实际 IP,listenaddress如果只本机用可以写 127.0.0.1。跑完用netsh interface portproxy show all确认规则存在。如果本机 8089 已经被占用,换一个端口,同时记得后面访问 OpenClaw 时也要用新端口。
1.3 本机 localhost:8089 验证本地模型
映射完成后,本机浏览器打开http://localhost:8089,如果 OpenClaw 或 Ollama 的 Web 界面能出字,说明本地链路通了。这一步的验证方法原文已经覆盖,我们后面还会用它来对照云端通道。注意 OpenClaw 自己的 Web 界面端口可能不是 8089,8089 只是映射到 Ollama 的 12555。如果你在 OpenClaw 里聊天时选的是本地 Ollama 模型,那么请求最终会走到 12555,再经过 portproxy 回到本机,或者反过来。理清这个方向,后面排查云端问题时就不会混淆。
本地链路跑通后,OpenClaw 的模型下拉框里应该有一个本地模型可选。选它,发一句「你好」,如果几秒内出字,说明本地供应商配置完整。接下来要做的,是在同一个下拉框里增加一个来自云端通道的模型,而不是替换掉本地模型。
2. 本地 Ollama 能用之后,OpenClaw 的云端模型认证为什么空着
2.1 原文只走到「本地模型出字」,模型供应商配置没展开
原文的链路停在「本地 Ollama 能回答」,但 OpenClaw 本身支持多个模型供应商。当你点开模型设置,会看到已经有一个本地供应商,但想加云端模型时,需要填 Base URL 和 API Key。原文没有写这部分,因为本地 Ollama 不需要 Key,地址也是内网地址。云端模型不一样,它需要一把能计费的 Key,以及一个固定的 API 入口。OpenClaw 的模型配置界面通常会把「本地」和「云端」分成两个条目,本地条目里填的是http://127.0.0.1:12555这类地址,云端条目里则要填公网可达的 HTTPS 地址。
很多人卡在这里不是因为不会填,而是因为不知道 Base URL 该写什么。写https://taotoken.net不行,写https://taotoken.net/v1也不行,正确的写法是https://taotoken.net/api。这个地址末尾不带/v1,OpenClaw 会自己拼接后续路径。记住这一点,排障时能省很多时间。
2.2 云端模型需要 Base URL + API Key 这套标准入口
OpenClaw 接云端模型时,走的是 OpenAI 兼容协议。这意味着你只需要准备两个东西:一个 Base URL,一个 API Key。Base URL 告诉 OpenClaw 把请求发到哪里,API Key 用来识别你的账户。TaoToken 提供的正是这样一条兼容通道,不需要改 OpenClaw 的源码,也不需要动虚拟机的端口映射。虚拟机的 firewalld 和 portproxy 只管本地 Ollama 的 12555,云端通道走的是 OpenClaw 所在虚拟机的出站网络,和入站端口是两回事。
也就是说,你不需要把https://taotoken.net/api加到防火墙放行里,也不需要给它做端口映射。只要虚拟机可以访问外网,OpenClaw 就能把请求发出去。这一点和本地 Ollama 的配置逻辑完全不同,分开理解会清晰很多。
2.3 去 TaoToken 注册并创建一把 API Key
打开 TaoToken,注册登录后进控制台,在 API Keys 页面创建一把新 Key。复制出来的字符串先存到记事本,稍后要填进 OpenClaw 的模型配置。注意 Key 只在创建时完整显示一次,关掉页面就看不到了。如果你还没有账号,现在就用这个链接注册,后面的配置都需要它。
创建 Key 的时候可以顺手给它起个名字,比如openclaw-vm,这样以后在控制台看用量时能区分是哪台机器在用。Key 的权限和额度以控制台当时显示为准,不要假设所有 Key 都共享同一个额度池。如果你打算在多个工具里用同一把 Key,也可以,但建议至少给 OpenClaw 单独留一把,方便出问题时快速定位。
3. 在 OpenClaw 模型设置里新增 TaoToken 供应商
3.1 找到模型配置入口:设置里的供应商列表
OpenClaw 的模型配置一般在 Web 界面的设置菜单里。不同版本入口可能叫「模型」「Model Providers」「AI 设置」,但逻辑一样:先看已有供应商列表,本地 Ollama 应该在里面。点「添加供应商」或「新增模型」,准备填字段。如果你在 OpenClaw 里找不到模型设置,先确认你登录的是管理员账号,有些版本只有管理员能改模型供应商。
进入新增供应商页面后,一般会让你选供应商类型。选 OpenAI Compatible 或 Custom OpenAI,不要选 Ollama,因为本地 Ollama 已经有一个独立条目了。选错类型会导致请求被发到错误的路径,表现就是一直连不上或者返回格式错误。
3.2 字段对照:Base URL 填 https://taotoken.net/api
新增供应商时,按下表填:
| 字段 | 填写值 |
|---|---|
| 供应商名称 | 自定义,例如 cloud-channel |
| 供应商类型 | OpenAI Compatible |
| Base URL | https://taotoken.net/api |
| API Key | YOUR_API_KEY |
| 模型 ID | 从模型广场复制,不要手写 |
Base URL 末尾不要加/v1,也不要加任何查询参数。OpenClaw 自己会拼接后续路径。填错这里最常见的后果是 404。API Key 填你刚才创建的那把,如果界面有「测试连接」按钮,可以先点一下,看能不能通过。
有些版本的 OpenClaw 会把「模型 ID」和「模型名称」分成两个字段。模型 ID 填模型广场里复制的字符串,模型名称可以随便写一个好记的,比如「云端-快速模型」。显示名称不影响请求,但模型 ID 必须准确。
3.3 模型 ID 以模型广场为准,不要自己拼
模型 ID 不是越新越好,也不是随便写个名字就能用。打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 的模型广场,找到你想用的模型,复制它的 ID 字符串,粘贴到 OpenClaw 的模型 ID 字段。不要自己加日期后缀,也不要写 gpt-5 这类不存在的名字。如果模型广场里没有你想要的,就换一个列表里有的。
如果你不确定该选哪个模型,可以先用模型广场里标注为通用对话的模型试一条。等通道跑通之后,再根据实际任务换更合适的模型。模型广场的列表会更新,今天能用的 ID 明天可能被新版本替代,所以每次重新配置时都建议回广场确认一下当前可用列表。
3.4 保存后把默认模型切到 TaoToken 供应商
保存供应商后,回到聊天界面,在模型下拉框里应该能看到刚添加的云端模型。把它选为当前模型。此时 OpenClaw 的请求就会走https://taotoken.net/api,而不是本地 12555。本地 Ollama 的配置不要删,后面还要切回来对照验证。
如果你希望默认就用云端模型,可以在设置里把新供应商设为默认。但建议先不要设默认,而是手动切换,这样验证阶段可以随时回到本地模型做对照。等两条通道都确认稳定之后,再按自己的使用习惯调整默认值。
4. 虚拟机里各发一次请求:本地 Ollama 与 TaoToken 通道对照
4.1 先切回本地 Ollama 模型发一条短消息
在 OpenClaw 聊天界面把模型切回本地 Ollama,输入一句「用一句话说明你现在是本地模型」。如果很快出字,说明 firewalld、portproxy、Ollama 12555 这条链路仍然正常。这一步是基线验证,确保后面的云端问题不是本地环境引起的。如果本地模型这时候也不出字,先去查虚拟机里的 Ollama 进程和 12555 监听,不要急着调云端配置。
本地模型返回的内容可能比较简短,甚至有点慢,这都正常。只要它能出字,就说明 OpenClaw 的模型调用链路是通的。记住这次返回的速度和内容,等会切到云端模型时可以做主观对比,但不要编造加速倍数,实际差异以你当时的网络和模型为准。
4.2 再切到 TaoToken 模型发同一条消息
把模型切到刚添加的云端供应商,发同样的消息。这次请求会从虚拟机出去,经过 OpenClaw 到https://taotoken.net/api。如果返回正常,说明 Base URL 和 Key 都对了。如果报错,先看下一节的排障顺序。你也可以在虚拟机里直接用 curl 测一次:
curl https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"YOUR_MODEL_ID","messages":[{"role":"user","content":"ping"}]}'把YOUR_MODEL_ID换成模型广场里复制的 ID,YOUR_API_KEY换成你自己的 Key。返回 JSON 里有内容就说明通道本身没问题。如果 curl 能通但 OpenClaw 不通,那问题就在 OpenClaw 的供应商配置字段上,而不是网络或 Key。
4.3 去控制台看这次调用有没有记上
发完请求后,回到 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 的控制台,打开用量或日志页面,看看刚才那次调用有没有记录。如果有记录,说明请求确实到了服务端,而不是被本地缓存或错误配置吞掉了。这一步也能帮你确认 Key 是不是用对了。如果没有记录,但 OpenClaw 也没报错,那可能是 OpenClaw 没有真正发出请求,或者请求被发到了其他供应商,检查一下当前选中的模型是不是云端那条。
控制台里还能看到调用时间和消耗的 token 数,这些数据可以帮你判断 OpenClaw 发出去的请求是否符合预期。如果发现请求量异常,先检查是不是有多个 OpenClaw 实例在用同一把 Key。
5. 12555 映射通了但 OpenClaw 报错时的排查顺序
5.1 401:Key 复制不全或多了换行
如果 OpenClaw 提示 401 Unauthorized,第一个要看的是 API Key。有时候从网页复制会带上末尾空格或换行,粘贴到 OpenClaw 里就变成无效 Key。重新去控制台复制一次,粘贴时注意不要多选空白。另外确认你填的是创建 Key 时的那串,而不是其他项目的 Key。如果 Key 已经泄露或忘记,可以直接在控制台重新创建一把,然后到 OpenClaw 里更新。
还有一种情况是 Key 被禁用或额度用尽,这时候也会返回 401 或类似的权限错误。去控制台看看这把 Key 的状态,如果显示已停用,换一把新 Key 再试。
5.2 404:Base URL 末尾多写了 /v1
404 通常不是 Key 的问题,而是 Base URL 路径拼接错了。OpenClaw 里 Base URL 只填https://taotoken.net/api,不要写成https://taotoken.net/api/v1。多出来的/v1会导致 OpenClaw 拼出/api/v1/v1/chat/completions这类不存在的路径。检查一下你的供应商设置,把末尾的/v1删掉。注意https://taotoken.net/api后面也不要加斜杠,保持干净。
如果删掉/v1之后还是 404,检查一下 OpenClaw 的供应商类型是不是选成了 Ollama 或 Anthropic。类型选错时,OpenClaw 会向不同路径发请求,即使 Base URL 填对了也会 404。回到供应商设置,确认类型是 OpenAI Compatible。
5.3 本地 Ollama 失联:firewalld 与 portproxy 复查
如果切回本地模型也不出字,先看虚拟机里 Ollama 是否还在 12555 监听,再查 firewall-cmd 的放行规则有没有被重置,最后在本机 PowerShell 跑netsh interface portproxy show all看映射是否还在。虚拟机重启后,portproxy 规则有时会丢,需要重新添加。firewalld 的永久规则一般不会丢,但如果之前用了--add-port而没有加--permanent,重启后就会失效。
另外注意,netstat 或 ss 看到的监听地址如果是127.0.0.1:12555,外部仍然访问不到,需要让 Ollama 监听0.0.0.0:12555。这一点在本地链路排查时经常被忽略。
5.4 模型 ID 对不上:回模型广场重新复制
如果返回 400 或提示模型不存在,去 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 模型广场重新复制模型 ID。OpenClaw 里填的字符串必须和广场里的一模一样,大小写、连字符都不能差。不要凭记忆手打。有些模型 ID 里包含斜杠或冒号,复制时确保完整。
如果你在 OpenClaw 里配置了多个云端模型,注意切换模型时下拉框里显示的名称可能只是显示名,实际请求用的是模型 ID。切换后如果报错,先确认当前选中的模型 ID 是不是你想用的那个。
6. 下一步:把常用模型设成默认,按量看用量
配置跑通之后,可以在 OpenClaw 里把云端模型设为默认,本地 Ollama 保留为备用。这样日常聊天走云端,断网或需要本地隐私时切回 12555。想快速验证模型对话,打开 TaoToken 模型对话 用同一把 Key 发一条消息;需要管理 Key 就去 控制台 API Keys;如果长期写代码,可以看 Coding Plan 的套餐是否够用。Claude Code 接入文档在 这里,不过本篇的 OpenClaw 不需要改那些环境变量,保持 Base URL 为 https://taotoken.net/api 即可。