1. Ubuntu 上跑 OpenClaw,换模型比装模型还费劲
OpenClaw 在 Ubuntu 上装完之后,真正让人头疼的往往不是安装本身,而是后面想换模型。默认跑通一个供应商之后,你听说 GLM 在编程和修 bug 上表现不错,想把 OpenClaw 的 Agent 请求切到 GLM,结果发现要重新去申请一把 GLM 的 Key,再回到 OpenClaw config 里改 provider、改 baseUrl、改 apiKey,改完还要重启 gateway,确认配置真的生效了。如果之前已经接过别的模型,现在手里就有两三套认证信息,哪把 Key 对应哪个供应商,时间一长自己都要翻笔记。
这个问题的本质是:OpenClaw 本身支持多供应商,但认证信息是分散的。你每接一个模型,就多一份 Key 要维护;每切一次供应商,就多一轮配置改动和重启。对只是想让 Agent 稳定干活的人来说,这部分成本并不产生任何业务价值。
这篇讲的思路是:用一把 TaoToken 的统一 Key,把 OpenClaw 的模型供应商切到 GLM。你不需要为 GLM 单独维护一套认证,只需要把 OpenClaw 的 Base URL 指向https://taotoken.net/api,provider 选 GLM,之后 OpenClaw 发起的 Agent 请求都会带着这把 Key 走 GLM。适合已经在 Ubuntu 上把 OpenClaw 跑起来、想换模型但不想再折腾多套 Key 的人。
2. TaoToken 在 OpenClaw 里扮演什么角色
2.1 一把 Key 对应一个统一入口
可以把它理解成 OpenClaw 和模型供应商之间的一个统一入口。以前是 OpenClaw 直接拿 A 家的 Key 找 A 家,拿 B 家的 Key 找 B 家;现在改成 OpenClaw 只认一个 Base URL 和一把 Key,具体这次请求走哪个模型,由你在配置里指定的 provider 决定。
对 OpenClaw 来说,它看到的仍然是一个 OpenAI 兼容的接口,所以配置方式和你之前接别的兼容接口没有本质区别。区别在于,这把 Key 不是某个单独供应商发的,而是你在 TaoToken 这边创建的统一 Key,后面想从 GLM 切到别的模型,通常只改 provider 和模型名,不用再动认证信息。
2.2 创建 Key 和确认模型名
第一步是拿到这把统一 Key。打开https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=,进控制台创建一把 API Key。创建完之后先复制出来,很多控制台只完整显示一次,后面 OpenClaw 配置里要用。
第二步是确认你要用的模型名。GLM 系列在编程场景常用的有 glm-4.6 这类命名,但具体当前可用哪些、名字怎么写,以你创建 Key 之后在控制台或接入文档里看到的为准。模型名写错是后面 404 报错最常见的原因,所以这一步别凭记忆写。
第三步是记住两个固定值:Base URL 填https://taotoken.net/api,provider 选 GLM。这两个值加上刚创建的 Key,就是 OpenClaw 那边要改的全部内容。
3. 可复制配置:把 OpenClaw 的 provider 指向 GLM
3.1 先看当前配置结构
不同版本的 OpenClaw 配置字段可能略有差异,所以动手之前先看一眼当前结构,别直接照抄。Ubuntu 上一般用下面这条命令进入配置界面:
openclaw config如果你更习惯直接看文件,OpenClaw 的配置通常在用户目录下的隐藏目录里,可以用:
ls -la ~/.openclaw/ cat ~/.openclaw/config.json 2>/dev/null || cat ~/.openclaw/openclaw.json 2>/dev/null看到当前 provider 是怎么写的,再决定是改文件还是走交互式配置。如果交互界面里能直接填 Base URL 和 Key,优先用交互式,改完它会自己写回正确格式。
3.2 把 Key 写进环境变量
不建议把 Key 硬编码在配置文件里,尤其是 Ubuntu 上如果你会把这个配置同步或备份。用环境变量更干净:
echo 'export TAOTOKEN_API_KEY="sk-你创建的统一Key"' >> ~/.bashrc source ~/.bashrc echo $TAOTOKEN_API_KEY最后一条命令能打印出你的 Key,说明环境变量已经生效。注意 OpenClaw 如果是用 systemd 或者守护进程方式跑的,~/.bashrc里的变量它不一定读得到,这种情况要把变量写进服务文件或者 OpenClaw 自己的环境配置里,后面排障部分会讲。
3.3 修改模型配置
如果你直接改 JSON,结构大致是这样,注意这只是一个示意,字段名以你本机openclaw config实际生成的为准:
{ "models": { "default": "glm-4.6", "providers": { "glm": { "type": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKeyEnv": "TAOTOKEN_API_KEY", "models": { "glm-4.6": {} } } } } }几个关键点。baseUrl就填https://taotoken.net/api,不要自己拼成完整的 chat completions 路径,客户端一般会自己补。apiKeyEnv指向你刚设的环境变量名,如果你的版本不支持这个字段,就找对应的 apiKey 字段填值。default和models里写同一个模型名,保证默认走的就是 GLM。
改完之后重启 Gateway,让新配置被读进去:
openclaw gateway restart openclaw gateway status4. 验证请求:gateway status 与一条 GLM 测试消息
4.1 确认服务状态正常
openclaw gateway status的输出重点看两处:服务是不是 running,以及有没有配置加载相关的报错。如果状态是 running 但日志里有 provider 解析失败,说明配置字段写错了,服务虽然起来了,请求发出去还是会失败。
openclaw gateway status建议再顺手看一眼最近日志:
openclaw gateway logs --tail 50日志里如果出现 provider 名称、baseUrl 之类字样,能帮你确认它读到的确实是你改后的配置。
4.2 发一条测试消息
状态正常之后,从你已经接入的会话里发一条测试消息。如果你按之前的流程接了飞书,直接在飞书里对机器人发一句:
用一句话说明你现在使用的是哪个模型如果你习惯用命令行,也可以在终端里走 OpenClaw 的消息发送入口,把目标指向本地会话。发出去之后等几秒,正常情况下会收到 GLM 的回复。回复内容不一定能百分百自证模型身份,但能证明整条链路是通的。
更硬的证据在日志里。再执行一次:
openclaw gateway logs --tail 100 | grep -i -E "glm|provider|model"如果能看到请求带着 GLM 相关的 provider 或模型名发出,说明切换已经生效,而不是还在走旧供应商。
4.3 判断是否真的走了 GLM
有两个常见的误判。一个是 Gateway 状态显示 running,就以为配置生效了,其实它加载的还是上一次的配置。另一个是收到了回复,但回复来自默认供应商,看起来能用,实际没切成功。
稳妥的做法是切换前后各发一条消息,对比日志里的 provider 字段。如果你在 TaoToken 控制台能看到调用记录,也可以对照时间点确认这次请求确实走了 GLM。
5. 切换模型或供应商时最常见的几个错
5.1 401 或 invalid api key
先确认环境变量在当前 shell 里真的有值:
echo $TAOTOKEN_API_KEY如果这里就是空的,说明变量没生效,或者你设在了别的 shell 配置文件里。如果 shell 里有值但服务还是 401,多半是 OpenClaw 作为守护进程启动时没有继承到这个变量。解决办法是把变量写进服务启动环境,或者在你的 OpenClaw 版本支持的情况下,直接把 Key 配到它自己的配置里。
5.2 404 或 model not found
这类报错几乎都是模型名写错。核对你填的模型名和控制台里显示的可用模型名是否完全一致,注意大小写和连字符。另一个可能是你把模型名填在了 provider 层,但 OpenClaw 实际读的是 models 列表里的键,两个地方要对上。
5.3 Base URL 填成了完整接口路径
有人会把 Base URL 写成https://taotoken.net/api/v1/chat/completions这种完整路径,结果客户端又补了一次路径,拼出不存在的地址。按本篇的配置,Base URL 就填https://taotoken.net/api。如果你的 OpenClaw 版本明确要求带版本后缀,以接入文档里的写法为准。
5.4 改了配置但一直不生效
先确认你改的是 OpenClaw 实际读取的那个文件。Ubuntu 上可能有多个配置文件,或者你之前用openclaw config生成过一份,手改的是另一份。改完必须重启 gateway,只 reload 不一定能重新读 provider。重启之后再从日志里确认它加载的 baseUrl 是你改后的值。
5.5 Gateway 起不来或端口被占
切换配置之后如果 gateway 直接起不来,先看日志第一条报错。如果是端口占用,查一下是谁占着:
ss -lntp | grep <你的端口>如果是配置解析错误,OpenClaw 一般会在日志里指出是哪一行字段格式不对,按提示改就行。别在配置错误的情况下反复重启,先把日志读完。
6. 后续:把统一 Key 用到更多场景
一把 Key 配好之后,OpenClaw 这边的模型切换成本就降下来了。你可以在同一套配置里保留多个 provider,想试别的模型时只改 default 指向,认证信息不用再动。这比每个供应商都单独申请一把 Key、再去 config 里来回改要省事得多。
如果你在接入或排障过程中卡住了,可以先看 API Keys 和接入文档这两个入口:
- 创建和管理统一 Key:
https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=csdn_openclaw_glm&utm_campaign=rewrite - 接入文档,含 Base URL 与模型名说明:
https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=csdn_openclaw_glm&utm_campaign=rewrite
如果你只是想先确认 GLM 回复是否符合预期,不必每次都走 OpenClaw 全链路,可以直接在模型对话里试:
- 模型对话:
https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=csdn_openclaw_glm&utm_campaign=rewrite
如果你打算把 OpenClaw 长期挂在 Ubuntu 上跑 Agent 任务,频繁做代码修改和 bug 修复,那更适合直接看 Coding Plan:
- Coding Plan:
https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=csdn_openclaw_glm&utm_campaign=rewrite
配置改完之后建议做一次完整回归:重启 gateway,确认状态是 running,发一条会触发工具调用的指令,再看日志里 provider 是不是 GLM。这一步过了,后面再换模型就只是改一行 default 的事。