1. 为什么要在阿里云上跑 OpenClaw 与 Hermes Agent
OpenClaw(前身 Clawdbot/Moltbot)是一套开源、本地优先的 AI 助理框架,能 7×24 小时在线响应、执行多任务自动化、跨平台协同;Hermes Agent 则是同生态里偏任务编排与工具调用的 Agent 运行时。把这两个东西部署到阿里云 ECS 上,最大的好处是:不用一直开着本地电脑,公网可访问,团队几个人可以共用一个入口,还能挂上定时任务做长期自动化。
但真正动手时,很多人卡在三个地方:一是 ECS 上从零装依赖,Node、Python、Git 版本对不上;二是 Coding Plan 的配置文件不知道写在哪、字段叫什么;三是模型调用链路没打通,Agent 起来了却一直报鉴权错误。这篇就按“从零到跑通”的顺序,把阿里云 ECS 部署 OpenClaw 与 Hermes Agent 的完整流程拆开,包含可复制的部署命令、Coding Plan 配置片段,以及通过 TaoToken 统一 Key/API 通道完成模型调用的验证步骤。
适合谁看:手里有一台阿里云 ECS(2 核 2G 起步)、想跑通 Agent 服务、又不想在模型接入上反复折腾的开发者。下面所有命令我都按 Alibaba Cloud Linux 3 / Ubuntu 22.04 两种系统标注,你按自己的镜像选对应的那行执行即可。
2. 部署前的环境准备与 TaoToken 通道配置
先说清楚一件事:OpenClaw 和 Hermes Agent 本身只是“壳”,真正干活的是背后的大模型。所以部署分两条线,一条是 Agent 服务本身,一条是模型调用通道。模型通道这块,我用 TaoToken 做统一入口,一个 Key 就能切不同模型,省得每个 Agent 都去单独配一遍。
TaoToken 的定位是统一的模型 API 通道,官网在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 端点是 https://taotoken.net/api 。你需要先拿到一个 API Key,然后把它写进 Agent 的配置里。
2.1 ECS 基础环境初始化
登录 ECS 后先做系统更新和基础依赖安装。Alibaba Cloud Linux 3 用 dnf,Ubuntu 22.04 用 apt:
# Alibaba Cloud Linux 3 sudo dnf update -y sudo dnf install -y git curl wget python3 python3-pip # Ubuntu 22.04 sudo apt update -y sudo apt install -y git curl wget python3 python3-pip接着装 Node.js 22.x。OpenClaw 2026 版对 Node 版本有硬性要求,低于 22 会直接启动失败。用 NodeSource 源装最稳:
curl -fsSL https://rpm.nodesource.com/setup_22.x | sudo bash - # Alibaba Cloud Linux curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - # Ubuntu sudo dnf install -y nodejs # 或 sudo apt install -y nodejs node --version # 应输出 v22.x.x2.2 获取 TaoToken API Key
访问 https://taotoken.net/api-keys 创建 Key,复制保存。这个 Key 后面会写进 Coding Plan 的配置文件,格式类似sk-xxxxxxxx。注意 Key 只显示一次,丢了要重新建。
2.3 安装 OpenClaw 与 Hermes Agent
OpenClaw 官方提供了一键安装脚本,Hermes Agent 作为同生态组件,可以在 OpenClaw 装好后通过 ClawHub 拉取:
# 安装 OpenClaw curl -fsSL https://openclaw.ai/install.sh | bash # 验证 openclaw --version # 安装 ClawHub CLI(技能与 Agent 管理) npm install -g clawhub # 拉取 Hermes Agent clawhub install hermes-agent装完后openclaw status能看到 gateway 状态。如果这一步报command not found,多半是 npm 全局路径没进 PATH,执行source ~/.bashrc刷新一下。
3. Coding Plan 配置文件片段与模型接入
这一步是整篇的核心。Coding Plan 本质上是 OpenClaw 的模型与 Agent 编排配置,文件默认在~/.openclaw/openclaw.json。你要做的是把 TaoToken 的 Base URL、Key、Model ID 三件套写进去,Hermes Agent 才能正常调用模型。
3.1 配置文件路径与结构
先确认目录存在:
mkdir -p ~/.openclaw ls -la ~/.openclaw/如果已有openclaw.json,先备份:
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak3.2 可复制的 JSON 配置片段
下面这段直接写进~/.openclaw/openclaw.json,字段名与 OpenClaw 2026 版一致。注意baseUrl用 TaoToken 的 API 端点,apiKey换成你自己的:
{ "models": { "providers": { "taotoken": { "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoToken密钥", "models": [ { "id": "claude-sonnet-4-20250514", "name": "Claude Sonnet 4", "contextWindow": 200000 }, { "id": "gpt-4o", "name": "GPT-4o", "contextWindow": 128000 } ] } }, "default": "taotoken/claude-sonnet-4-20250514" }, "agents": { "hermes": { "enabled": true, "model": "taotoken/claude-sonnet-4-20250514", "maxSteps": 20, "tools": ["file", "shell", "http"] } }, "gateway": { "port": 18789, "host": "0.0.0.0" } }三件套对应关系:Base URL 是https://taotoken.net/api,Key 是你在 api-keys 页面拿到的,Model ID 是claude-sonnet-4-20250514这类具体模型标识。Hermes Agent 的model字段必须写成provider/modelId的形式,否则会回落到默认模型。
3.3 用 TOML 方式配置(可选)
如果你更习惯 TOML,OpenClaw 也支持~/.openclaw/config.toml:
[models.providers.taotoken] baseUrl = "https://taotoken.net/api" apiKey = "sk-你的TaoToken密钥" [[models.providers.taotoken.models]] id = "claude-sonnet-4-20250514" name = "Claude Sonnet 4" contextWindow = 200000 [agents.hermes] enabled = true model = "taotoken/claude-sonnet-4-20250514" maxSteps = 20两种格式二选一,不要同时存在,否则 OpenClaw 启动时会报配置冲突。
3.4 放行端口与启动服务
阿里云 ECS 需要在安全组放行 18789 端口。控制台进入实例 → 安全组 → 入方向 → 添加 18789/TCP。命令行也可以临时用 firewalld 放行:
sudo firewall-cmd --add-port=18789/tcp --permanent sudo firewall-cmd --reload然后启动 gateway:
openclaw gateway restart openclaw status看到gateway: running就说明服务起来了。
4. 验证请求链路与成功结果
配置写完不代表通了,必须实际发一次请求确认链路。这里分两步:先验证 TaoToken 通道本身能通,再验证 Hermes Agent 能通过它调用模型。
4.1 直接验证 TaoToken API
用 curl 打一次 chat completions,确认 Key 和端点没问题:
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的TaoToken密钥" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-20250514", "messages": [{"role": "user", "content": "回复 OK 两个字母"}] }'正常返回里会有choices[0].message.content字段,内容是OK。如果返回 401,说明 Key 错了;返回 404,说明模型 ID 写错了。
4.2 验证 Hermes Agent 调用
通过 OpenClaw 的 CLI 直接让 Hermes 跑一个任务:
openclaw agent run hermes --task "列出当前目录下的文件,并统计数量"成功的话会输出类似:
[hermes] step 1: shell ls -la [hermes] step 2: 统计到 12 个文件 [hermes] task completed这一步能跑通,说明 Coding Plan 配置、TaoToken 通道、Hermes Agent 三者已经串起来了。
4.3 查看日志确认请求链路
如果结果不对,看日志最快:
openclaw logs --follow日志里会打印每次模型请求的 provider、model、耗时。看到provider=taotoken model=claude-sonnet-4-20250514 status=200就说明链路完全正常。你也可以在 TaoToken 的 console 页面 https://taotoken.net/console 看到对应的调用记录,两边对得上就放心了。
5. 常见报错排查对照
部署过程中最容易撞的几个错,我按真实报错信息列出来,对照着改就行。
5.1 401 Unauthorized
报错原文:{"error":{"message":"Invalid API key","type":"authentication_error"}}
原因基本是 Key 写错或没生效。检查~/.openclaw/openclaw.json里的apiKey字段,确认没有多余空格,确认是 TaoToken 的 Key 而不是别的平台的。改完执行openclaw gateway restart重启。
5.2 local proxy failed / connection refused
报错原文:Error: local proxy failed: dial tcp 127.0.0.1:18789: connect: connection refused
这是 gateway 没起来。先openclaw status看状态,如果是 stopped,执行openclaw gateway restart。如果重启后还是 refused,检查端口是否被占用:
sudo lsof -i:18789有占用就 kill 掉再重启。
5.3 reading choices 相关报错
报错原文:TypeError: Cannot read properties of undefined (reading 'choices')
这个通常是模型返回结构不对,多半是 Base URL 少了/v1或者多了路径。TaoToken 的 Base URL 就写https://taotoken.net/api,OpenClaw 会自动拼/v1/chat/completions。如果你手动加了/v1,反而会变成/api/v1/v1/...,导致返回体里没有 choices。
5.4 OAuth 相关报错
报错原文:OAuth token expired or invalid
如果你在配置里混用了 OAuth 方式的 provider,会和 API Key 方式冲突。检查openclaw.json里有没有残留的oauth字段,删掉,统一用apiKey方式。
5.5 Codex auth.json 冲突
如果你之前配过 Codex,~/.codex/auth.json里可能有旧的凭证,OpenClaw 启动时会去读。确认三件套(Base URL、Key、Model ID)在openclaw.json里写全,并且~/.codex/auth.json不会覆盖它。最稳的做法是临时重命名:
mv ~/.codex/auth.json ~/.codex/auth.json.bak openclaw gateway restart5.6 CC Switch / Cline MCP 场景
如果你用 CC Switch 或 Cline 的 MCP 模式接 OpenClaw,同样要保证三件套齐全:Base URL 填https://taotoken.net/api,Key 填 TaoToken 的 Key,Model ID 填具体模型。MCP 配置里字段名可能是baseUrl/apiKey/model,按各工具文档对应填,缺一个都会连不上。
6. 长期运行与 Coding Plan 使用建议
服务跑起来之后,建议做两件事让它在阿里云上稳定长期运行。
第一,配开机自启,避免 ECS 重启后 Agent 掉线:
sudo systemctl enable openclaw-gateway systemctl is-enabled openclaw-gateway # 输出 enabled 即成功第二,如果你要长期跑编码类 Agent 任务,用 Coding Plan 比按 token 计费更划算。Coding Plan 的入口在 https://taotoken.net/coding-plan ,适合高频调用场景。配置方式不变,还是那三件套,只是计费模式不同。
验证模型能力的时候,可以先用模型对话页面 https://taotoken.net/chat 快速试一下模型响应,确认通道没问题再写进 Agent 配置。接入文档在 https://taotoken.net/doc ,里面有各语言的调用示例,遇到字段不确定的时候翻一下比猜快。
最后提醒一句:API Key 不要提交到 Git,不要贴在公开聊天里。阿里云安全组只放行必要端口,18789 如果不需要公网访问,可以限制来源 IP。跑通之后,Hermes Agent 的maxSteps别设太大,20 步左右够用,设太大容易在复杂任务里绕圈烧额度。