2026-04-21:无头租赁云 Mac 上的 OpenClaw 子代理与频道绑定排障
当 Discord 线程不再抵达 子代理,或 Telegram 队列静默而网关仍监听 127.0.0.1:18789 时,你遇到的是绑定 + 会话问题,而不是模型宕机。租赁的 Apple Silicon Mac 若只暴露 SSH,你无法靠 GUI 点选修复映射。本 2026-04-21 手册依次执行 openclaw doctor、频道探测、会话目录检查、受控网关重启,并串联 健康探针、nginx 入口、网关升级/回滚,让 香港 / 日本 / 韩国 / 新加坡 / 美国 团队共享同一恢复叙事;并与聚焦包布局的 Skills 与 ClawHub 钉版 文章区分职责。
排障前先建立时间线:最近是否升级 npm 次版本?是否滚动部署了新的 webhook 路径?是否在多环境共用同一状态目录?把 semver、Git SHA、配置 diff 写进工单,可显著缩短来回。下列症状表帮助你先把问题分层,再决定是查 token、路径还是进程陈旧。
值得分类的症状模式
| 现象 | 可能层级 | 第一步 |
|---|---|---|
| 网关健康但频道无声 | Token、webhook 或配对 | 频道状态探测 + 配对列表 |
| 子代理启动错误提及 sessions | 文件系统路径校验 | 检查 sessions 目录权限与配置 |
| npm 升级后反复抖动 | 全局安装与运行进程不一致 | 停止网关,比较 openclaw --version 与运行中二进制 |
doctor、状态与日志关联
从 openclaw doctor 开始,将 stdout 送入日志管道。对照 重复 LaunchAgent 指南——重复安装而不卸载 plist 会堆叠监听,比团队预期更快。
openclaw doctor 2>&1 | tee /tmp/openclaw-doctor-$CI_BUILD_ID.log
将 doctor 输出与网关日志中的 request id 关联;若使用结构化字段,可对齐 生产日志 中的键名约定。
频道绑定与提及门槛
确认 openclaw.json(或后继格式)把正确的 频道 ID 映射到 代理 ID。提及门槛(requireMention)会在运营期望“隐式订阅”时悄悄丢流量——请为每个团队记录预期交互模型。公网入口请在 nginx 终止 TLS 并设置保守速率限制。
会话路径与子代理存储
上游版本收紧校验:会话文件必须位于配置的 sessions 根 之下。升级后若日志报路径错误,先将存储配置与发行说明 diff,再按 密钥与 launchd 调整 OPENCLAW_STATE_DIR 或等价变量,而不是盲目 chmod。
避免惊群的网关重启
- 暂停入口 — 上游返回 503 并带
Retry-After。 - 停止 网关(CLI 或文档中的
launchctl)。 - 启动,待本地健康检查通过后再对世界开放。
Nginx、健康检查与区域切换
本地 curl 通过后,再启用 nginx 并观察错误率。若某区域 Mac 不健康,将自动化切到 定价 页列出的第二节点,而不是反复重启单机。
相关手册
网状访问见 Tailscale 网关;容器化与原生 npm 对比见 Docker 与本地 npm。结构化日志字段与 生产日志 一文保持一致,便于跨团队排障。
常见问题:云 Mac 上的子代理
| 问题 | 回答 |
|---|---|
| 子代理应共享同一网关用户吗? | 更稳妥是按环境拆分状态目录——即便同机也避免会话串话。 |
| 配对审批能全自动吗? | 仅在组织风险承受度内;记录谁拥有聊天桥接的设备审批。 |
| 事故工单应包含什么? | 网关日志与频道提供商控制台互证;工单写明 semver + Git SHA。 |
结论:把频道绑定当作防火墙规则——显式 ID、显式路径、显式重启——并在每次触碰 npm 全局包时准备好回滚 tarball。