1. 为什么零基础也想在 UCloud 上跑 OpenClaw
OpenClaw(老教程里常写成 Clawdbot)是一个开源的 AI 自动化代理,能听懂自然语言指令,帮你做文档生成、网页抓取、定时提醒、多平台消息同步这类重复活。它本身不带大模型推理能力,需要外接一个兼容 OpenAI 协议的模型通道才能真正“听懂人话”。适合谁?适合想用一台云主机把 AI 助手接进 IM(微信、飞书、钉钉、QQ)的个人和轻量团队,尤其是没写过几行代码、但愿意照着命令复制粘贴的新手。
我这次选 UCloud 云主机来部署,原因很直接:轻量机型开起来快,公网 IP 直接给,按量付费试错成本低。但真正让整套流程顺起来的,是模型通道这一环——OpenClaw 要调用大模型,就得填 Base URL、API Key、Model ID 三样东西。很多新手卡就卡在这里:要么找不到稳定的 API 通道,要么把 Key 写错位置,服务起来了但一发消息就报错。
这篇教程的目标很明确:从零在 UCloud 上把 OpenClaw 跑成一个最小可用实例,并且用 TaoToken 的统一 Key 把模型通道配好,最后在 IM 里发一条消息验证收发闭环。全程给可复制的命令和配置片段,你照着做就行。下面先讲清楚 OpenClaw 和 Clawdbot 的关系,再进入实操。
OpenClaw 和 Clawdbot 是同一个东西的不同叫法,前者是较新的命名,后者在旧版教程和部分镜像里还在用。你部署时如果看到/root/.clawdbot目录,不用慌,配置逻辑完全一致,改路径就行。它运行时会起一个 gateway 服务,默认监听 18789 端口,IM 插件通过这个端口把消息转给模型,再把结果回传。理解这条链路,后面排错就有方向了。
2. TaoToken 统一 Key 与 API 通道准备
在动手配 OpenClaw 之前,先把模型通道这块理清楚。OpenClaw 的配置文件里有一个models.providers段,你要在这里告诉它:去哪个地址请求模型、用哪个 Key、调哪个模型。TaoToken 提供的就是这个统一入口——一个 Base URL 加一个 Key,就能对接多种模型,省得你在不同厂商的控制台之间来回切换。
具体要准备三样东西,我把它列成表格,你对照着填:
| 配置项 | 填什么 | 说明 |
|---|---|---|
| Base URL | https://taotoken.net/api | 模型请求的统一入口,注意不要多加斜杠或路径 |
| API Key | 你在 TaoToken 控制台生成的 Key | 只显示一次,复制后存到加密记事本 |
| Model ID | 例如claude-sonnet-4-5或你账号可用的模型 | 要和通道支持的模型名一致 |
获取 Key 的路径是:打开 TaoToken 控制台,进入 API Keys 页面新建一个 Key。这里有个细节,Key 创建后页面刷新就看不到了,所以复制动作要一次到位。如果你还没账号,可以先看接入文档了解通道支持哪些模型,再决定用哪个 Model ID。
注意:Base URL 一定填
https://taotoken.net/api,不要自己拼/v1之类的后缀。OpenClaw 的 provider 配置里api字段会声明协议类型,地址和协议分开写,混在一起最容易出 404。
为什么强调“统一 Key”?因为 OpenClaw 支持多 provider 共存,你完全可以在配置里放好几个通道。但对零基础来说,先用一个统一通道跑通最小实例,比一上来配三四个来源要稳得多。等消息能正常收发了,再考虑加备用通道。
准备好这三样之后,先别急着改 OpenClaw 的配置。我建议你先用一条 curl 命令验证 Key 和地址是通的,这样能把“通道问题”和“OpenClaw 配置问题”分开排查。命令在下一节给,你先把 Key 存好。
3. UCloud 云主机上的可复制配置
这一节是核心操作。假设你已经在 UCloud 控制台开好了一台轻量云主机,系统选 Ubuntu 22.04 或 24.04,配置 2 核 2G 起步,公网 IP 已经分配。用 SSH 登录进去,我们一步步来。
第一步,装基础依赖。OpenClaw 运行需要 Node.js 和 git,命令如下:
sudo apt update sudo apt install -y curl git curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - sudo apt install -y nodejs node -vnode -v输出 v22 开头就对了。如果版本不对,检查上一条命令有没有报错。
第二步,拉取并安装 OpenClaw。不同版本安装方式略有差异,用 npm 全局安装最省事:
sudo npm install -g openclaw openclaw --version能打印出版本号,说明主程序就位。接下来创建配置目录,OpenClaw 默认读/root/.openclaw/openclaw.json,旧版可能读/root/.clawdbot/,我们统一用新路径:
mkdir -p /root/.openclaw cd /root/.openclaw第三步,写配置文件。这是整篇最关键的一段,Base URL、Key、Model ID 三件套都在这里。把下面 JSON 里的你的TaoTokenKey和模型名替换成你自己的:
{ "models": { "mode": "merge", "providers": { "taotoken": { "baseUrl": "https://taotoken.net/api", "apiKey": "你的TaoTokenKey", "api": "openai-completions", "models": [ { "id": "claude-sonnet-4-5", "name": "claude-sonnet-4-5", "reasoning": false } ] } } }, "gateway": { "port": 18789, "host": "0.0.0.0" }, "channels": { "wechat": { "enabled": false }, "feishu": { "enabled": false }, "dingtalk": { "enabled": false }, "qq": { "enabled": false } } }写文件用 heredoc 一次成型,避免手抖漏括号:
cat > /root/.openclaw/openclaw.json << 'EOF' { "models": { "mode": "merge", "providers": { "taotoken": { "baseUrl": "https://taotoken.net/api", "apiKey": "你的TaoTokenKey", "api": "openai-completions", "models": [ { "id": "claude-sonnet-4-5", "name": "claude-sonnet-4-5", "reasoning": false } ] } } }, "gateway": { "port": 18789, "host": "0.0.0.0" }, "channels": { "wechat": { "enabled": false }, "feishu": { "enabled": false }, "dingtalk": { "enabled": false }, "qq": { "enabled": false } } } EOF注意 heredoc 用了'EOF'加引号,这样里面的变量不会被 shell 提前展开,Key 原样写入。写完用cat openclaw.json检查一遍,确认 Key 和地址没写错。
第四步,放通端口。UCloud 的安全组和系统防火墙都要放 18789:
sudo ufw allow 18789/tcp sudo ufw allow 22/tcp sudo ufw reload sudo ufw statusUCloud 控制台的安全组里也要加一条入站规则,协议 TCP,端口 18789,来源按需填。这一步漏了,后面 IM 回调一定失败。
第五步,启动服务。OpenClaw 可以用 systemd 托管,也可以前台跑。先用前台方式验证配置对不对:
openclaw gateway --config /root/.openclaw/openclaw.json看到监听 18789 的日志就说明起来了。确认没问题后按 Ctrl+C 停掉,再配 systemd 常驻:
sudo tee /etc/systemd/system/openclaw.service << 'EOF' [Unit] Description=OpenClaw Gateway After=network.target [Service] ExecStart=/usr/bin/openclaw gateway --config /root/.openclaw/openclaw.json Restart=always User=root [Install] WantedBy=multi-user.target EOF sudo systemctl daemon-reload sudo systemctl enable --now openclaw sudo systemctl status openclaw状态显示 active (running) 就对了。到这里,配置部分完成,下一节验证请求。
4. 验证请求与消息收发成功结果
配置写完不代表通了,必须验证。我习惯分两层验:先验模型通道,再验 OpenClaw 网关。
第一层,直接用 curl 打 TaoToken 的接口,确认 Key 和地址有效:
curl -s https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer 你的TaoTokenKey" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-5", "messages": [{"role": "user", "content": "只回复两个字:通了"}] }'如果返回的 JSON 里choices[0].message.content是“通了”,说明通道没问题。这一步能过,后面 OpenClaw 报错就基本不是 Key 的事。
第二层,验 OpenClaw 网关健康状态:
curl http://localhost:18789/health返回{"status":"ok"}或类似内容,说明网关活着。再发一条模拟对话请求:
curl -s http://localhost:18789/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-5", "messages": [{"role": "user", "content": "你好,报一下你的模型名"}] }'这条请求会经过 OpenClaw 转发到 TaoToken 再回来。如果拿到正常回复,说明整条链路打通了。这一步的返回里如果出现choices字段,就说明模型响应被正确解析。
第三层,接 IM 验证收发。以飞书为例,在配置文件channels.feishu里把enabled改成 true,填上 App ID、App Secret 和回调地址:
"feishu": { "enabled": true, "appId": "你的飞书AppID", "appSecret": "你的飞书AppSecret", "callbackUrl": "http://你的UCloud公网IP:18789/feishu/callback" }改完重启服务:
sudo systemctl restart openclaw然后在飞书里给机器人发一句“生成一份今日待办模板”。30 秒内收到回复,就说明“IM 发指令 → UCloud 执行 → 模型返回 → IM 收结果”的闭环成了。我实测下来,第一次配飞书回调最容易卡在 URL 上,公网 IP 和端口一个都不能错。
如果你只想先跑最小实例,不接 IM 也行,用上面的 curl 模拟对话就算验证完成。等熟悉了再加 IM 通道。
5. 本篇常见报错排查
这一节按真实报错来,你遇到哪个查哪个。
报错一:401 Unauthorized。这是 Key 的问题。先确认openclaw.json里apiKey填的是 TaoToken 的 Key,不是别的平台的。再确认 curl 测试时 Header 是Authorization: Bearer 你的Key,中间有空格。如果 Key 复制时带了换行或空格,也会 401,重新复制一次。
报错二:local proxy failed 或 connection refused。说明 OpenClaw 连不上 Base URL。检查baseUrl是不是https://taotoken.net/api,有没有多写/v1。再确认 UCloud 主机能出公网:
curl -I https://taotoken.net/api返回 200 或 401 都算网络通,返回超时就是主机出网有问题,检查安全组出站规则。
报错三:reading choices 相关解析错误。这种通常是返回体不是标准 OpenAI 格式,或者api字段写错了。确认配置里是"api": "openai-completions"。如果模型名写错,有些通道会返回错误结构,也会触发这个报错,核对 Model ID 和账号可用模型是否一致。
报错四:OAuth 或回调验证失败(IM 场景)。飞书、钉钉这类平台在保存回调 URL 时会发验证请求。确认callbackUrl里的公网 IP 是 UCloud 实例的,端口 18789 在安全组和 ufw 都放通了。如果平台要求 HTTPS,你需要额外配证书,最小实例阶段可以先跳过 IM,用 curl 验证。
报错五:服务起不来,端口被占用。查一下谁占了 18789:
sudo lsof -i :18789有残留进程就 kill 掉再重启。如果是配置 JSON 语法错误,openclaw gateway前台跑会直接报行号,按提示改。
报错六:改了配置不生效。OpenClaw 不会热加载配置,每次改完openclaw.json都要sudo systemctl restart openclaw。忘了重启是最常见的“改了没用”。
排查顺序建议:先 curl 直连 TaoToken,再 curl 本地网关,最后才查 IM。一层层缩小范围,比一上来就怀疑 IM 插件高效得多。
6. 把最小实例用起来:下一步怎么走
最小实例跑通之后,你可以按需扩展。想长期挂着做编码或 Agent 任务,可以了解 Coding Plan,它更适合持续性的开发场景。想先多试试不同模型的对话效果,模型对话页面能直接体验,不用改配置。Key 管理和新建入口都在 API Keys 页面,接入细节看接入文档。
回到 OpenClaw 本身,几个实用建议。第一,配置文件定期备份,tar -zcvf openclaw-backup-$(date +%Y%m%d).tar.gz /root/.openclaw,Key 丢了能快速恢复。第二,UCloud 安全组里 18789 的来源尽量限制成你的固定 IP,别对全网开放。第三,模型通道的 Key 建议每三个月换一次,换完记得同步改openclaw.json并重启服务。
如果你后面要接多个 IM,不用重复部署,只改channels段把对应enabled打开、补上凭证,重启即可。多通道同时跑对内存有要求,2G 机型建议先接一个,稳定了再加。
最后说个我踩过的坑:一开始我把 Base URL 写成了带/v1的完整路径,结果 OpenClaw 又拼了一次,请求打到错误地址,报了一堆看不懂的错。后来统一用https://taotoken.net/api,协议交给api字段声明,问题就没了。你配的时候留意这一点,能省不少排查时间。