1. 华为云上跑 OpenClaw,为什么新手总卡在 Key 和通道上
OpenClaw(曾用名 Clawdbot)是一个可以本地部署、支持任务执行、带记忆和插件扩展的 AI 智能体框架。你可以用自然语言让它管文件、查资料、做摘要、跑自动化流程,再通过 Skills 把能力往外扩。它依赖 Node.js 运行,既能放在云服务器上长期跑,也能在本地离线跑,数据优先落本地,可控性和隐私性都不错。适合谁?想自己搭一个能干活的 AI 助手、又不想被单一模型厂商绑死的人。
但我在华为云上帮人排查部署问题时,发现真正让人卡住的往往不是安装本身,而是两件事:一是 API Key 到处散落,OpenClaw 主配置、Skills、不同模型通道各要一份,改一处忘一处;二是通道接入方式不统一,今天接这个模型、明天换那个模型,config.toml 和 settings.json 里的字段名对不上,服务起来了但请求发不出去。
这篇就聚焦华为云新手在 OpenClaw 部署里最常见的 Key 配置与通道接入问题,用 TaoToken 的统一 Key / API 通道做示例,给你一份可直接复制的 config.toml 骨架和 settings.json 关键字段,再演示部署后怎么验证连通性。目标很明确:从部署到可用,6 分钟内闭环。华为云轻量服务器、Node.js 22、OpenClaw 网关这套组合,我会按真实操作顺序写,命令能直接抄。
先说清楚一个前提:OpenClaw 本身不绑定任何一家模型。它通过配置里的 model 段决定请求发去哪。所以「统一 Key 接入」的本质,是让所有模型调用都走同一个 Base URL 和同一把 Key,配置只写一次,换模型只改 Model ID。TaoToken 在这里扮演的就是这个统一入口,官网在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api 。下面所有配置都围绕这个来。
2. 华为云轻量服务器准备与 TaoToken 统一 Key 前置
2.1 华为云实例与安全组
华为云轻量应用服务器选 2 核 2GB 起步,系统盘 40GB 以上,系统用 Ubuntu 22.04 或 Huawei Cloud EulerOS 都行。OpenClaw 网关默认端口 18789,必须在华为云控制台的「安全组」里放行入方向 TCP 18789,否则你本地浏览器打不开 Web 控制台。这一步新手最容易漏,服务明明在跑,页面就是转圈,九成是安全组没放。
登录方式用华为云自带的 Web 终端或 SSH 都行。登进去先确认 Node.js 版本:
node -v npm -v要 Node.js 22.x 及以上。如果版本低,用 NodeSource 装:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - sudo apt install -y nodejs2.2 拿到 TaoToken 统一 Key
打开 https://taotoken.net/api-keys ,登录后创建一个 API Key,复制保存好。这把 Key 就是后面 config.toml 和 settings.json 里共用的那一把。注意:Key 只在创建时完整显示一次,关掉页面就看不全了,先存到安全的地方。
TaoToken 的 Base URL 统一用 https://taotoken.net/api ,不要带结尾斜杠。模型对话入口在 https://taotoken.net/models ,你可以先在那里确认要用的 Model ID 拼写,比如 claude-sonnet-4-5、gpt-4o 这类,拼错一个字符请求就会 404 或 reading choices 报错。
2.3 安装 OpenClaw
npm config set registry https://registry.npmmirror.com npm install -g openclaw openclaw onboardonboard 交互里:同意协议、选快速启动、模型配置先跳过(我们后面手写配置文件)、通道按需启用。初始化完成后,OpenClaw 会在用户目录下生成配置目录:
- Linux / macOS:
~/.openclaw/ - Windows:
C:\Users\用户名\.openclaw\
这个目录里会有 config.toml 和 settings.json,下面我们就改这两个文件。
3. 可复制配置:config.toml 骨架与 settings.json 关键字段
3.1 config.toml 完整骨架
OpenClaw 的主配置是 TOML 格式。把下面这份骨架复制到~/.openclaw/config.toml,把sk-你的TaoTokenKey换成你刚创建的那把 Key:
# ~/.openclaw/config.toml [gateway] host = "0.0.0.0" port = 18789 token = "自定义一个访问口令" [model] provider = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "sk-你的TaoTokenKey" model_name = "claude-sonnet-4-5" max_tokens = 2048 temperature = 0.7 timeout = 60 reasoning = false [model.fallback] provider = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "sk-你的TaoTokenKey" model_name = "gpt-4o-mini" max_tokens = 1024 temperature = 0.5 timeout = 60几个关键点解释一下。provider写openai-compatible,因为 TaoToken 的 API 是 OpenAI 兼容格式,OpenClaw 用这个 provider 就能直接对接。base_url必须是https://taotoken.net/api,不要写成带/v1的,OpenClaw 会自己拼路径。model_name填你在模型对话页看到的准确 Model ID。fallback段是可选的,主模型超时或报错时自动切备用模型,建议留着。
3.2 settings.json 关键字段
settings.json 管的是运行时行为和 Skills 通道。路径同样是~/.openclaw/settings.json:
{ "gateway": { "host": "0.0.0.0", "port": 18789, "publicAccess": true }, "model": { "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoTokenKey", "modelId": "claude-sonnet-4-5", "timeout": 60, "reasoning": false }, "skills": { "enabled": true, "autoLoad": true }, "logging": { "level": "info", "file": "~/.openclaw/logs/openclaw.log" } }注意 settings.json 里的字段名是驼峰baseUrl、apiKey、modelId,和 config.toml 里的下划线base_url、api_key、model_name不一样。这是新手最容易踩的坑:两个文件字段名混用,服务能启动但读不到配置,请求直接失败。记住 TOML 用下划线,JSON 用驼峰。
3.3 三件套对照表
不管你在哪个文件里配,模型接入永远是这三件套,缺一不可:
| 配置项 | config.toml 字段 | settings.json 字段 | 值 |
|---|---|---|---|
| Base URL | base_url | baseUrl | https://taotoken.net/api |
| API Key | api_key | apiKey | sk-你的TaoTokenKey |
| Model ID | model_name | modelId | claude-sonnet-4-5 |
如果你后面用 Cline MCP 或 Codex 的 auth.json 接同一套通道,也是这三个值,只是字段名再变一次。Cline 的 MCP 配置里写baseUrl+apiKey+model,Codex 的 auth.json 里写OPENAI_BASE_URL+OPENAI_API_KEY+model。值不变,位置变。
4. 启动服务并验证连通性
4.1 启动网关
配置写好后启动:
openclaw gateway start openclaw gateway statusstatus 显示 running 就对了。如果启动失败,先看日志:
openclaw logs --follow4.2 验证模型通道连通
光服务起来不算通,得确认请求真能发到 TaoToken 并拿到回复。OpenClaw 自带一个诊断命令:
openclaw model test它会用 config.toml 里的 model 段发一条测试请求。成功的话你会看到类似:
[OK] provider=openai-compatible model=claude-sonnet-4-5 response: pong latency: 842ms如果返回401 Unauthorized,是 Key 错了或没生效;返回404,是 Model ID 拼错;返回local proxy failed,是 base_url 写错或网络不通。这三种报错下面单独讲。
4.3 浏览器打开 Web 控制台
华为云安全组放行 18789 后,浏览器访问:
http://你的华为云公网IP:18789输入 config.toml 里设置的 gateway token,进入对话页面。随便发一句「你好,帮我列一下当前目录文件」,能正常回复就说明整条链路通了:Web 控制台 → OpenClaw 网关 → TaoToken 通道 → 模型 → 返回。
4.4 用 curl 直接验证通道
想绕过 OpenClaw 单独确认 TaoToken 通道本身没问题,可以直接 curl:
curl https://taotoken.net/api/chat/completions \ -H "Authorization: Bearer sk-你的TaoTokenKey" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-5", "messages": [{"role": "user", "content": "ping"}], "max_tokens": 16 }'返回带choices的 JSON 就说明 Key 和通道都正常。这一步能把「OpenClaw 配置问题」和「通道本身问题」分开,排障时特别有用。
5. 本篇常见报错排查
5.1 401 Unauthorized
最常见。原因就三个:Key 复制时漏字符、config.toml 和 settings.json 里 Key 不一致、Key 被禁用或额度耗尽。排查顺序:先用上面那条 curl 单独测 Key,curl 通说明 Key 没问题,那就是 OpenClaw 配置文件里写错了。重点检查 config.toml 的api_key和 settings.json 的apiKey是不是同一把。
5.2 local proxy failed
这个报错意思是 OpenClaw 连不上 base_url。九成是base_url写成了https://taotoken.net/api/v1或结尾多了斜杠。正确写法就是https://taotoken.net/api,不带/v1,不带结尾斜杠。改完openclaw gateway restart。
5.3 reading choices 报错
通常是响应体里没有choices字段,说明请求根本没到模型,或者 Model ID 不存在导致返回了错误结构。先确认model_name拼写,去 https://taotoken.net/models 对照。再确认provider写的是openai-compatible,写成别的 provider 会导致解析格式不匹配。
5.4 OAuth 相关报错
如果你之前配过别的通道、残留了 OAuth 凭据,OpenClaw 可能优先走旧凭据。清掉旧配置重新 onboard:
openclaw onboard --reset然后重新写入上面的 config.toml 骨架。注意 reset 会清空配置,Key 要重新填。
5.5 服务起来但 Web 打不开
先openclaw gateway status确认在跑,再查华为云安全组 18789 是否放行,最后确认 config.toml 里host = "0.0.0.0"而不是127.0.0.1。本地访问用http://127.0.0.1:18789,公网访问用公网 IP。
5.6 端口被占用
# Linux / macOS lsof -i:18789 kill -9 进程ID # Windows netstat -ano | findstr "18789" taskkill /F /PID 进程ID6. 把统一 Key 用起来:长期编码与 Agent 场景
配置通了之后,你会发现统一 Key 的好处开始显现。以前每接一个模型要改一次 Key、记一套字段名,现在 Base URL、API Key、Model ID 三件套固定,换模型只改model_name一个值。Skills 里要调模型的,也全部指向同一把 Key,不用每个 Skill 单独配。
如果你打算把 OpenClaw 当长期编码助手或跑 Agent 任务,建议直接上 Coding Plan,入口在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。它按次计费,比按 token 计费更适合高频调用的 Agent 场景,成本可控。配置方式不变,还是那三件套,只是 Key 换成 Coding Plan 对应的。
日常排障和接入细节,文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,里面把各客户端的字段名对照写得很全。模型对话验证在 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,换模型前来这里确认 Model ID 拼写,能省掉一大半 404。
最后给一个我实测下来最省事的习惯:把 config.toml 和 settings.json 里的 Key 抽成一个环境变量,两个文件都引用它。这样换 Key 只改一处,不会出现两个文件不一致导致的 401。OpenClaw 支持在配置里写${TAOTOKEN_KEY}这种占位符,启动前 export 一下就行。华为云上跑长期服务,这个习惯能帮你少排查很多莫名其妙的鉴权问题。