1. 为什么要在华为云上跑 OpenClaw,以及 Key 管理这个坑
OpenClaw(前身 Clawdbot)是一个轻量化的 AI 任务执行框架,你可以把它理解成一个「能自己动手干活」的智能体运行时:它接收指令、拆解任务、调用模型、执行动作,最后把结果回传给你。2026 年这波更新之后,它在容器化部署、插件生态和多模型调度上成熟了不少,所以越来越多人在云服务器上把它跑起来,当成自己的自动化助手底座。
适合谁?三类人:一是想把 AI 助手 7×24 小时挂在云上、不想本地电脑一关机就断的开发者;二是需要同时接多个模型(对话、代码、长文本各用各的)的团队;三是想拿它做飞书、企微这类办公入口联动的运维同学。
但真正上手后,第一个卡住大多数人的不是部署,而是API Key 管理。OpenClaw 的 config.toml 里,每个模型供应商都要单独填 base_url 和 api_key。你要是接了三四家,配置文件里就散落着三四把 Key,轮换一次要改好几处,团队协作时还得把 Key 传来传去,既不安全也容易配错。我试过最笨的办法——把 Key 写进环境变量再在 toml 里引用,结果容器重启后变量丢失,排查了半天。
这篇就解决这个问题:用 TaoToken 的统一 Key 接入,把多供应商收敛成一套 base_url + 一把 Key,config.toml 只维护一份骨架。下面从华为云环境准备开始,一步步给到可复制的配置和验证命令。
2. TaoToken 前置准备:拿到统一 Key 和接入地址
TaoToken 在这里扮演的角色是「统一入口」:你不需要在 OpenClaw 里为每家模型分别配置,而是把请求都指向 TaoToken 的 API 地址,用一把 Key 完成鉴权,由它在后端路由到具体模型。对 config.toml 来说,这意味着 provider 段可以大幅简化。
你需要提前准备两样东西:
第一,一个 TaoToken 账号并生成 API Key。登录后进入控制台,在 API Keys 页面创建一个新 Key,复制保存好——它只显示一次。地址是 https://taotoken.net/api ,Key 管理页在 https://taotoken.net/api-keys 。
第二,确认接入地址。OpenClaw 里填的 base_url 用 https://taotoken.net/api 即可,注意末尾不要多加斜杠,也不要带任何查询参数,否则部分 HTTP 客户端会拼接出错误路径。
注意:Key 属于敏感凭证,不要直接提交到 Git 仓库。建议放在服务器的环境变量或独立的 .env 文件里,config.toml 通过引用读取。
如果你还想先确认模型是否可用、对比一下不同模型的输出,可以到模型对话页面直接试跑:https://taotoken.net/models 。长期做编码或 Agent 任务的,可以了解 Coding Plan:https://taotoken.net/coding-plan 。
3. 华为云环境准备与 OpenClaw 安装
3.1 创建华为云 ECS 实例
登录华为云控制台,进入「弹性云服务器 ECS」,点击购买。关键参数这样选:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 规格 | 2 核 4G 起 | OpenClaw 本体不重,但模型请求并发高时内存吃紧 |
| 镜像 | Ubuntu 22.04 64 位 | 社区文档最全,Docker 安装顺 |
| 系统盘 | 40GB 高 IO | 镜像和日志会持续增长 |
| 网络 | 分配弹性公网 IP | 后续验证和回调都要用 |
| 安全组 | 放行 22、3000 | 22 用于 SSH,3000 是 OpenClaw 默认端口 |
购买完成后记录公网 IP 和登录密码。安全组入方向规则里,3000 端口建议先只对你的办公 IP 开放,验证通过后再按需调整。
3.2 登录并安装 Docker
用 SSH 连上服务器,替换成你的实际 IP:
ssh root@你的公网IP更新系统并安装 Docker:
apt update && apt upgrade -y apt install -y ca-certificates curl gnupg install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg chmod a+r /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" > /etc/apt/sources.list.d/docker.list apt update apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin systemctl enable --now docker docker --version最后一行能打印出版本号,说明 Docker 装好了。
3.3 拉取并启动 OpenClaw
创建工作目录并写一份 docker-compose.yml:
mkdir -p /opt/openclaw && cd /opt/openclawservices: openclaw: image: openclaw/openclaw:2026-latest container_name: openclaw-core restart: unless-stopped ports: - "3000:3000" env_file: - .env volumes: - ./data:/app/data - ./config.toml:/app/config.toml启动:
docker compose up -d docker compose logs --tail=50日志里没有 ERROR,并且能看到服务监听 3000 端口,就说明容器起来了。此时访问http://你的公网IP:3000/health,返回{"status":"ok"}即正常。
4. config.toml 配置骨架:TaoToken 统一 Key 接入
这是本篇的核心。OpenClaw 的 config.toml 决定了它调用哪些模型、走哪个地址、用什么 Key。我们把多供应商收敛成 TaoToken 一个入口。
4.1 用 .env 存放 Key
在 /opt/openclaw 下创建 .env:
cat > /opt/openclaw/.env <<'EOF' TAOTOKEN_API_KEY=sk-你的TaoToken密钥 EOF chmod 600 /opt/openclaw/.env权限设成 600,只有 root 能读,避免其他进程顺手读到。
4.2 config.toml 骨架
# /opt/openclaw/config.toml [server] host = "0.0.0.0" port = 3000 log_level = "info" # 统一模型入口:所有请求经 TaoToken 路由 [provider.taotoken] type = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "${TAOTOKEN_API_KEY}" timeout = 120 # 按用途声明模型别名,实际模型名由 TaoToken 侧路由 [models.default] provider = "taotoken" model = "gpt-4o" max_tokens = 4096 temperature = 0.7 [models.coding] provider = "taotoken" model = "claude-sonnet-4" max_tokens = 8192 temperature = 0.2 [models.longcontext] provider = "taotoken" model = "gemini-2.5-pro" max_tokens = 16384 temperature = 0.5 [agent] default_model = "default" max_steps = 20 task_timeout = 300 [storage] data_dir = "/app/data"几个要点解释一下。type = "openai-compatible"表示用 OpenAI 兼容协议发请求,TaoToken 的 /api 端点支持这套协议,所以 OpenClaw 不需要为每家供应商写适配器。api_key = "${TAOTOKEN_API_KEY}"是引用 .env 里的变量,这样 Key 不进配置文件本体。[models.*]段里你可以按场景起别名,比如 coding 用低 temperature 的模型,longcontext 用大窗口的模型,切换时只改 agent.default_model 一行。
提示:如果你之前已经在别处配了多家供应商,迁移时把它们的 base_url 全部替换成 https://taotoken.net/api ,api_key 统一换成 TaoToken 的 Key,其余模型名保留即可。
改完配置后重启容器让配置生效:
cd /opt/openclaw docker compose restart docker compose logs --tail=305. 验证请求:确认统一 Key 真的通了
配置写完不算数,得实际发一次请求。OpenClaw 自带一个诊断命令,可以直接测 provider 连通性:
docker exec -it openclaw-core openclaw doctor --provider taotoken正常输出会包含provider taotoken: reachable和auth: ok。如果 auth 失败,八成是 Key 没读到或写错了。
再走一次真实任务,验证模型调用链路:
docker exec -it openclaw-core openclaw run --model default "用一句话说明什么是容器化部署"预期返回一段模型生成的文本。如果返回 401,检查 .env 里的 Key 是否被正确加载;如果返回 404,检查 base_url 是否多写了斜杠或路径。
你也可以直接在服务器上用 curl 验证 TaoToken 端点本身是否可达:
curl -s -o /dev/null -w "%{http_code}\n" https://taotoken.net/api返回 200 或 401(未带 Key 时)都说明网络通、端点活着。带上 Key 的完整测试:
curl -s https://taotoken.net/api/v1/models \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" | head -c 300能列出模型列表,就说明 Key 和地址都没问题,剩下的就是 OpenClaw 侧配置的事了。
6. 本篇常见错误排查
报错一:provider taotoken: unreachable先确认服务器能出网:curl -I https://taotoken.net/api。如果卡住,检查华为云安全组出方向规则是否放行了 443。出方向默认全放行,但有些加固过的环境会收紧。
报错二:auth failed: invalid api key最常见的原因是 .env 没被 docker compose 读到。确认 docker-compose.yml 里有env_file: - .env,且 .env 和 compose 文件在同一目录。另一个原因是 Key 复制时带了空格或换行,重新生成一把再试。
报错三:model not foundconfig.toml 里[models.*]的 model 字段写的是模型名,如果 TaoToken 侧没有这个模型的路由,就会报这个。到模型对话页面确认可用模型名,或换成通用别名。
报错四:容器启动后立刻退出docker compose logs看具体报错。多数是 config.toml 语法错误,比如 TOML 里用了 tab 缩进(TOML 不允许 tab 缩进)、字符串没加引号。用docker exec进不去的话,直接docker run --rm -v /opt/openclaw/config.toml:/app/config.toml openclaw/openclaw:2026-latest openclaw config check单独校验配置文件。
报错五:请求超时把 provider 段的 timeout 从 120 调大,或者检查是不是模型本身响应慢。长上下文任务建议单独用 longcontext 别名并给更大 timeout。
排查完记得每次改配置都docker compose restart,OpenClaw 不会热加载 config.toml。
7. 下一步:把统一 Key 用到长期任务里
到这里,华为云上的 OpenClaw 已经跑起来,config.toml 骨架也收敛成了单入口。接下来如果你要做的是长期编码、Agent 自动化这类持续消耗的任务,建议把 Key 和额度规划一下,Coding Plan 页面有对应的方案说明:https://taotoken.net/coding-plan 。日常调试和验证模型输出,直接在模型对话里试最快:https://taotoken.net/models 。需要新建或轮换 Key 时,控制台入口在 https://taotoken.net/api-keys ,接入细节和参数说明看文档:https://taotoken.net/doc 。
最后留一个实操建议:把 config.toml 和 .env 一起纳入版本管理时,.env 一定要进 .gitignore,config.toml 里的 Key 引用保持${TAOTOKEN_API_KEY}这种变量形式,这样配置可以安全地在团队间共享,Key 各自本地填。轮换 Key 时只改 .env 一处,重启容器即可,不用碰 config.toml。