先定界:是真「总停机」,还是会话里没人接单
无人值守里常把 Gateway 在线、执行端掉线 误判成「全挂」。并行看:launchctl list 的 Label、监听端口、外网健康检查 200。若仅执行侧超时,多半是 launchd 上下文 或 SSH 与 GUI 用户域 错位,而非业务逻辑。
launchd 链路:从 plist 到日志,一次对齐
核对 Label 唯一、ProgramArguments 绝对路径、工作目录与日志路径可写;在 EnvironmentVariables 里显式写 PATH 与 Node,避免与登录 shell 分叉。KeepAlive 的 ThrottleInterval 过小易崩溃风暴,过大像僵死。改 plist 后对该域 bootout/bootstrap,清掉旧实例。
守护进程与会话隔离:谁有权读钥匙串与卷
LaunchDaemon 跑在系统上下文,适合监听端口,但访问用户钥匙串、屏幕录制类权限常失败;LaunchAgent 绑定到登录用户,更适合需要钥匙串、ClawHub 缓存目录与开发者证书的操作。纯 SSH 批处理往往拿不到 GUI 会话里的环境变量,表现为「手动 ssh 一下就好,无人值守必挂」。若你刚做过 Node 或权限调整,建议对照 《Node LTS 与 PATH/权限漂移排错》 把三元组与 plist 环境一次性锁死。
ClawHub 技能审计:升级后第一批受害者
技能包更新会改入口脚本、依赖与沙箱目录。审计抓三点:清单哈希、只读挂载 是否挡缓存写入、声明权限 是否与 launchd 域一致。生产机保留上一版快照与回滚命令,变更窗口先干跑;「技能集 + 区域」作发布单元可减少漂移。
节点 × 内存档位:把故障面从「随机」变「可预期」
同一套 launchd 配置在 M4 16GB 上更容易因多技能并发触发内存回收,表现为间歇性断连;24GB 适合双路 Gateway+Worker;M4 Pro 更适合重技能包与本地模型侧车。区域上,日韩港新与美西的差异主要在 RTT 与 API 亲和,与「总停机」类问题叠加时,优先保证执行机与制品仓同区,降低长链路假死概率。更系统的区域与并联取舍见 《Linux CI 接力远程 Mac 节点选择与 M4 扩容并联决策表》。
| 档位 | 典型症状 | 排错侧重点 |
|---|---|---|
| M4 16GB | 偶发全挂、日志停在 OOM 前后 | 限并发、技能分片、swap 监控 |
| M4 24GB | 高峰时段排队变长 | 队列深度、KeepAlive 策略 |
| M4 Pro | 单任务重但整机仍健康 | 技能沙箱 I/O、同区制品同步 |
上线前 60 秒检查清单
- 域正确:Daemon / Agent 与钥匙串、目录权限一致。
-
环境显式:
PATH、Node、OpenClaw 二进制路径写进 plist。 - 日志落盘:stdout/stderr 可轮转,避免撑满根分区。
- 技能版本钉死:ClawHub 清单与回滚包就绪后再切流量。
常见问题
EnvironmentVariables 与制品路径建议按区域参数化,避免跨区域硬编码。无人值守要的是「上下文一致 + 低运维噪声」
把 launchd、ClawHub 与执行会话钉在同一套 macOS 用户域上,排错成本会陡降。Apple Silicon M4 的统一内存让 Gateway 与重技能同机争用时更可预测;macOS 极低崩溃率与约 4W 级待机功耗,适合 7×24;Gatekeeper、SIP、FileVault 则降低无人看管时的面攻击风险。相比自攒 x86 小主机,Mac mini M4 在总拥有成本与静音运维上更省心。若你希望把本文链路跑在托管环境、省去机房往返,从首页了解并立即开通一台远程 Mac mini M4 作为标准基线机。