Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Часть 06: развёртывание OpenClaw, подключение и запуск

После этой главы читатель должен уметь три вещи. Во-первых, понимать, как фронтенд и бэкенд запускаются после перезагрузки. Во-вторых, знать, какую команду ввести вручную, если служба не поднялась сама. В-третьих, знать, какой адрес открывать в браузере для фронтенда, а какие адреса относятся к бэкенду и не предназначены для просмотра страниц.

1. Что проверить сразу после перезагрузки

После перезагрузки не спешите открывать браузер. Сначала выполните в терминале платы три команды и убедитесь, что бэкенд и служба кнопок запустились.

sudo systemctl status magicclaw.service --no-pager
sudo systemctl status magicclaw-buttons.service --no-pager
curl http://127.0.0.1:18789/health

Систему можно считать готовой к работе, если выполнено следующее:

  • magicclaw.service показывает active (running);
  • magicclaw-buttons.service показывает active (running);
  • проверка состояния возвращает что-то вроде {"ok":true,"status":"live"}.

Если на этом шаге что-то не проходит, сначала исправьте службы, и только потом смотрите веб-страницу. Веб-страница — всего лишь пункт управления: если бэкенд не запущен, она работать не будет.

2. Как вручную запустить фронтенд и бэкенд после перезагрузки

Обычно эти две службы уже настроены systemd на автозапуск, то есть после перезагрузки поднимаются сами, и вводить команды каждый раз не нужно.

Если после загрузки служб не оказалось, их можно запустить вручную:

sudo systemctl start magicclaw.service
sudo systemctl start magicclaw-buttons.service

Чтобы они стартовали при каждой загрузке, достаточно один раз выполнить:

sudo systemctl enable magicclaw.service
sudo systemctl enable magicclaw-buttons.service

Если нужно перечитать конфигурацию и перезапустить службы, используйте:

sudo systemctl daemon-reload
sudo systemctl restart magicclaw.service
sudo systemctl restart magicclaw-buttons.service

3. Как открыть веб-фронтенд

Стабильно работающий адрес веб-интерфейса:

http://192.168.127.10:18789/

Этот адрес теперь занят легковесным фронтендом (Lite), который подготовлен для учебника. Он подходит для демонстрации курса, веб-управления и отладки в локальной сети.

Если браузер автоматически переходит на старую страницу чата или на старой странице появляется device identity required, не продолжайте обновлять её как основной вход. Старая страница — это историческая совместимая точка входа; учебник не рекомендует использовать её для повседневной работы.

Важно различать два адреса:

  • http://192.168.127.10:18789/ — страница фронтенда, основной вход;
  • http://127.0.0.1:18791/ — интерфейс аутентификации бэкенда, это не страница для открытия в браузере.

Ответ Unauthorized при открытии 18791 — нормальное поведение: интерфейс требует токен Bearer и сам по себе не является пользовательским интерфейсом.

4. Как связаны три кнопки и веб-управление

В этой главе по умолчанию используется режим, в котором кнопками управляет MagicClaw, а не заводской режим.

  • left — левая кнопка, если смотреть на устройство с лицевой стороны.
  • middle — средняя кнопка.
  • right — правая кнопка, если смотреть на устройство с лицевой стороны.

Каждой кнопке можно назначить одно из действий: stereo, gesture, voice_chat, voice_asr, yolo, stop_all, off.

Посмотреть текущие назначения:

sudo /userdata/magicclaw/runtime/bin/magicboxctl buttons show

Записать набор назначений по умолчанию:

sudo /userdata/magicclaw/runtime/bin/magicboxctl buttons set left stereo
sudo /userdata/magicclaw/runtime/bin/magicboxctl buttons set middle gesture
sudo /userdata/magicclaw/runtime/bin/magicboxctl buttons set right voice_chat

Имитировать нажатие:

sudo /userdata/magicclaw/runtime/bin/magicboxctl buttons invoke right

5. Какие команды требуют сначала запустить голосовую цепочку

Команды voice say и voice prompt не являются самостоятельными командами локального озвучивания. Для их работы сначала должна быть запущена голосовая цепочка.

Сначала запустите базу распознавания:

sudo /userdata/magicclaw/runtime/bin/magicboxctl voice asr start

Затем проверьте состояние:

sudo /userdata/magicclaw/runtime/bin/magicboxctl voice status

Для полного разговорного режима запустите:

sudo /userdata/magicclaw/runtime/bin/magicboxctl voice chat start

Осмысленно выполнять следующие две команды можно только после того, как voice_asr: running и voice_chat: running:

sudo /userdata/magicclaw/runtime/bin/magicboxctl voice say "你好,这是板端朗读测试。"  # «Здравствуйте, это тест озвучивания на плате»
sudo /userdata/magicclaw/runtime/bin/magicboxctl voice prompt "请只回答:测试通过。"  # «Ответьте только: тест пройден»

Первая фраза в примере — китайская: это тестовая реплика для синтеза речи, которую понимает голосовой движок; её перевод: «Здравствуйте, это тест озвучивания на плате». Вторая — «Отвечайте только: тест пройден».

Если команда застряла на сообщении Waiting for at least 1 matching subscription(s)..., значит, никто не подписан на нужный топик. Это не ошибка синтаксиса команды.

6. Как пользоваться командами сервоприводов

Команды сервоприводов не зависят от ROS и выполняются напрямую:

sudo /userdata/magicclaw/runtime/bin/magicboxctl servo set left 15
sudo /userdata/magicclaw/runtime/bin/magicboxctl servo set right 45
sudo /userdata/magicclaw/runtime/bin/magicboxctl servo greet 1

Здесь left и right означают левую и правую опорные стойки, если смотреть на устройство с лицевой стороны. В текущем скрипте левая стойка управляется выводом PWM 32, правая — выводом PWM 33. Безопасный диапазон углов — 0–90, рекомендуемое среднее положение — 30.

Если после выполнения команды движения не происходит, сначала проверьте права доступа и занятость GPIO, затем — физическое подключение. ROS в этом случае проверять не нужно.

7. Частые неисправности

1. Страница показывает device identity required

Обычно это происходит на старой странице чата; сам шлюз при этом может работать нормально. Сначала выполните:

curl http://127.0.0.1:18789/health

Если проверка состояния проходит, открывайте основную страницу http://192.168.127.10:18789/ и не обновляйте старую страницу чата снова и снова.

2. Страница показывает Unauthorized

Это нормальный ответ интерфейса бэкенда 18791. Этот адрес не является веб-фронтендом, не открывайте его как страницу.

3. voice say или voice prompt ждёт бесконечно

Сначала выполните:

sudo /userdata/magicclaw/runtime/bin/magicboxctl voice status

Затем убедитесь, что voice_asr или voice_chat запущены. Если нет — сначала запустите нужную голосовую цепочку.

8. Итоговая последовательность запуска

Если нужно запомнить самый короткий путь, достаточно четырёх шагов.

  1. После перезагрузки проверьте службы:
sudo systemctl status magicclaw.service --no-pager
sudo systemctl status magicclaw-buttons.service --no-pager
  1. Если службы не запущены, запустите их вручную:
sudo systemctl start magicclaw.service
sudo systemctl start magicclaw-buttons.service
  1. Откройте веб-фронтенд:
http://192.168.127.10:18789/
  1. Если нужен голос, запустите голосовую цепочку:
sudo /userdata/magicclaw/runtime/bin/magicboxctl voice chat start

9. Если вы хотите сделать Feishu основным входом

Если вы решите не использовать веб-фронтенд как основной вход, а управлять настольным питомцем сразу из Feishu, порядок запуска меняется: сначала поднимите шлюз Feishu, и только потом сообщения Feishu будут управлять возможностями платы.

Сначала на Windows-компьютере, где установлен OpenClaw, выполните:

openclaw gateway install
openclaw gateway
openclaw gateway status

Если в системе уже зарегистрирована задача планировщика, можно использовать её:

schtasks /Run /TN "OpenClaw Gateway"

Если в журнале установки появилось Gateway service missing, это обычно означает, что плагин уже установлен, но сам шлюз ещё не запущен. В этом случае не повторяйте сканирование QR-кода — сначала запустите процесс шлюза, и только потом возвращайтесь к тестам в Feishu.

Самые частые текстовые команды в Feishu:

/status
/reset
/model

/status показывает текущую сессию и состояние работы, /reset сбрасывает текущую сессию, /model показывает или переключает модель.

Если нужно узнать состояние самого питомца, просто пишите в Feishu на естественном языке, например:

  • 请返回当前板端状态。 («Верни текущее состояние платы»)
  • 请告诉我当前时间。 («Скажи текущее время»)
  • 请列出当前技能。 («Перечисли текущие навыки»)
  • 请总结语音、按键、灯光、舵机和 Demo 的状态。 («Подведи итог по голосу, кнопкам, подсветке, сервоприводам и демо»)

Китайские формулировки выше — входные команды для ассистента, поэтому их лучше вводить именно в таком виде; русский перевод приведён в скобках.

Можно ли увидеть загрузку процессора в Feishu, зависит от того, добавили ли вы на плату дополнительный инструмент. Текущая команда magicboxctl status гарантирует только каталог установки, время, занятость диска, состояние служб, режимы и сводку громкости, но не выводит загрузку процессора по умолчанию. Если понадобятся данные по CPU, памяти или нагрузке, добавьте отдельный навык или инструмент, а не считайте такую возможность уже существующей.

Если вы используете Feishu как основной вход, веб-фронтенд Lite можно оставить как резервный вариант. Тогда на занятиях достаточно будет потока сообщений в Feishu, без зависимости от браузера.