概述

macOS 应用通过 launchd 管理 Gateway,不将 Gateway 作为子进程直接启动。应用首先尝试连接已运行的 Gateway;若不可达,则通过外部 openclaw CLI 启用 launchd 服务。

子进程模式(应用直接生成 Gateway)当前未使用。如需更紧密的 UI 耦合,在终端手动运行 Gateway。

默认行为(launchd)

  • 安装 per-user LaunchAgent,标签 ai.openclaw.gateway(使用 --profile 时为 ai.openclaw.<profile>)
  • 本地模式启用时,应用确保 LaunchAgent 已加载并按需启动 Gateway
  • 日志写入 launchd gateway 日志路径(可在 Debug Settings 中查看)
# 重启 Gateway
launchctl kickstart -k gui/$UID/ai.openclaw.gateway
 
# 停止 Gateway
launchctl bootout gui/$UID/ai.openclaw.gateway

未签名开发构建

scripts/restart-mac.sh --no-sign 用于无签名密钥的快速本地构建:

  • 写入 ~/.openclaw/disable-launchagent 防止 launchd 指向未签名的 relay 二进制

签名运行 scripts/restart-mac.sh 时,若存在该标记则自动清除。手动重置:

rm ~/.openclaw/disable-launchagent

Attach-only 模式

强制 macOS 应用永不安装或管理 launchd:

# 启动时传入参数
OpenClaw.app --attach-only
# 或
OpenClaw.app --no-launchd

此模式设置 ~/.openclaw/disable-launchagent,应用仅连接已运行的 Gateway。也可在 Debug Settings 中切换。

远程模式

远程模式不启动本地 Gateway,应用通过 SSH 隧道连接远程主机。

为什么选择 launchd

  • 登录时自动启动
  • 内置重启/KeepAlive 语义
  • 可预测的日志和监督

相关链接