Skip to main content
Этот сценарий позволяет приложению macOS выступать в роли полноценного пульта дистанционного управления для Gateway OpenClaw, работающего на другом хосте (настольном компьютере или сервере). Приложение подключается напрямую к доверенным URL-адресам Gateway в локальной сети или Tailnet либо управляет SSH-туннелем, если удалённый Gateway доступен только через loopback-интерфейс. Проверки работоспособности, перенаправление Voice Wake и Web Chat используют ту же удалённую конфигурацию из раздела Settings -> General.

Режимы

  • Локальный (этот Mac): всё работает на ноутбуке; SSH не используется.
  • Удалённый через SSH (по умолчанию): команды OpenClaw выполняются на удалённом хосте. Приложение открывает SSH-соединение с помощью -o BatchMode, выбранных вами идентификационных данных или ключа и локального перенаправления порта.
  • Прямое удалённое подключение (ws/wss): без SSH-туннеля; приложение подключается непосредственно к URL-адресу Gateway (через локальную сеть, Tailscale, Tailscale Serve или общедоступный обратный прокси-сервер HTTPS).

Удалённые способы подключения

  • SSH-туннель (по умолчанию): использует ssh -N -L ... для перенаправления порта Gateway на localhost. Gateway видит IP-адрес Node как 127.0.0.1, поскольку туннель использует loopback-интерфейс.
  • Прямое подключение (ws/wss): подключается непосредственно к URL-адресу Gateway. Gateway видит реальный IP-адрес клиента.
Приложение отключает мультиплексирование SSH-соединений и переход в фоновый режим после аутентификации для собственных процессов SSH, чтобы отслеживать и перезапускать конкретный процесс, даже если выбранный псевдоним включает ControlMaster или ForkAfterAuthentication. По умолчанию проверка ключа SSH-хоста выполняется строго, поскольку через этот туннель передаются учётные данные Gateway. Чтобы использовать собственные правила доверия управляемого SSH-псевдонима, задайте --ssh-host-key-policy openssh с помощью openclaw-mac configure-remote или напрямую задайте для gateway.remote.sshHostKeyPolicy значение "openssh". Прежде чем включать этот режим, проверьте псевдоним и все соответствующие параметры Host * или системную конфигурацию. При изменении цели SSH (в приложении или через configure-remote) политика снова устанавливается в strict, если вы явно не включите этот режим повторно для новой цели. В режиме SSH-туннеля обнаруженные имена хостов локальной сети или Tailnet сохраняются как gateway.remote.sshTarget. Приложение оставляет gateway.remote.url на локальной конечной точке туннеля (например, ws://127.0.0.1:18789), чтобы CLI, Web Chat и локальная служба хоста Node использовали одно и то же подключение через loopback-интерфейс. Если при обнаружении возвращаются и необработанные IP-адреса Tailnet, и стабильные имена хостов, приложение отдаёт предпочтение именам Tailscale MagicDNS или локальной сети, чтобы подключения лучше сохранялись при изменении адресов. Если локальный порт туннеля отличается от удалённого порта Gateway, задайте для gateway.remote.remotePort порт удалённого хоста. В удалённом режиме за автоматизацию браузера отвечает хост Node CLI, а не Node нативного приложения macOS. Приложение по возможности запускает установленную службу хоста Node; чтобы включить управление браузером с этого Mac, установите или запустите её с помощью openclaw node install ... и openclaw node start (либо запустите openclaw node run ... на переднем плане), затем выберите целевой Node с поддержкой браузера.

Требования к удалённому хосту

  1. Установите Node и pnpm, затем соберите или установите CLI OpenClaw (pnpm install && pnpm build && pnpm link --global).
  2. Убедитесь, что openclaw доступен в PATH для неинтерактивных оболочек (при необходимости создайте символическую ссылку в /usr/local/bin или /opt/homebrew/bin).
  3. Для подключения через SSH настройте аутентификацию SSH по ключу. Для стабильной доступности за пределами локальной сети рекомендуется использовать IP-адреса Tailscale.

Настройка приложения macOS

Чтобы предварительно настроить приложение через SSH без экрана приветствия:
Если Gateway уже доступен в доверенной локальной сети или Tailnet, можно полностью отказаться от SSH:
Оба варианта записывают ~/.openclaw/openclaw.json, отмечают первоначальную настройку как завершённую и позволяют приложению управлять выбранным способом подключения при следующем запуске. Для --local-port/--remote-port по умолчанию используется 18789. Другие флаги: --password, --identity <path>, --ssh-host-key-policy <strict|openssh>, --project-root <path>, --cli-path <path>, --json. Выполните openclaw-mac configure-remote --help, чтобы просмотреть полную справку. Чтобы вместо этого выполнить настройку через пользовательский интерфейс:
  1. Откройте Settings -> General.
  2. В разделе OpenClaw runs выберите Remote и задайте:
    • Transport: SSH tunnel или Direct (ws/wss).
    • SSH target: user@host (необязательно — :port). Если Gateway находится в той же локальной сети и объявляет себя через Bonjour, выберите его в списке обнаруженных устройств, чтобы автоматически заполнить это поле.
    • Gateway URL (только для Direct): wss://gateway.example.ts.net (или ws://... для локального подключения или подключения по локальной сети).
    • Identity file (расширенная настройка): путь к вашему ключу.
    • Project root (расширенная настройка): путь к удалённой рабочей копии, используемой для выполнения команд.
    • CLI path (расширенная настройка): необязательный путь к исполняемой точке входа или двоичному файлу openclaw (заполняется автоматически, если объявлен).
  3. Нажмите Test remote. Успешный результат означает, что удалённая команда openclaw status --json выполнена правильно. Ошибки обычно указывают на проблемы с PATH или CLI; код завершения 127 означает, что CLI не найден на удалённом хосте.
  4. Проверки работоспособности и Web Chat теперь автоматически выполняются через выбранный способ подключения.

Web Chat

  • SSH-туннель: подключается к Gateway через перенаправленный управляющий порт WebSocket (по умолчанию 18789).
  • Прямое подключение (ws/wss): подключается непосредственно к настроенному URL-адресу Gateway.
  • Отдельного HTTP-сервера Web Chat нет.

Разрешения

  • Удалённому хосту требуются те же разрешения TCC, что и локальному (Automation, Accessibility, Screen Recording, Microphone, Speech Recognition, Notifications). Один раз выполните первоначальную настройку на этом компьютере, чтобы предоставить их.
  • Node передают сведения о состоянии своих разрешений через node.list / node.describe, чтобы агенты знали, какие возможности доступны.

Примечания по безопасности

  • На удалённом хосте предпочтительно привязывать службы к loopback-интерфейсу и подключаться через SSH, Tailscale Serve либо доверенный прямой URL-адрес Tailnet или локальной сети.
  • Для SSH-туннелирования по умолчанию требуется уже доверенный ключ хоста. Сначала добавьте ключ хоста в настроенный файл известных хостов либо явно задайте gateway.remote.sshHostKeyPolicy: "openssh" для управляемого псевдонима, правила доверия OpenSSH которого вы принимаете.
  • Если Gateway привязан к интерфейсу, отличному от loopback, требуйте действительную аутентификацию Gateway: токен, пароль или обратный прокси-сервер с учётом идентификации и параметром gateway.auth.mode: "trusted-proxy".
  • См. разделы Безопасность и Tailscale.

Процесс входа в WhatsApp (удалённый режим)

  • Выполните openclaw channels login --channel whatsapp --verbose на удалённом хосте. Отсканируйте QR-код с помощью WhatsApp на телефоне.
  • Если срок действия аутентификации истёк, повторно выполните вход на этом хосте. Проверка работоспособности сообщает о проблемах с подключением.

Устранение неполадок

Звуки уведомлений

Выбирайте звук для каждого уведомления из скриптов с помощью openclaw nodes notify, например:
В приложении нет глобального переключателя звука по умолчанию; вызывающая сторона выбирает звук (или его отсутствие) для каждого запроса.

Связанные материалы