当前位置: 首页 > news >正文

计算巢上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.jsonapi_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文件,定义ExecStartRestartSecMemoryLimit;在计算巢里,你只需要在应用配置里勾选“启用进程守护”,并填入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-prodapp_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 APItest 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_keyapi_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. 地域选择:下拉框里找到“华东 1(杭州)”,鼠标悬停时会显示“支持百炼内网直连”,确认选中;
  2. 实例规格:点击“自定义配置”,CPU 选“2 核”,内存选“4 GiB”,系统盘保持默认“100 GiB 高效云盘”;
  3. 镜像选择:在“公共镜像”页签,搜索“Ubuntu”,选择“Ubuntu 22.04 LTS 64位”,不要选带“Desktop”字样的桌面版
  4. 网络配置:勾选“分配公网 IP”,带宽选“5 Mbps”(够用,不浪费);
  5. 安全组:勾选“自动创建安全组”,名称填cloud-agent-sg
  6. 登录凭证:选择“密码认证”,输入强密码(至少 12 位,含大小写字母+数字+符号),务必记录下来
  7. 确认创建:勾选协议,点击“创建实例”。

实例创建需要 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-plusBAILIAN_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-planhermes-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

应看到openclawhermes状态均为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显示openclawhermes都是onlinecurl http://127.0.0.1:26001/health返回{"status":"ok"},但调用/api/chat时返回{"error":"Invalid token"}

排查必须按顺序执行,跳过任何一步都可能

http://www.cnnetsun.cn/news/3414566.html

相关文章:

  • 从原理到实战:深入解析CRC-16/MODBUS校验算法及其C语言高效实现
  • Supabase实战避坑指南:PostgreSQL+RLS+实时订阅上线 checklist
  • DreamZero环境配置实战:A100/H100下CUDA驱动与PyTorch精准对齐指南
  • 同步时序电路与状态机设计:从JK触发器到13进制计数器实践
  • OpenClaw部署生存指南:Node.js版本、Docker网络与API认证三重通关
  • 浏览器插件实现公众号多平台同步:Trae驱动的氛围编程实践
  • 游戏状态可视化与透视漏洞修复:技术实现与玩法调整
  • 进制转换:程序员必备的内功心法,C/Java实现详解
  • ANSYS 19.2安装失败73%的根因:系统环境硬性校验详解
  • Python极速搭建局域网文件共享服务器:一行命令实现HTTPS安全传输
  • 【数字孪生实战案例】智慧停车系统如何清晰展示车位占用、空余状态等实时车位信息?~山海鲸可视化
  • 保险丝工作原理、种类与选型指南:从基础原理到工程实践
  • OpenStack虚拟机创建全流程解析:从Keystone认证到Nova调度
  • Qt控制台中文乱码的根源剖析与编码一致性配置实战
  • IntelliJ IDEA Java开发环境搭建避坑指南
  • 如何识别技术博客中的虚构产品与合规风险
  • 理解Linux各个目录的作用
  • HR202L湿敏电阻RC充放电法实战:从电路设计到湿度换算
  • AI大模型代码能力排行榜更新:Claude-Opus登顶与国产模型性价比分析
  • C语言实现Windows C盘清理工具:文件遍历与安全删除实战
  • Arm Mac本地部署Overleaf:ARM64 Ubuntu+Docker全链路适配指南
  • OpenStack Nova手动安装:从零配置nova-api与nova-conductor
  • 洛谷题目:P1208 [USACO1.3] 混合牛奶 Mixing Milk 题解(本题简)
  • Codex APP 全栈开发协作者:Node.js+Git+VS Code 深度集成指南
  • Thinking Machines 披露未来技术路线:押注内核级原生实时多模态;AI 潮玩硬件厂商珞博智能完成亿元级 Pre-A 轮融资丨日报
  • 十分钟高效训练:激活核心肌群,改善身体机能与姿态
  • LangChain安全数据库交互:SQL Agent工程化落地指南
  • RAG的三次进化:从朴素检索到Agentic RAG
  • 2026年呼叫中心系统选型避坑指南:本地部署与云原生方案的成本与安全对比
  • VSCode 多光标与批量编辑:从基础操作到实战提效