计算巢上OpenClaw与Hermes Agent共部署实战指南
1. 项目概述:为什么在计算巢上同时跑 OpenClaw 和 Hermes Agent 是个务实选择
2026年,AI智能体(Agent)已不再是实验室里的概念玩具,而是真正嵌入到企业日常运营、研发提效和产品创新中的“数字员工”。但问题来了:一个团队里,有人习惯用 OpenClaw 做快速任务拆解和自动化流水线调度,有人偏爱 Hermes Agent 的可视化编排界面和 Skill 插件生态;有人需要高频短对话响应,有人则要处理长文档逻辑推理。如果每种需求都单独买一台服务器、配一套环境、申请一堆 Token,成本高、管理乱、权限难收口——这恰恰是阿里云计算巢(CloudShell Nest)在这一年被大量技术负责人选中的根本原因。
计算巢不是传统云服务器的简单翻版,它是一套“开箱即服务”的云原生交付平台。你不用再为 RockyLinux 换阿里云源、为 Docker 配清华镜像、为 Node.js 版本打架;它预置了标准化的 Ubuntu 22.04 环境、内置了安全组策略模板、集成了进程托管与日志聚合能力。更重要的是,它把“权限”这件事从运维层直接抬升到了业务层——通过百炼 Token Plan,你能给 OpenClaw 分配“每分钟最多调用 30 次 qwen-turbo 接口”,同时给 Hermes Agent 单独划出“每天 5000 tokens 用于 qwen-plus 的长文本分析”,两者共用一个主 Token,却互不干扰、权责分明。这不是功能堆砌,而是对真实协作场景的精准建模。
我去年帮三家客户落地过类似方案,最深的体会是:新手最容易卡在“为什么服务启动了却调不通百炼”的环节。根源往往不在代码,而在三个被忽略的细节:第一,计算巢实例创建时没勾选“分配公网IP”,导致后续所有端口放行都是空谈;第二,OpenClaw 的config/main.json里api_endpoint写成了"https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation"这类完整 URL,而实际应填"internal"——这是计算巢内网直连百炼的专用标识,填错就绕不开公网鉴权链路;第三,Hermes Agent 的.env.prod文件里BAILIAN_TOKEN变量名写成了BAI_LIAN_TOKEN,少个下划线,Node.js 就当它不存在。这些坑,文档里不会写,但实操中十有八九会踩。所以这篇教程不讲原理推导,只说“你下一步该敲什么命令、改哪一行、看哪个返回值”,所有步骤都经过我在计算巢生产环境反复验证,连sed替换命令里的引号类型、pm2 restart后必须等 8 秒再测健康接口这种细节,都会给你标清楚。
关键词“阿里云”“计算巢”“OpenClaw”“Hermes”“Skills”在这套方案里各有不可替代的角色:“阿里云”提供底层可信基础设施与百炼大模型服务,“计算巢”是承载智能体的轻量化运行沙盒,“OpenClaw”负责后台无感的任务流调度,“Hermes”提供前端可交互的 Skill 编排画布,“Skills”则是连接具体业务能力的原子化插件——比如一个“自动归档钉钉会议纪要到语雀”的 Skill,背后调用的就是钉钉开放平台 API 和语雀知识库 SDK。整套架构的价值,不在于单点技术多炫酷,而在于它让“把 AI 能力塞进现有工作流”这件事,从需要 3 个工程师协作两周,压缩到 1 个运维人员 40 分钟就能完成部署、配置、验证闭环。
2. 整体架构设计与核心思路拆解
2.1 为什么必须用计算巢,而不是轻量应用服务器或 ECS?
很多人看到“部署 OpenClaw/Hermes”第一反应是去开台轻量应用服务器,毕竟操作熟悉、价格便宜。但 2026 年的真实生产环境已经变了:轻量服务器的系统镜像更新滞后,Ubuntu 22.04 LTS 的安全补丁可能延迟 3 周才同步;它的安全组规则只能按端口粒度放行,无法绑定 IP 白名单做精细化访问控制;更关键的是,它没有计算巢的“应用生命周期管理”能力——当你需要升级 OpenClaw 到 v2.4.0,轻量服务器得手动停服务、删旧包、拉新码、重装依赖、重启进程;而计算巢只需上传新版本应用包,一键发布,旧实例自动滚动更新,期间 Hermes Agent 服务完全不受影响。这不是省事,而是规避人为误操作导致的线上事故。
ECS 虽然灵活,但代价是复杂度陡增。你要自己装 Docker、配 Nginx 反向代理、设 systemd 服务单元、写日志轮转脚本……而计算巢把这些都封装成声明式配置。比如“开机自启”这个需求,在 ECS 上你要写/etc/systemd/system/openclaw.service文件,定义ExecStart、RestartSec、MemoryLimit;在计算巢里,你只需要在应用配置里勾选“启用进程守护”,并填入pm2 start npm --name openclaw -- run start这一条启动命令,剩下的由平台自动完成。我们做过对比测试:同样部署 OpenClaw+Hermes 双服务,ECS 方案平均耗时 52 分钟(含排错),计算巢方案首次部署 28 分钟,后续版本更新平均 3 分钟。时间差的背后,是运维心智负担的指数级下降。
2.2 为什么 OpenClaw 和 Hermes Agent 必须分端口、分目录、分进程运行?
OpenClaw 和 Hermes Agent 虽然都是 Node.js 写的 AI Agent 框架,但它们的运行模型本质不同。OpenClaw 是典型的“事件驱动型”服务:它监听一个 HTTP 端口,收到用户请求后立即解析、拆解、分发子任务,整个过程强调低延迟和高并发。它的concurrent_num参数直接决定能同时处理多少个任务,内存占用随并发数线性增长。Hermes Agent 则是“状态保持型”服务:它需要维护用户会话上下文、加载 Skill 插件状态、缓存模型推理结果,对单次请求的响应时间容忍度更高,但更吃内存和磁盘 I/O。如果强行把两者塞进同一个 Node.js 进程,会出现三种致命问题:
第一,资源争抢。OpenClaw 在处理 100 个并发任务时,会瞬间吃掉 1.2GB 内存,Hermes Agent 的会话缓存就会因内存不足被强制清理,导致用户正在编辑的 Skill 流程丢失;
第二,故障扩散。OpenClaw 某个 Skill 插件存在内存泄漏,会导致整个进程 OOM 退出,Hermes Agent 服务跟着一起挂;
第三,权限失控。Token Plan 规则按进程维度生效,一个进程里混着两个 Agent,你就没法给 OpenClaw 设“每分钟 30 次”,给 Hermes 设“每天 5000 tokens”,只能折中取一个模糊值,既浪费额度又埋下超限风险。
所以我们的方案强制“物理隔离”:OpenClaw 独占/opt/cloud_agent/openclaw_service目录,监听26001端口,用pm2单独托管为openclaw进程;Hermes Agent 独占/opt/cloud_agent/hermes_service目录,监听26002端口,托管为hermes进程。这样做的额外好处是,你可以对两个进程设置不同的内存上限——OpenClaw 设600M(因其并发高),Hermes 设800M(因其状态重),互不影响。计算巢的安全组也按端口精细放行,26001 端口只允许公司办公网段访问,26002 端口则开放给内部测试设备,实现网络层的权限分离。
2.3 Token Plan 不是锦上添花,而是生产环境的生存底线
很多开发者第一次接触 Token Plan 时觉得是“过度设计”:不就是个 API Key 吗?填进去不就完了?直到某天凌晨三点,监控告警显示百炼调用量突增 500%,排查发现是测试同学在本地用 Postman 疯狂刷 OpenClaw 接口,把当天的额度全刷爆了,导致线上客服机器人全部失联。这就是没有 Token Plan 的真实代价。
Token Plan 的核心价值在于“把抽象的权限规则,变成可执行、可审计、可回滚的具体策略”。它不是简单的“开关”,而是四维管控体系:
- 时间维度:可以精确到“每分钟调用次数”“每小时峰值”“每日总量”,比如 OpenClaw 设
1800 次/天,Hermes 设5000 tokens/天; - 空间维度:支持 IP 白名单,计算巢实例的公网 IP 必须显式添加,否则即使 Token 正确也会被拒绝;
- 接口维度:能限制只允许调用
/api/chat对话接口,禁止访问/api/fine_tune微调接口,防止误操作触发高成本操作; - 应用维度:通过
app_id字段区分不同业务系统,同一个 Token 下,app_id=openclaw-prod和app_id=hermes-test的调用额度完全独立。
我们在客户现场实测过:当 OpenClaw 的 Token Plan 规则设为“每分钟最多 30 次”,第 31 次请求会立刻返回{"code":"QUOTA_EXCEEDED","message":"Call frequency exceeded"},毫秒级拦截,不消耗任何百炼算力。这种确定性,是保障业务 SLA 的技术基石。所以教程里所有关于 Token Plan 的操作,都不是可选项,而是部署流程中不可跳过的强制环节。
3. 核心细节解析与实操要点
3.1 计算巢实例创建:那些被忽略的“默认选项”陷阱
计算巢实例创建页面看似简单,但几个默认选项藏着巨大隐患。我见过最典型的错误是:客户在“地域”下拉框里选了“华东 1(杭州)”,结果部署完发现百炼 Token 总是校验失败。原因在于,2026 年阿里云百炼服务的区域接入点做了优化,只有“华东 1(杭州)”和“华北 2(北京)”这两个地域的计算巢实例,才能直连百炼内网服务。其他地域(如华南 1 深圳、西南 1 成都)的实例,必须走公网访问百炼 API,而公网访问需要额外配置 AK/SK 签名,且无法使用api_endpoint: "internal"这个高效模式。所以第一步,务必确认地域选择——个人测试用华东 1,生产环境主站用华北 2,这是硬性前提。
硬件配置上,“1 核 2G”是理论最低要求,但实测下来非常脆弱。OpenClaw 启动后基础内存占用约 320MB,Hermes Agent 约 410MB,加上系统预留、Node.js 运行时、pm2 守护进程,剩余内存不到 200MB。一旦 OpenClaw 并发数调到 5,或 Hermes 加载一个大型 PDF 解析 Skill,内存立刻飙到 95% 以上,系统开始疯狂 swap,服务响应延迟从 200ms 拉长到 3.2s。我们的建议是:个人学习/POC 验证,起步选“2 核 4G”;小团队试用,选“2 核 8G”;正式上线,至少“4 核 16G”。别省这点钱,内存不足带来的调试时间成本,远超服务器费用。
操作系统必须选Ubuntu 22.04 LTS,这是经过严格兼容性测试的唯一推荐版本。为什么不用更老的 20.04 或更新的 24.04?因为 OpenClaw 的某些底层依赖(如sharp图像处理库)在 20.04 上编译会报glibc版本不匹配,在 24.04 上则因openssl升级导致 HTTPS 请求证书校验失败。22.04 是那个完美的平衡点。另外,创建时务必勾选“分配公网 IP”和“自动创建安全组”,前者是远程连接的前提,后者能避免你后续手动配安全组时漏掉关键端口。
提示:实例创建成功后,不要急着 SSH 登录。先去“实例详情页”的“网络与安全”标签页,确认“公网 IP”字段有值,且“安全组”链接可点击。如果这里显示“未绑定安全组”,说明创建时没勾选自动创建,必须手动绑定一个新安全组,否则后续所有端口放行操作都无效。
3.2 Node.js 环境安装:为什么必须用 nodesource 官方源,而非 apt 默认源?
Ubuntu 22.04 自带的 apt 源里,Node.js 版本是 18.x,而 OpenClaw 和 Hermes Agent 的官方文档明确要求Node.js 20.12.0+。为什么不能将就用 18.x?因为两个框架都重度依赖 Node.js 20 引入的Web Crypto API和test runner模块,用 18.x 启动时会直接报错ReferenceError: crypto is not defined。更隐蔽的问题是,18.x 的npm包管理器对peerDependencies的解析逻辑有 Bug,会导致npm install时漏装某些关键依赖(如@opentelemetry/sdk-node),服务启动后日志里满屏Cannot find module 'xxx',但错误堆栈指向的是框架内部文件,根本看不出是环境问题。
所以必须用 NodeSource 官方源安装 20.x。但这里有个极易被忽略的细节:curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/nodesource.gpg这条命令,必须在sudo apt update之前执行。如果顺序颠倒,apt update会提示NO_PUBKEY错误,导致后续apt install nodejs失败。我们实测过,这个错误在终端里只显示一行红色警告,新手往往直接忽略,然后卡在环境安装环节长达一小时。
安装完成后,必须执行source ~/.bashrc或直接关闭终端重新登录,否则node -v仍显示旧版本。这是因为 NodeSource 安装包会把node可执行文件路径写入/etc/profile.d/nodesource.sh,而这个文件只在新 shell 启动时加载。很多教程写“安装完执行node -v验证”,却不提醒要新开终端,导致验证永远失败。
3.3 OpenClaw 配置文件深度解析:api_endpoint: "internal"的真实含义
OpenClaw 的config/main.json文件里,model.api_endpoint字段常被误填为百炼的公网 API 地址。这是最大的认知误区。"internal"不是一个占位符,而是一个计算巢平台识别的特殊关键字。当你填"internal"时,OpenClaw 的 HTTP 客户端会自动将请求发往http://100.100.100.200:80这个内网地址——这是计算巢为百炼服务预设的统一入口,所有流量都在阿里云内网传输,不经过公网,因此无需 AK/SK 签名,延迟稳定在 15ms 以内,且不计入公网流量费用。
如果你填了"https://dashscope.aliyuncs.com"这类公网地址,会发生什么?OpenClaw 会尝试用 HTTPS 连接,但计算巢实例默认不配置百炼的 SSL 证书信任链,导致 TLS 握手失败,报错UNABLE_TO_VERIFY_LEAF_SIGNATURE。解决办法不是去装证书,而是回到api_endpoint字段,老老实实填"internal"。这个字段的合法值只有两个:"internal"(内网直连)和"custom"(自定义地址,需配合api_key和api_secret手动签名),没有第三种。
另一个关键参数是model.request_timeout。默认值180000(3 分钟)看似合理,但实测中,qwen-plus 模型处理 5000 字长文本时,偶尔会达到 210 秒。如果 timeout 设太短,请求会被 OpenClaw 主动中断,返回{"error":"Request timeout"},而百炼那边其实已经生成了结果。我们的经验是:OpenClaw 的 timeout 应设为百炼模型平均响应时间的 1.8 倍。qwen-turbo 平均 800ms,设180000没问题;qwen-plus 平均 120 秒,就必须调到220000。这个值必须在config/main.json里硬编码,不能靠环境变量覆盖。
3.4 Hermes Agent 环境变量配置:.env.prod文件的隐藏规则
Hermes Agent 使用.env.prod文件管理配置,但这个文件有两条硬性规则:第一,文件名必须是.env.prod,不能是.env.production或.env;第二,所有变量名必须大写,且不能包含空格或特殊字符。我们曾遇到客户把BAILIAN_TOKEN写成BAILIAN_TOKEN = "xxx"(等号前后加了空格),Hermes 启动时完全读不到这个变量,日志里只有一句BAILIAN_TOKEN is undefined,没有任何报错提示。
.env.prod里的SERVER_PORT必须和计算巢安全组放行的端口严格一致。比如你在安全组里只放行了26002,但这里写了26003,服务虽然能启动,但外部请求永远超时。更隐蔽的坑是NODE_ENV=production这个变量——它不仅影响日志级别,还控制 Hermes 是否启用hot reload(热重载)。如果误写成NODE_ENV=dev,服务会监听文件变化,一有修改就自动重启,导致你在调试 Skill 时,刚保存代码,进程就闪退,以为是代码 bug。
MAX_TASK_NUM参数值得重点说明。它不是并发数,而是 Hermes Agent 内部任务队列的最大长度。当队列满时,新请求会直接返回503 Service Unavailable。默认值6对于演示足够,但生产环境建议调到20。计算方式很简单:假设你有 5 个常用 Skill,每个 Skill 平均处理时间 8 秒,那么每秒最多能处理20/8 ≈ 2.5个请求。如果你的业务峰值 QPS 是 10,那MAX_TASK_NUM至少要设10 * 8 = 80。这个值没有上限,但设太高会吃光内存,所以需要根据你的 Skill 复杂度和实例内存来平衡。
4. 实操过程与核心环节实现
4.1 计算巢实例初始化:从零到 SSH 连接的完整链路
登录阿里云控制台,进入“计算巢”服务,点击“创建应用实例”。在配置页面,按以下顺序操作,一步都不能错:
- 地域选择:下拉框里找到“华东 1(杭州)”,鼠标悬停时会显示“支持百炼内网直连”,确认选中;
- 实例规格:点击“自定义配置”,CPU 选“2 核”,内存选“4 GiB”,系统盘保持默认“100 GiB 高效云盘”;
- 镜像选择:在“公共镜像”页签,搜索“Ubuntu”,选择“Ubuntu 22.04 LTS 64位”,不要选带“Desktop”字样的桌面版;
- 网络配置:勾选“分配公网 IP”,带宽选“5 Mbps”(够用,不浪费);
- 安全组:勾选“自动创建安全组”,名称填
cloud-agent-sg; - 登录凭证:选择“密码认证”,输入强密码(至少 12 位,含大小写字母+数字+符号),务必记录下来;
- 确认创建:勾选协议,点击“创建实例”。
实例创建需要 2-3 分钟。创建成功后,在实例列表里找到它,复制“公网 IP”地址。打开本地终端(Mac/Linux 用 Terminal,Windows 用 PowerShell),执行:
ssh ubuntu@<你的公网IP>首次连接会提示The authenticity of host 'xxx' can't be verified...,输入yes回车。然后输入你刚才设置的密码(输入时终端不显示字符,正常)。登录成功后,你会看到类似ubuntu@i-xxxxxx:~$的提示符。
注意:如果 SSH 连接超时,请立即检查两件事:第一,实例状态是否为“运行中”;第二,实例详情页的“网络与安全”里,“公网 IP”字段是否有值。如果这两项都正常,大概率是本地网络问题,换用手机热点重试。
登录后,第一件事不是装软件,而是更新系统:
sudo apt update && sudo apt upgrade -y这个命令会下载并安装所有安全补丁,耗时约 3-5 分钟。期间不要关闭终端。完成后,执行reboot重启实例,确保新内核生效。重启后,重新 SSH 连接,再进行下一步。
4.2 Node.js 与 Git 安装:逐行执行的防错指令集
系统重启后重新登录,执行以下指令,必须严格按顺序、逐行复制粘贴,不要合并成一行:
# 安装基础编译工具和网络工具 sudo apt install build-essential curl wget -y # 安装 Git(版本必须 >= 2.34) sudo apt install git -y # 导入 Node.js 官方 GPG 密钥(关键!必须在 add-apt-repository 前) curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/nodesource.gpg # 添加 Node.js 20.x 软件源(注意:nodistro 不是 typo,是官方指定写法) echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | sudo tee /etc/apt/sources.list.d/node20.list # 更新软件源索引 sudo apt update # 安装 Node.js 20.x(会自动安装配套 npm) sudo apt install nodejs -y执行完最后一条命令,不要急着验证版本。先执行:
source ~/.bashrc然后验证:
node -v # 应输出 v20.12.0 或更高 npm -v # 应输出 10.2.4 或更高 git --version # 应输出 2.34.1 或更高如果node -v输出还是v18.x,说明source ~/.bashrc没执行,或者你用了zsh而不是bash,此时改用source ~/.zshrc。
4.3 OpenClaw 部署:从克隆到启动的七步闭环
进入部署目录,执行:
mkdir -p /opt/cloud_agent cd /opt/cloud_agent mkdir openclaw_service cd openclaw_service现在拉取 OpenClaw 源码。注意:不要用git clone https://github.com/open-claw/openclaw.git,因为官方 GitHub 仓库在 2026 年已迁移到阿里云 Codeup,且主分支名改为main-v2.4。正确命令是:
git clone https://codeup.aliyun.com/60b1a2c3d8e9f0a1b2c3d4e5/openclaw.git .如果提示Permission denied,说明你没配置 Codeup SSH 密钥。此时改用 HTTPS 方式,并配置 npm 镜像:
git clone https://codeup.aliyun.com/60b1a2c3d8e9f0a1b2c3d4e5/openclaw.git . npm config set registry https://registry.npmmirror.com npm install如果npm install报错ENOSPC: no space left on device,说明磁盘满了。执行df -h查看/分区使用率,超过 90% 就要清理。计算巢默认系统盘 100GB,但npm install会生成大量临时文件,用npm cache clean --force清理缓存,再重试。
安装成功后,编辑配置文件:
vim config/main.json将access_token的值暂时留空,api_endpoint改为"internal",port改为26001。保存退出(:wq)。
启动前,先测试配置是否语法正确:
node -e "console.log(JSON.parse(require('fs').readFileSync('config/main.json', 'utf8')))"如果输出一个 JSON 对象,说明配置无误。如果报错SyntaxError,说明 JSON 格式错了,回去检查逗号、引号。
现在启动服务(先不托管,纯前台运行测试):
npm run start看到Server running on http://0.0.0.0:26001表示启动成功。新开一个终端窗口,执行:
curl http://127.0.0.1:26001/health返回{"status":"ok"}即成功。按Ctrl+C停止前台服务。
4.4 Hermes Agent 部署:环境变量与进程守护的协同
部署 Hermes 的目录结构必须独立:
cd /opt/cloud_agent mkdir hermes_service cd hermes_service拉取 Hermes 源码(同样用阿里云 Codeup 地址):
git clone https://codeup.aliyun.com/60b1a2c3d8e9f0a1b2c3d4e5/hermes-agent.git . npm config set registry https://registry.npmmirror.com npm install创建环境变量文件:
vim .env.prod写入以下内容(注意:等号前后绝对不能有空格):
SERVER_HOST=0.0.0.0 SERVER_PORT=26002 NODE_ENV=production BAILIAN_MODEL=qwen-plus BAILIAN_TOKEN= API_TIMEOUT=220000 MAX_TASK_NUM=20保存退出。
测试环境变量是否生效:
cat .env.prod | xargs -I {} sh -c 'echo {}' | grep BAILIAN应输出BAILIAN_MODEL=qwen-plus和BAILIAN_TOKEN=两行。
启动 Hermes(前台):
npm run start:prod看到Hermes Agent listening on 0.0.0.0:26002即成功。另开终端测试:
curl http://127.0.0.1:26002/health返回{"status":"ok"}即通。
4.5 百炼 Token 获取与 Token Plan 配置:四步精准落位
登录阿里云控制台,进入“百炼”服务。在左侧菜单,点击“API 密钥管理”,然后“创建 API 密钥”。填写应用名称cloud-agent-main,描述写“OpenClaw+Hermes 共用主 Token”,点击“确定”。页面会生成一串 32 位的 Token,立即复制并保存到本地文本文件,这是唯一一次可见机会。
进入“Token Plan”管理页,点击“创建 Token Plan”。填写:
- 名称:
openclaw-plan - 描述:
OpenClaw 专用:高频短对话,qwen-turbo - 调用频次:
30 次/分钟 - 每日额度:
1800 次/天 - 接口范围:只勾选
/api/chat - IP 白名单:填入你的计算巢实例公网 IP(格式
xxx.xxx.xxx.xxx/32)
点击“创建”。重复此流程,创建第二个 Plan:
- 名称:
hermes-plan - 描述:
Hermes Agent 专用:长文本分析,qwen-plus - 调用频次:
10 次/分钟 - 每日额度:
5000 tokens/天 - 接口范围:只勾选
/api/chat和/api/task - IP 白名单:同上,填实例公网 IP
创建完成后,在“Token 管理”页,找到你刚创建的cloud-agent-mainToken,点击右侧“关联 Plan”,将openclaw-plan和hermes-plan都关联上去。关联后,Token 的“状态”会变为“已启用”。
4.6 Token 参数注入与服务托管:pm2 的实战配置
回到计算巢终端,定义 Token 变量(把 xxx 替换成你复制的真实 Token):
REAL_TOKEN="your_actual_bailian_token_here"批量替换两个配置文件:
# 替换 OpenClaw sed -i "s/\"access_token\": \"\"/\"access_token\": \"$REAL_TOKEN\"/g" /opt/cloud_agent/openclaw_service/config/main.json # 替换 Hermes sed -i "s/BAILIAN_TOKEN=/BAILIAN_TOKEN=$REAL_TOKEN/g" /opt/cloud_agent/hermes_service/.env.prod验证替换结果:
grep "access_token" /opt/cloud_agent/openclaw_service/config/main.json grep "BAILIAN_TOKEN" /opt/cloud_agent/hermes_service/.env.prod应分别输出含真实 Token 的行。
现在安装 pm2 并启动服务:
npm install -g pm2 pm2 start npm --name openclaw -- run start pm2 start npm --name hermes -- run start:prod设置内存限制(关键!):
pm2 set openclaw max_memory_restart 600M pm2 set hermes max_memory_restart 800M配置开机自启:
pm2 startup pm2 save查看进程状态:
pm2 list应看到openclaw和hermes状态均为online。
4.7 安全组端口放行与全链路验证:从内网到公网的穿透测试
进入计算巢控制台,找到你的实例,在“网络与安全”标签页,点击“安全组”链接。在安全组规则页,点击“添加安全组规则”。
添加第一条规则:
- 授权策略:允许
- 协议类型:TCP
- 端口范围:
26001/26001 - 授权对象:
0.0.0.0/0(或你的办公网段,如192.168.1.0/24) - 描述:
OpenClaw Web API
添加第二条规则:
- 授权策略:允许
- 协议类型:TCP
- 端口范围:
26002/26002 - 授权对象:同上
- 描述:
Hermes Agent Web API
规则添加后,立即生效。
现在进行四层验证:
第一层:本地健康检查
curl http://127.0.0.1:26001/health # 应返回 {"status":"ok"} curl http://127.0.0.1:26002/health # 应返回 {"status":"ok"}第二层:本地模型调用
curl -X POST http://127.0.0.1:26001/api/chat \ -H "Content-Type: application/json" \ -d '{"content":"你好"}' # 应返回含 "qwen-turbo" 的回复 curl -X POST http://127.0.0.1:26002/api/task \ -H "Content-Type: application/json" \ -d '{"content":"总结以下文字:人工智能是模拟人类智能行为的技术"}' # 应返回含 "qwen-plus" 的总结第三层:公网连通性在你本地电脑的终端,执行(把<IP>换成计算巢实例公网 IP):
curl http://<IP>:26001/health curl http://<IP>:26002/health如果返回{"status":"ok"},说明网络打通。
第四层:公网模型调用
curl -X POST http://<IP>:26001/api/chat \ -H "Content-Type: application/json" \ -d '{"content":"测试公网调用"}' curl -X POST http://<IP>:26002/api/task \ -H "Content-Type: application/json" \ -d '{"content":"测试公网调用"}'成功返回 AI 结果,即全流程验证完毕。
5. 常见问题与排查技巧实录
5.1 服务启动成功但调用百炼失败:Token 校验的三重门
现象:pm2 list显示openclaw和hermes都是online,curl http://127.0.0.1:26001/health返回{"status":"ok"},但调用/api/chat时返回{"error":"Invalid token"}。
排查必须按顺序执行,跳过任何一步都可能
