Перейти к основному содержанию

Жизненный цикл Gateway (шлюза) на macOS

Приложение для macOS по умолчанию управляет Gateway (шлюзом) через launchd и не запускает Gateway как дочерний процесс. Сначала оно пытается подключиться к уже запущенному Gateway на настроенном порту; если доступного экземпляра нет, приложение включает сервис launchd через внешний CLI openclaw (без встроенного runtime). Это обеспечивает надёжный автозапуск при входе в систему и перезапуск при сбоях. Режим дочернего процесса (когда Gateway запускается непосредственно приложением) в настоящее время не используется. Если требуется более тесная связка с UI, запускайте Gateway вручную в терминале.

Поведение по умолчанию (launchd)

  • Приложение устанавливает LaunchAgent для пользователя с меткой bot.molt.gateway (или bot.molt.<profile> при использовании --profile/OPENCLAW_PROFILE; поддерживается устаревший com.openclaw.*).
  • Когда включён локальный режим, приложение гарантирует, что LaunchAgent загружен, и при необходимости запускает Gateway.
  • Логи записываются по пути логов gateway для launchd (видно в Debug Settings).
Часто используемые команды:
launchctl kickstart -k gui/$UID/bot.molt.gateway
launchctl bootout gui/$UID/bot.molt.gateway
Замените метку на bot.molt.<profile> при запуске именованного профиля.

Неподписанные dev‑сборки

scripts/restart-mac.sh --no-sign предназначен для быстрых локальных сборок, когда у вас нет ключей подписи. Чтобы предотвратить указание launchd на неподписанный бинарник relay, он:
  • Выполняет запись ~/.openclaw/disable-launchagent.
Подписанные запуски scripts/restart-mac.sh очищают это переопределение, если маркер присутствует. Для ручного сброса:
rm ~/.openclaw/disable-launchagent

Режим только подключения

Чтобы принудительно заставить приложение для macOS никогда не устанавливать и не управлять launchd, запускайте его с --attach-only (или --no-launchd). Это устанавливает ~/.openclaw/disable-launchagent, поэтому приложение только подключается к уже запущенному Gateway. Аналогичное поведение можно переключить в Debug Settings.

Удалённый режим

Удалённый режим никогда не запускает локальный Gateway. Приложение использует SSH‑туннель к удалённому хосту и подключается через этот туннель.

Почему мы предпочитаем launchd

  • Автозапуск при входе в систему.
  • Встроенная семантика перезапуска/KeepAlive.
  • Предсказуемые логи и надзор.
Если когда‑нибудь снова понадобится настоящий режим дочернего процесса, его следует задокументировать как отдельный, явный режим только для разработки.