Skip to content

使用与生命周期

切换环境

基础 daemon 的 Relay endpoint 挂在每个 yoooclaw profile 上(每个 profile config.json 里的 relay.url)。用 env 一步切换当前 profile 并重启对应的 daemon / websocket 服务组:

bash
hermes yoooclaw env            # 查看当前环境 + Relay 状态
hermes yoooclaw env test       # 切到 test profile 并重启 daemon
hermes yc env test             # 等价短别名
hermes yoooclaw env default    # 切回 default(生产)profile

聊天会话里也可以直接 /yoooclaw env <profile>/yc env <profile> 达到同样效果。内建的 defaulttestdevelopment 三个 profile 首次使用时会自动初始化,并写入对应的 Relay endpoint。切换时会先停掉上一个 profile 的 daemon,再启动目标 profile 的 —— 保证任意时刻只有一个 daemon 在跑;切到不存在的 profile 名会直接失败,不影响正在跑的 daemon。

Relay 的 apiKey 是 account 级全局配置(~/.yoooclaw/credentials.json),跟 profile 无关;某个环境需要换一把 key 时用:

bash
yoooclaw auth set-default-api-key <label>

CLI profile 统一用 openclaw-service*.yoooclaw.com 作为 Relay 隧道,APP 会话共用同一条连接。如果旧版插件曾经把过期的历史地址写进过 CLI profile,安装器会自动修复。

生命周期管理

Hermes 把 YoooClaw CLI daemon 和 openclaw-service Relay 隧道当成一个服务组统一管理。CLI daemon 以 --ingress proxied 模式运行本地 sidecar —— 只暴露 ingest API,不自己开 Relay 隧道;插件独占 openclaw-service*.yoooclaw.com 隧道(每个 apiKey 一条),承载 Hermes APP 会话 RPC、手机通知、录音、图片和 daemon egress 事件。

启动时插件会根据插件版本、内置 CLI 二进制、当前 profile、Relay environment、openclaw-service URL、api-key 指纹、proxied ingress 模式和本地 egress callback 计算出一个 lifecycle generation。如果已有 daemon 在跑但它宣称的 owner 不是 hermes-plugin,或者 ingressMode 不是 proxied,或者 generation 对不上,插件会停掉它、启动当前内置 CLI 的 daemon、等待就绪,再连上 openclaw-service 隧道。关闭时顺序相反:先断隧道,再停掉自己拥有的 daemon。

proxied 模式下,openclaw-service Relay 帧会被转发到 daemon 的 localhost ingest/gateway 端点,带上和 CLI dispatcher 一样的内部 relay 标记头(用于区分内部转发与外部直连流量)和 api-key label。daemon 的 egress 事件(例如 recording.status)会 POST 回插件持有的、token 保护的 127.0.0.1 callback,再由插件把它们广播到 openclaw-service Relay websocket 上。

用下面的命令诊断升级或连接问题:

bash
hermes yoooclaw lifecycle status
hermes yoooclaw lifecycle restart
hermes yc lifecycle status

APP 适配器在连接期间还跑着一个 watchdog:daemon 消失或 generation 变化时,适配器会重启整个服务组;如果 Relay websocket 断连超过 YOOOCLAW_HERMES_WS_RESTART_AFTER(默认 30 秒),同样会重启服务组。YOOOCLAW_HERMES_LIFECYCLE_WATCH_INTERVAL 调整 watchdog 检查间隔(默认 5 秒),失败恢复用指数退避,上限 YOOOCLAW_HERMES_LIFECYCLE_MAX_BACKOFF(默认 60 秒)。如果 Relay 连接持续失败,watchdog 仍会独立恢复本地 daemon 并持续重试远端连接 —— 一次瞬时网络故障不会让 daemon 停在挂掉的状态。

功能面

工具插件暴露的能力:通知、录音、图片、Relay、灯控、灯效规则 CRUD、daemon 状态、doctor。APP 平台适配器直连 Relay,把既有的 OpenClaw 兼容 chat.sendchat.historychat.abortsessions.* RPC 帧翻译成 Hermes 消息和 APP 自有的会话状态。

常用生命周期相关环境变量

大部分场景不需要手动设置,遇到需要调整超时、关闭某个自动行为、或者本地开发调试时会用到:

环境变量默认值作用
YOOOCLAW_HERMES_AUTO_START_DAEMON开启设为 0 关闭 session 启动时自动拉起 daemon。
YOOOCLAW_HERMES_RECONNECT_RELAY_ON_START开启设为 0 关闭 supervisor 启动时自动重连 Relay。
YOOOCLAW_HERMES_WS_RESTART_AFTER30(秒)Relay websocket 断连超过这个时长才触发整组重启。
YOOOCLAW_HERMES_LIFECYCLE_WATCH_INTERVAL5(秒)watchdog 轮询间隔。
YOOOCLAW_HERMES_LIFECYCLE_MAX_BACKOFF60(秒)恢复失败后指数退避的上限。
YOOOCLAW_HERMES_LIFECYCLE_MISMATCH_STREAK2daemon 状态连续判定为 mismatch 多少次才触发重启(避免探测抖动误杀)。
YOOOCLAW_CLI_PATH未设置显式指定 CLI 二进制路径,设置后完全跳过内置 CLI 的 PATH 注入逻辑,仅用于本地开发调试内置 CLI 之外的版本。
YOOOCLAW_HERMES_INSTALL_CLI开启设为 0 关闭插件加载时的 PATH 注入(shim 安装)。
YOOOCLAW_HERMES_INSTALL_SKILLS开启设为 0 关闭 skills 拷贝安装。

下一步

  • 调试与排错 —— 日志位置、常见故障处理。
  • 独立 CLI —— Hermes 插件内置管理的 daemon 就是这套 CLI。