Жизненный цикл шлюза
Приложение macOS по умолчанию управляет шлюзом через launchd и не запускает шлюз как дочерний процесс. Сначала оно пытается подключиться к уже работающему шлюзу на настроенном порту; если ни один не доступен, оно включает службу launchd через внешний CLI openclaw (без встроенной среды выполнения). Это обеспечивает надежный автоматический запуск при входе в систему и перезапуск при сбоях. Режим дочернего процесса (когда шлюз запускается напрямую приложением) в настоящее время не используется. Если вам нужна более тесная связь с пользовательским интерфейсом, запускайте шлюз вручную в терминале.
Поведение по умолчанию (launchd)
- Приложение устанавливает LaunchAgent для каждого пользователя с меткой
ai.openclaw.gateway(илиai.openclaw.<profile>при использовании--profile/OPENCLAW_PROFILE; устаревшиеcom.openclaw.*поддерживаются). - Когда включен локальный режим, приложение гарантирует, что LaunchAgent загружен, и запускает шлюз при необходимости.
- Логи записываются в путь к журналу шлюза launchd (видны в настройках отладки).
Распространенные команды:
launchctl kickstart -k gui/$UID/ai.openclaw.gateway
launchctl bootout gui/$UID/ai.openclaw.gateway
Замените метку на ai.openclaw.<profile> при использовании именованного профиля.
Неподписанные сборки для разработки
scripts/restart-mac.sh --no-sign предназначен для быстрых локальных сборок, когда у вас нет ключей подписи. Чтобы launchd не указывал на неподписанный бинарный файл реле, скрипт:
- Создает файл
~/.openclaw/disable-launchagent.
Подписанные запуски scripts/restart-mac.sh сбрасывают это переопределение, если маркер присутствует. Чтобы сбросить вручную:
rm ~/.openclaw/disable-launchagent
Режим только подключения
Чтобы принудительно запретить приложению macOS устанавливать или управлять launchd, запустите его с флагом --attach-only (или --no-launchd). Это создаст файл ~/.openclaw/disable-launchagent, поэтому приложение будет подключаться только к уже запущенному шлюзу. Это же поведение можно переключить в настройках отладки.
Удаленный режим
Удаленный режим никогда не запускает локальный шлюз. Приложение использует SSH-туннель к удаленному хосту и подключается через этот туннель.
Почему мы предпочитаем launchd
- Автоматический запуск при входе в систему.
- Встроенная семантика перезапуска/KeepAlive.
- Предсказуемые логи и контроль.
Если когда-либо снова понадобится режим истинного дочернего процесса, его следует задокументировать как отдельный, явный режим только для разработки.
CanvasПроверки работоспособности