Приложение для Android
Снимок поддержки
- Роль: приложение компаньон-узла (Android не размещает шлюз).
- Шлюз обязателен: да (запустите его на macOS, Linux или Windows через WSL2).
- Установка: Начало работы + Сопряжение.
- Шлюз: Ранбук + Конфигурация.
- Протоколы: Протокол шлюза (узлы + плоскость управления).
Управление системой
Управление системой (launchd/systemd) находится на хосте шлюза. См. Шлюз.
Ранбук подключения
Приложение узла Android ⇄ (mDNS/NSD + WebSocket) ⇄ Шлюз Android подключается напрямую к WebSocket шлюза (по умолчанию ws://<хост>:18789) и использует сопряжение устройств (role: node).
Предварительные требования
- Вы можете запустить шлюз на «главной» машине.
- Устройство/эмулятор Android может достичь WebSocket шлюза:
- Та же локальная сеть с mDNS/NSD, или
- Один Tailscale tailnet с использованием Wide-Area Bonjour / unicast DNS-SD (см. ниже), или
- Ручное указание хоста/порта шлюза (резервный вариант)
- Вы можете запустить CLI (
openclaw) на машине шлюза (или через SSH).
1) Запустите шлюз
openclaw gateway --port 18789 --verbose
Подтвердите в логах наличие записей вида:
listening on ws://0.0.0.0:18789
Для настройки только в tailnet (рекомендуется для Вена ⇄ Лондон), привяжите шлюз к IP-адресу tailnet:
- Установите
gateway.bind: "tailnet"в файле~/.openclaw/openclaw.jsonна хосте шлюза. - Перезапустите шлюз / приложение в строке меню macOS.
2) Проверьте обнаружение (опционально)
С машины шлюза:
dns-sd -B _openclaw-gw._tcp local.
Дополнительные заметки по отладке: Bonjour.
Обнаружение в Tailnet (Вена ⇄ Лондон) через unicast DNS-SD
Обнаружение через Android NSD/mDNS не работает между разными сетями. Если ваш узел Android и шлюз находятся в разных сетях, но соединены через Tailscale, используйте Wide-Area Bonjour / unicast DNS-SD:
- Настройте зону DNS-SD (например,
openclaw.internal.) на хосте шлюза и опубликуйте записи_openclaw-gw._tcp. - Настройте Split DNS в Tailscale для выбранного домена, указывающего на этот DNS-сервер.
Подробности и пример конфигурации CoreDNS: Bonjour.
3) Подключитесь с Android
В приложении Android:
- Приложение поддерживает соединение со шлюзом через сервис переднего плана (постоянное уведомление).
- Откройте вкладку Подключить.
- Используйте режим Код настройки или Ручной.
- Если обнаружение заблокировано, используйте ручной ввод хоста/порта (и TLS/токен/пароль, когда требуется) в Расширенных настройках.
После первого успешного сопряжения Android автоматически переподключается при запуске:
- Ручная конечная точка (если включена), иначе
- Последний обнаруженный шлюз (по возможности).
4) Подтвердите сопряжение (CLI)
На машине шлюза:
openclaw devices list
openclaw devices approve <requestId>
openclaw devices reject <requestId>
Подробности о сопряжении: Сопряжение.
5) Убедитесь, что узел подключен
-
Через статус узлов:
Копировать
openclaw nodes status -
Через шлюз:
Копировать
openclaw gateway call node.list --params "{}"
6) Чат + история
Вкладка чата на Android поддерживает выбор сессии (по умолчанию main, плюс другие существующие сессии):
- История:
chat.history - Отправка:
chat.send - Push-обновления (по возможности):
chat.subscribe→event:"chat"
7) Холст + экран + камера
Хост холста на шлюзе (рекомендуется для веб-контента)
Если вы хотите, чтобы узел отображал реальный HTML/CSS/JS, который агент может редактировать на диске, укажите узлу на хост холста шлюза. Примечание: узлы загружают холст с HTTP-сервера шлюза (тот же порт, что и gateway.port, по умолчанию 18789).
- Создайте файл
~/.openclaw/workspace/canvas/index.htmlна хосте шлюза. - Переведите узел на него (локальная сеть):
openclaw nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18789/__openclaw__/canvas/"}'
Tailnet (опционально): если оба устройства находятся в Tailscale, используйте имя MagicDNS или IP-адрес tailnet вместо .local, например, http://<gateway-magicdns>:18789/__openclaw__/canvas/. Этот сервер внедряет клиент live-reload в HTML и перезагружает страницу при изменении файлов. Хост A2UI находится по адресу http://<gateway-host>:18789/__openclaw__/a2ui/. Команды холста (только на переднем плане):
canvas.eval,canvas.snapshot,canvas.navigate(используйте{"url":""}или{"url":"/"}для возврата к стандартному шаблону).canvas.snapshotвозвращает{ format, base64 }(по умолчаниюformat="jpeg").- A2UI:
canvas.a2ui.push,canvas.a2ui.reset(canvas.a2ui.pushJSONLустаревший алиас)
Команды камеры (только на переднем плане; требуют разрешений):
camera.snap(jpg)camera.clip(mp4)
См. Узел камеры для параметров и вспомогательных команд CLI. Команды экрана:
screen.record(mp4; только на переднем плане)
8) Голос + расширенная поверхность команд Android
- Голос: Android использует единый поток включения/выключения микрофона во вкладке Голос с захватом транскрипции и воспроизведением TTS (ElevenLabs при настройке, системный TTS в качестве запасного варианта).
- Переключатели голосового пробуждения/режима разговора в настоящее время удалены из UX/среды выполнения Android.
- Дополнительные семейства команд Android (доступность зависит от устройства + разрешений):
device.status,device.info,device.permissions,device.healthnotifications.list,notifications.actionsphotos.latestcontacts.search,contacts.addcalendar.events,calendar.addmotion.activity,motion.pedometerapp.update