Web interfaces
Интерфейс управления
Control UI — это небольшое одностраничное приложение на Vite + Lit, обслуживаемое Gateway:
- по умолчанию:
http://<host>:18789/ - необязательный префикс: задайте
gateway.controlUi.basePath(например,/openclaw)
Оно взаимодействует напрямую с WebSocket Gateway через тот же порт.
Быстрое открытие (локально)
Если Gateway запущен на том же компьютере, откройте http://127.0.0.1:18789/ (или http://localhost:18789/).
Если страница не загружается, сначала запустите Gateway: openclaw gateway.
Данные аутентификации передаются во время установки соединения WebSocket через:
connect.params.auth.tokenconnect.params.auth.password- заголовки идентификации Tailscale Serve, когда
gateway.auth.allowTailscale: true - заголовки идентификации доверенного прокси, когда
gateway.auth.mode: "trusted-proxy"
Панель настроек хранит токен для текущего сеанса вкладки браузера и выбранный URL Gateway; пароли не сохраняются. При первоначальной настройке обычно создаётся токен Gateway для аутентификации с общим секретом при первом подключении, но аутентификация по паролю также работает, если gateway.auth.mode имеет значение "password".
Сопряжение устройства (первое подключение)
Для подключения из нового браузера или с нового устройства обычно требуется однократное подтверждение сопряжения, отображаемое как disconnected (1008): pairing required.
Выведите список ожидающих запросов
openclaw devices listПодтвердите по идентификатору запроса
openclaw devices approve <requestId>Если браузер повторяет попытку сопряжения с изменёнными данными аутентификации (ролью, областями доступа или открытым ключом), предыдущий ожидающий запрос заменяется и создаётся новый requestId; перед подтверждением снова выполните openclaw devices list.
Переключение уже сопряжённого браузера с доступа на чтение на доступ для записи или административный доступ считается повышением уровня подтверждения, а не автоматическим повторным подключением: OpenClaw сохраняет прежнее подтверждение активным, блокирует повторное подключение с более широкими правами и просит явно подтвердить новый набор областей доступа.
После подтверждения устройство запоминается и не требует повторного подтверждения, пока вы не отзовёте его с помощью openclaw devices revoke --device <id> --role <role>. Сведения о ротации и отзыве токенов, а также о процедуре первоначального подтверждения Paperclip / openclaw_gateway см. в разделе CLI устройств.
Сопряжение мобильного устройства
Уже сопряжённый администратор может создать QR-код подключения для iOS/Android, не открывая терминал:
Откройте сопряжение мобильного устройства
Выберите Устройства, затем нажмите Сопрячь мобильное устройство в карточке Устройства.
Подключите телефон
В мобильном приложении OpenClaw откройте Настройки → Gateway и отсканируйте QR-код. Вместо этого можно скопировать и вставить код настройки.
Подтвердите подключение
Официальное приложение для iOS/Android подключается автоматически. Если в разделе Ожидает подтверждения отображается запрос, перед подтверждением проверьте его роль и области доступа.
Для создания кода настройки требуется operator.admin; в сеансах без него кнопка отключена. Код настройки содержит краткосрочные начальные учётные данные, поэтому, пока они действительны, обращайтесь с QR-кодом и скопированным кодом как с паролем. Для удалённого сопряжения Gateway должен разрешаться в wss:// (например, через Tailscale Serve/Funnel); обычный ws:// ограничен адресами loopback и частной LAN. Полные сведения о безопасности и резервных вариантах см. в разделе Сопряжение.
Личная идентификация (локально в браузере)
Control UI поддерживает отдельную для каждого браузера личную идентификацию (отображаемое имя и аватар), прикрепляемую к исходящим сообщениям для указания авторства в общих сеансах. Она хранится в хранилище браузера, ограничена текущим профилем браузера, не синхронизируется с другими устройствами и не сохраняется на стороне сервера помимо обычных метаданных авторства в расшифровке отправленных вами сообщений. При очистке данных сайта или смене браузера эти данные сбрасываются.
Переопределение аватара ассистента следует той же локальной для браузера схеме: загруженные переопределения локально накладываются на идентификацию, разрешённую Gateway, и никогда не передаются через config.patch. Общее поле конфигурации ui.assistant.avatar по-прежнему доступно для клиентов без UI, которые записывают это поле напрямую.
Конечная точка конфигурации среды выполнения
Control UI получает настройки среды выполнения из /control-ui-config.json, путь к которому определяется относительно базового пути Control UI в Gateway (например, /__openclaw__/control-ui-config.json при базовом пути /__openclaw__/). Эта конечная точка защищена той же аутентификацией Gateway, что и остальная HTTP-поверхность: браузеры без аутентификации не могут получить к ней доступ, а для успешного запроса требуются действительный токен или пароль Gateway, идентификация Tailscale Serve либо идентификация доверенного прокси.
Состояние хоста Gateway
Откройте Настройки в простом представлении, чтобы увидеть карточку Хост Gateway с данными о компьютере Gateway, LAN-адресе, операционной системе, среде выполнения, времени работы, загрузке ЦП, памяти и месте на диске тома состояния. Пока карточка видима, она обновляется каждые 10 секунд через RPC Gateway system.info, для которого требуется область доступа operator.read. В старых версиях Gateway и подключениях без этой области доступа карточка не отображается.
Поддержка языков
При первой загрузке Control UI выбирает язык на основе локали браузера. Чтобы позднее изменить его, откройте Settings -> General -> Language (переключатель находится в карточке быстрых настроек General, а не в разделе Appearance).
- Поддерживаемые локали:
en,ar,de,es,fa,fr,hi,id,it,ja-JP,ko,nl,pl,pt-BR,ru,th,tr,uk,vi,zh-CN,zh-TW - Переводы не на английский язык загружаются в браузере отложенно.
- Выбранная локаль сохраняется в хранилище браузера и используется при следующих посещениях.
- Если ключ перевода отсутствует, используется английский текст.
Переводы документации создаются для того же набора неанглийских локалей, но встроенный переключатель языков Mintlify на сайте документации отображает только коды локалей, принимаемые Mintlify. Документация на тайском (th) и персидском (fa) языках всё равно создаётся в репозитории публикации; она может не отображаться в этом переключателе, пока Mintlify не начнёт поддерживать эти коды.
Темы оформления
На панели оформления доступны встроенные темы Claw, Knot и Dash (по умолчанию используется Claw), а также один локальный для браузера слот импорта tweakcn. Чтобы импортировать тему, откройте редактор tweakcn, выберите или создайте тему, нажмите Share и вставьте скопированную ссылку в раздел оформления. Импорт также принимает URL реестра https://tweakcn.com/r/themes/<id>, URL редактора вида https://tweakcn.com/editor/theme?theme=amethyst-haze, относительные пути /themes/<id>, необработанные идентификаторы тем и имена стандартных тем, например amethyst-haze.
Импортированные темы хранятся только в текущем профиле браузера; они не записываются в конфигурацию Gateway и не синхронизируются между устройствами. При замене импортированной темы обновляется единственный локальный слот; если импортированная тема была активна, её удаление переключает оформление обратно на Claw.
В разделе оформления также есть локальная для браузера настройка размера текста, которая хранится вместе с остальными параметрами Control UI. Она применяется к тексту чата, редактора сообщений, карточек инструментов и боковых панелей чата и устанавливает для текстовых полей размер не менее 16px, чтобы мобильный Safari не увеличивал масштаб автоматически при получении фокуса.
Управление плагинами
Откройте Плагины на боковой панели или перейдите по пути /settings/plugins относительно
настроенного базового пути Control UI, чтобы просматривать плагины и управлять ими, не покидая
Control UI. Например, для базового пути /openclaw используется
/openclaw/settings/plugins. Страница доступна всегда, даже если все
необязательные плагины отключены.
Раздел Плагины служит центром с четырьмя вкладками: Установленные и Обзор управляют кодом
плагинов в /settings/plugins, Skills содержит диспетчер навыков для каждого агента по адресу
/skills, а Мастерская содержит проверку предложений Skill Workshop по адресу
/skills/workshop. Каждая вкладка сохраняет собственный URL, а на боковой панели для всех них
отображается единый пункт Плагины.
На вкладке Установленные отображается полный локальный список, сгруппированный по категориям, со
сводными счётчиками. Каждая строка открывает подробное представление; её меню дополнительных действий (…)
позволяет включить или отключить плагин и предлагает действие Удалить для плагинов, установленных извне.
Здесь также перечислены настроенные серверы MCP, которые можно добавлять, отключать
и удалять непосредственно на странице. Вкладка Обзор представляет собой магазин: избранные плагины,
включённые в OpenClaw, официальные внешние плагины и подключаемые одним нажатием коннекторы MCP
для популярных сервисов. При вводе текста в поле поиска выполняется встроенный поиск по
ClawHub, после чего добавляется раздел Из ClawHub
со счётчиками загрузок и значками проверки источника. Глубокие ссылки могут
открывать магазин напрямую с помощью /settings/plugins?tab=discover.
На вкладке Skills доступны отчёт о состоянии навыков, переключатели включения и отключения, ввод ключа API и встроенный поиск навыков ClawHub с областью действия, ограниченной выбранным агентом. На вкладке Мастерская находятся доска Skill Workshop и процесс проверки за сегодня для предложений навыков.
Включённые в поставку плагины уже присутствуют в Gateway, поэтому для них отображается Включить или Отключить вместо Установить. Например, Workboard включён в поставку OpenClaw, но по умолчанию отключён, поэтому для него доступно действие Включить. Встроенные плагины нельзя удалить — только отключить.
Для чтения каталога и поиска в ClawHub требуется operator.read. Для установки,
включения, отключения или удаления плагина и изменения серверов MCP требуется
operator.admin; для операторов с доступом только для чтения эти действия отключены.
Установка из ClawHub выполняется через Gateway и использует те же проверки доверия, целостности
и политики установки плагинов, что и другие установки, выполняемые посредством Gateway. Для установки
или удаления кода плагина требуется перезапуск Gateway. Включение или отключение
установленного плагина может применяться без перезапуска, если это поддерживают плагин и текущая
среда выполнения Gateway; в противном случае UI сообщает, что требуется
перезапуск. Для коннекторов MCP с OAuth после их добавления требуется однократно выполнить
openclaw mcp login <name> в CLI.
Эта страница намеренно сосредоточена на списке, поиске, установке, включении
и удалении. Используйте openclaw plugins для произвольных источников npm, git или
локальных путей, обновлений и расширенной настройки плагинов.
Навигация на боковой панели
Боковая панель закрепляет навигацию над прокручиваемым списком сеансов. В конфигурациях с несколькими агентами каждый агент отображается как сворачиваемый раздел верхнего уровня; развернув агента, можно просматривать его сеансы, не покидая открытый чат, а у свернутых агентов отображается индикатор непрочитанного. Внутри агента список разделяется на Закрепленные, по одному встроенному разделу для каждого подключенного канала (Telegram, Slack, WhatsApp, ...), встроенный раздел Работа для сеансов, привязанных к управляемому рабочему дереву или Node выполнения (строки показывают строку repo ⎇ branch и хост Node), пользовательские группы (category сеанса) и Чаты для остальных. Разделы каналов и Работы классифицируют строки автоматически; назначение сеанса пользовательской группе всегда имеет приоритет. При открытии сеанса подсветка выбора перемещается без изменения порядка строк. Сеансы с новой активностью с момента последнего прочтения отмечаются точкой непрочитанного, а при открытии помечаются как прочитанные. У каждой строки сеанса есть контекстное меню (кнопка с многоточием или щелчок правой кнопкой мыши) с пунктами Закрепить/Открепить, Пометить как непрочитанное/прочитанное, Переименовать, Ответвить, Переместить в группу (включая Новая группа и Удалить из группы), Архивировать и Удалить; в сенсорных макетах непосредственные элементы закрепления и меню остаются видимыми. Щелчок с Cmd/Ctrl переключает строки в режим множественного выбора, а щелчок с Shift расширяет выбор в пределах видимого порядка; при открытии меню на выбранной строке предлагаются пакетные действия (Пометить N как непрочитанные/прочитанные, Переместить N в группу, Архивировать N, Удалить N), применяемые ко всем выбранным сеансам, с единым подтверждением пакетного удаления. Перетащите сеанс на пользовательскую группу или Чаты, чтобы переместить его. Заголовки пользовательских групп можно сворачивать, разворачивать и перетаскивать для изменения порядка; названия групп и их порядок хранятся в gateway (sessions.groups.*), поэтому сохраняются во всех браузерах, а состояние свертывания остается в профиле браузера. У заголовков групп также есть меню (кнопка с многоточием или щелчок правой кнопкой мыши) с пунктами Переименовать группу, Новая группа и Удалить группу; переименование или удаление группы обновляет все входящие в нее сеансы на стороне сервера, включая архивированные, а при удалении группы ее сеансы сохраняются и возвращаются в Чаты. Единственная кнопка + в заголовке списка сеансов открывает страницу нового сеанса (см. ниже). Элемент управления сортировкой также содержит переключатель Группировать по: С группировкой (по умолчанию) или Без группировки для единого плоского списка (Закрепленные остаются отдельным разделом); выбор сохраняется в текущем профиле браузера. Использование, Автоматизации и Плагины закреплены по умолчанию; строка Еще открывает меню со всеми остальными разделами, включая вкладки, предоставленные плагинами. Выберите в этом меню Изменить закрепленные элементы или щелкните правой кнопкой мыши область навигации, чтобы закрепить или открепить разделы либо восстановить значения по умолчанию. Набор закрепленных элементов хранится в текущем профиле браузера и сохраняется после перезагрузки.
Страница нового сеанса
Кнопка + в заголовке списка сеансов боковой панели открывает полноэкранный черновик по адресу /new: ничего не создается до отправки первого сообщения. Строка назначения над полем сообщения определяет, где работает сеанс: агент (в конфигурациях с несколькими агентами), место выполнения команд (Gateway · local или сопряженный Node, предоставляющий system.run; требуется operator.admin), папка (по умолчанию рабочее пространство агента; для других абсолютных путей Gateway требуются operator.admin и рабочее дерево), а также необязательный переключатель Рабочее дерево с выбором базовой ветки (на основе worktrees.branches, поэтому получение данных не выполняется) и необязательным названием рабочего дерева (ветка получает имя openclaw/<name>). Кнопка обзора в элементе папки открывает встроенное средство выбора каталогов, работающее на основе доступного только администраторам метода fs.listDir. На верхнем уровне отображаются Gateway и все известные Node; Node не в сети и Node без поддержки просмотра каталогов остаются видимыми, но недоступными. При выборе Gateway просмотр начинается с текущей папки или домашнего каталога Gateway. При выборе поддерживающего эту возможность Node просматривается файловая система его хоста, выполнение привязывается к нему, а выбранный абсолютный путь Node используется напрямую (управляемые рабочие деревья по-прежнему доступны только в Gateway). Отправка вызывает sessions.create с первым сообщением, поэтому запуск начинается в рамках того же обмена запросом и ответом, а интерфейс переходит в чат нового сеанса. Если Gateway создает сеанс, но отклоняет первую отправку, чат сохраняет запрос и ошибку после перезагрузки; кнопка Повторить отправляет его через уже созданный сеанс вместо создания еще одного.
В разделе Настройки отдельная боковая панель начинается с поля Поиск настроек для быстрого поиска разделов настроек.
Поле Поиск в верхней части боковой панели открывает палитру команд (⌘K). Щелчок по бренду OpenClaw в заголовке боковой панели открывает чистый начальный экран нового сеанса. Когда что-либо требует внимания — неудачные или просроченные задания Cron, истекающая или истекшая аутентификация модели, — над нижней частью боковой панели появляются компактные индикаторы внимания, ведущие на соответствующую страницу. В нижней части активный агент отображается в виде элемента с аватаром (изображение идентичности или эмодзи), именем, индикатором подключения и обновляемым подзаголовком, а рядом находится кнопка + для нового сеанса. Щелчок по этому элементу открывает меню агента: переключатель агентов (в конфигурациях с несколькими агентами), «Что может этот агент?», Настройки агента, Настройки, сопряжение с мобильным устройством, Документация, элемент сборки и переключатель цветового режима. В списках более чем из десяти агентов появляется поле фильтра, а закрепленные агенты отображаются первыми; закреплять и откреплять агентов можно на странице настроек Агентов, при этом набор закрепленных агентов хранится в профиле браузера. Выбор агента ограничивает этим агентом Чат, а также разделы Использование, Автоматизации, Задачи, Рабочая доска и Сеансы. На каждой странице с такой областью действия доступен элемент Агент с вариантом Все агенты для выхода из ограничения; он расширяет область действия общей страницы, не меняя конкретного агента чата, а прямые ссылки на сеансы по-прежнему открывают целевой сеанс. Страница настроек Агентов сохраняет собственный выбор ?agent= и не следует общей области действия страницы. Когда gateway запущен из рабочей копии исходного кода в ветке, отличной от main, в нижней части также красным отображается название этой ветки, чтобы сразу было видно, что используется нерелизный gateway (в релизных установках оно никогда не отображается). Shift-Command-Comma открывает Настройки, не переопределяя браузерное сочетание Command-Comma. В заголовке боковой панели также находится переключатель свертывания (⌘B); при свертывании боковая панель полностью скрывается, освобождая всю ширину рабочего пространства, а плавающий элемент развертывания (или ⌘B) возвращает ее; вместо этого в приложении macOS этот переключатель встроен непосредственно в строку заголовка. На настольных устройствах боковая панель является единственным элементом навигационного интерфейса, без верхней панели. На узких экранах боковая панель заменяется выдвижной панелью за компактной строкой заголовка, содержащей переключатель панели, бренд и поиск по палитре команд; в приложении macOS эта строка заголовка объединяет отступ строки заголовка в единую компактную полосу рядом с элементами управления окном. Навигация использует обычную историю браузера, поэтому по ней можно перемещаться кнопками браузера «Назад» и «Вперед»; приложение macOS добавляет нативный переключатель боковой панели рядом с элементами управления окном и жесты смахивания на трекпаде, кнопки «Назад» и «Вперед» у правого края развернутой боковой панели, а также нативные кнопки поиска (палитры команд) и нового сеанса, когда она свернута.
Что доступно сейчас
Чат и голосовое общение
- Общайтесь с моделью через Gateway WS (
chat.history,chat.send,chat.abort,chat.inject). - При обновлении истории чата запрашивается ограниченное окно последних сообщений с ограничениями объема текста для каждого сообщения, поэтому крупные сеансы не заставляют браузер отрисовывать полный объем стенограммы до того, как чат станет доступен.
- При наведении указателя или переводе фокуса с клавиатуры на ссылку публичной задачи или запроса на включение изменений GitHub отображаются ее состояние, название, автор, недавняя активность, комментарии и статистика изменений. Подключенный Gateway получает и кэширует публичные метаданные, не изменяя адрес ссылки, в том числе когда интерфейс использует удаленный Gateway. Gateway использует
GH_TOKENилиGITHUB_TOKEN, когда они доступны, предварительно убедившись, что репозиторий публичный; в противном случае он использует анонимный API GitHub с более длительным кэшированием. - Общайтесь голосом через браузерные сеансы реального времени. OpenAI использует прямое подключение WebRTC, Google Live — ограниченный одноразовый браузерный токен через WebSocket, а голосовые плагины реального времени, работающие только на серверной стороне, используют ретрансляцию через Gateway. Сеансы провайдера, управляемые клиентом, запускаются с помощью
talk.client.create; сеансы ретрансляции Gateway запускаются с помощьюtalk.session.create. Ретрансляция сохраняет учетные данные провайдера в Gateway, пока браузер передает PCM-поток с микрофона черезtalk.session.appendAudio, перенаправляет вызовы инструментов провайдераopenclaw_agent_consultчерезtalk.client.toolCallдля применения политик Gateway и более крупной настроенной модели OpenClaw, а также направляет голосовое управление активным запуском черезtalk.client.steerилиtalk.session.steer. - Передавайте вызовы инструментов и карточки их вывода в реальном времени в Чате (события агента). Активность инструментов отображается строками с учетом их типа: для команд оболочки показываются команда с подсветкой синтаксиса и вывод в стиле терминала; для поддерживаемых вызовов редактирования и записи показываются ограниченные встроенные различия, номера строк, когда они доступны, и статистика
+added -removed; последовательные вызовы сворачиваются в сводку, например «Выполнено 13 команд, прочитано 6 файлов, изменено 9 файлов». Пока запуск активен, название последнего выполняемого вызова отображается в заголовке группы. Разверните строку, чтобы просмотреть остальные аргументы и необработанный вывод. - Необязательные формируемые ИИ заголовки назначения для сложных вызовов инструментов (длинных команд оболочки, инструментов плагинов с большим числом аргументов), включаемые с помощью
gateway.controlUi.toolTitles: true(по умолчанию отключены). Заголовки поступают из пакетного методаchat.toolTitlesчерез стандартную маршрутизацию служебных моделей — явно заданнуюutilityModel(провайдер выбирается оператором, как и для других служебных задач) либо объявленную провайдером сеанса малую модель по умолчанию — и кэшируются на стороне gateway отдельно для каждого агента. Когда эта функция отключена или подходящая недорогая модель недоступна, строки сохраняют свои детерминированные подписи и вызов модели не выполняется. - Запускайте или отклоняйте временные последующие задачи, предложенные моделью; принятые предложения открывают новый сеанс в управляемом рабочем дереве с предложенным запросом.
- Вкладка активности с локальными для браузера сводками текущей активности инструментов, в которых приоритет отдается редактированию конфиденциальных данных и которые формируются из существующей доставки событий
session.tool/ инструментов.
Каналы, сеансы, память
- Каналы: состояние встроенных, поставляемых в комплекте и внешних каналов плагинов, вход по QR-коду и конфигурация каждого канала (
channels.status,web.login.*,config.patch). - При обновлении результатов проверки каналов предыдущий снимок остаётся видимым, пока завершаются медленные проверки провайдера; частичные снимки помечаются, если проверка или аудит превышает отведённое ему время в интерфейсе.
- Сеансы (страница настроек в разделе Агенты и инструменты,
/settings/sessions): по умолчанию отображает сеансы настроенных агентов, позволяет закреплять часто используемые сеансы, переименовывать их, архивировать или восстанавливать неактивные сеансы, обрабатывать устаревшие ключи сеансов ненастроенных агентов и применять для отдельных сеансов переопределения модели, режима обдумывания, быстрого и подробного режимов, трассировки и рассуждений (sessions.list,sessions.patch). Закреплённые сеансы располагаются выше недавних незакреплённых; архивированные сеансы находятся в представлении архива на странице сеансов и сохраняют свои стенограммы. В строках сеансов с активностью после последнего прочтения отображается точка непрочитанного, а также доступны действия «пометить как непрочитанное» и «пометить как прочитанное» (sessions.patch { unread }) и действие создания ответвления, которое переносит копию стенограммы в новый сеанс (sessions.create { parentSessionKey, fork: true }). Плитки обзора над таблицей обобщают загруженный список (число сеансов, активные запуски, непрочитанные сеансы и общее количество токенов); каждая строка содержит значок типа с точкой активного запуска, состояние отображается обычной точкой с подписью, а в столбце токенов показывается индикатор использования окна контекста, если сеанс сообщает количество токенов и размер контекста. Действия управления строкой находятся в её меню (кнопка с вертикальным многоточием или щелчок правой кнопкой мыши), которое соответствует меню сеанса на боковой панели, а выдвижная панель строки показывает среду выполнения агента и длительность запуска наряду с другими сведениями о сеансе. - Группировка сеансов: элемент управления «Группировать по» распределяет таблицу сеансов по разделам на основе пользовательских групп, канала, типа, агента или даты. Пользовательские группы сохраняются отдельно для каждого сеанса через
sessions.patch(category), поэтому можно также распределять по категориям сеансы, начатые из каналов сообщений (Discord, Telegram, WhatsApp, ...); назначайте группы, перетаскивая строки в раздел или используя селектор группы в каждой строке, а создавайте группы действием «Новая группа». - Память (вкладка на странице агентов, относящаяся к выбранному агенту): состояние Dreaming, переключатель включения и отключения и средство просмотра дневника снов (
doctor.memory.status,doctor.memory.dreamDiary,config.patch).
Cron, задачи, плагины, Skills, устройства, подтверждения выполнения
- Автоматизации (задания Cron): карточки показателей (число автоматизаций, число сбоев, состояние планировщика, следующее пробуждение) над переключателем вкладок автоматизаций и истории запусков; на вкладке автоматизаций задания перечислены в фильтруемой таблице (все/активные/приостановленные, поиск, фильтры по расписанию и последнему запуску, меню действий в каждой строке), под которой приведены предложения для начала работы, а на вкладке истории запусков показаны последние запуски всех автоматизаций (
cron.*). - Задачи: обновляемый в реальном времени журнал активных и недавних фоновых задач со связанными сеансами и возможностью отмены (
tasks.*). - Плагины: просмотр списка установленных плагинов и отобранного каталога, поиск в ClawHub, установка и удаление кода плагинов, а также включение и отключение установленных плагинов (
plugins.*); в строках серверов MCP параметрmcp.serversизменяется через методы конфигурации. - Skills: состояние, включение и отключение, установка, обновление ключей API (
skills.*). - Устройства: единый список объединяет записи сопряжённых устройств, каталог Node и сведения о присутствии в реальном времени (
device.pair.list,node.list,system-presence). Хост Gateway закреплён первым; для сопряжённых клиентов отображаются состояние подключения, роли, токены, возможности и команды. Повторяющиеся сопряжения сворачиваются в раскрываемую группу, а действие Очистить N устаревших массово удаляет подтверждённые администратором автономные дубликаты, которые были одобрены автоматически (локально без уведомления, по доверенному CIDR или с проверкой по SSH) либо появились до внедрения сведений о происхождении одобрения. Записи можно удалять (node.pair.remove,device.pair.remove), сопряжение устройств и повторное одобрение узлов выполняются непосредственно в интерфейсе (device.pair.*,node.pair.approve/reject), а коды настройки мобильных устройств создаются в той же карточке. - Подтверждения выполнения: изменение списков разрешений Gateway или узла и политики запросов для
exec host=gateway/node(exec.approvals.*).
Конфигурация
- Просмотр и изменение
~/.openclaw/openclaw.json(config.get,config.set). - Агенты: страница настроек (Настройки → Агенты,
/settings/agents) с вкладками для каждого агента (обзор, файлы, инструменты, Skills, каналы, автоматизации, память). На вкладке обзора изменяются сведения об агенте — отображаемое имя, эмодзи и изображение аватара, которое передagents.updateуменьшается и ограничивается по размеру в браузере. При сохранении настроенные поля идентификации записываются и отражаются в файле рабочего пространстваIDENTITY.md; настроенные значения имеют приоритет над ручными изменениями тех же полей файла. - Профиль: страница настроек, на которой показаны сведения об агенте по умолчанию и статистика использования за всё время — общее количество токенов, день максимальной активности, самый длинный сеанс, серии дней активности, тепловая карта токенов за год, наиболее используемые инструменты и основные показатели каналов (
usage.cost,sessions.usage). - Для MCP предусмотрена отдельная страница настроек со строками серверов только для чтения (сводки по транспорту, включению, OAuth, фильтрам и параллельной обработке), распространёнными командами оператора и редактором соответствующего раздела конфигурации
mcp; добавление, включение, отключение и удаление серверов выполняется на странице плагинов. - Провайдеры моделей: страница настроек со списком всех настроенных провайдеров моделей, где для каждого показаны фирменный значок, состояние аутентификации (
models.authStatus), доступность моделей (models.list), актуальные данные о плане, квоте и оплате, если провайдер их предоставляет (usage.status), а также локальные расходы сеансов за последние 30 дней (sessions.usage). Действие «Обновить» повторно считывает состояние учётных данных и данные об использовании провайдера. - Подключение: страница настроек (в разделе Подключения), управляющая собственным подключением панели мониторинга к Gateway — URL WebSocket, токен Gateway, пароль и ключ сеанса по умолчанию, — а также последним снимком рукопожатия (состояние, время работы, интервал тактов, время последнего обновления каналов). Экран входа в автономном режиме обрабатывает случай отсутствия подключения; эта страница изменяет параметры подключения, когда оно установлено.
- Применение и перезапуск с проверкой (
config.apply), после чего возобновляется последний активный сеанс. - При записи используется проверка хеша основы, предотвращающая перезапись параллельных изменений.
- Перед записью (
config.set/config.apply/config.patch) предварительно проверяется разрешение активных SecretRef для ссылок в отправленной конфигурации; отправленные активные ссылки, которые не удалось разрешить, отклоняются до записи. - При сохранении формы отбрасываются устаревшие скрытые заполнители, которые невозможно восстановить из сохранённой конфигурации, но сохраняются скрытые значения, всё ещё соответствующие сохранённым секретам.
- Схема и отрисовка формы формируются из
config.schema/config.schema.lookup, включая поляtitle/description, соответствующие подсказки интерфейса, краткие сводки непосредственных дочерних элементов, метаданные документации для вложенных объектов, подстановочных знаков, массивов и узлов композиции, а также схемы плагинов и каналов, если они доступны. Редактор необработанного JSON доступен только тогда, когда снимок допускает безопасное двустороннее преобразование без потерь; в противном случае Control UI принудительно использует режим формы. - Действие «Сбросить до сохранённого» в редакторе необработанного JSON сохраняет исходную структуру необработанного содержимого (форматирование, комментарии, расположение
$include) вместо повторной отрисовки уплощённого снимка, поэтому внешние изменения сохраняются после сброса, если снимок допускает безопасное двустороннее преобразование. - Структурированные объектные значения SecretRef отображаются в текстовых полях формы только для чтения, чтобы предотвратить случайное повреждение при преобразовании объекта в строку.
Использование
- Анализ токенов и оценочной стоимости на основе сеансов ведётся отдельно от расчётов провайдера.
- Карточки провайдеров вызывают
usage.statusи показывают актуальные названия планов, окна квот, остатки, расходы и бюджеты, предоставляемые настроенными плагинами провайдеров. - Ошибка получения данных об использовании провайдера не блокирует панель сеансов и стоимости; недоступные карточки провайдеров показывают собственное состояние ошибки.
Отладка, журналы, обновление
- Отладка: снимки состояния, работоспособности и моделей, журнал событий и ручные вызовы RPC (
status,health,models.list). - Журнал событий содержит сведения о времени обновлений Control UI и вызовов RPC, времени медленной отрисовки чата и конфигурации, а также записи об отзывчивости браузера при длительных кадрах анимации или длительных задачах, если браузер предоставляет соответствующие типы записей PerformanceObserver.
- Журналы: просмотр в реальном времени последних записей файловых журналов Gateway с фильтрацией и экспортом (
logs.tail). - Обновление: обновление пакета или репозитория Git с последующим перезапуском (
update.run) и отчётом о перезапуске, затем опросupdate.statusпосле повторного подключения для проверки версии работающего Gateway.
Примечания к панели автоматизаций
- При выборе строки открывается полноэкранное представление сведений с переключателем «Активно/Приостановлено» и действием «Запустить сейчас» в заголовке (в его меню доступны запуск при наступлении срока, клонирование и удаление); на вкладке настроек автоматизация изменяется непосредственно в интерфейсе (запрос, подробности, периодичность, расширенные переопределения), а на вкладке истории запусков показаны запуски этой автоматизации.
- Начальные шаблоны автоматизаций под таблицей предварительно заполняют форму создания изменяемым запросом и расписанием.
- Для изолированных задач по умолчанию отправляется сводное уведомление; для запусков, предназначенных только для внутреннего использования, выберите отсутствие доставки.
- Поля канала и назначения появляются при выборе уведомления.
- В режиме Webhook используется
delivery.mode = "webhook", аdelivery.toдолжен содержать допустимый URL Webhook по протоколу HTTP(S). - Для задач основного сеанса доступны режимы доставки через Webhook и без доставки.
- Расширенные элементы управления включают удаление после запуска, очистку переопределения агента, параметры точного или распределённого запуска Cron, переопределения модели и режима обдумывания агента, а также переключатели доставки по мере возможности.
- Проверка формы выполняется непосредственно в интерфейсе с ошибками для отдельных полей; недопустимые значения блокируют кнопку сохранения до исправления.
- Задайте
cron.webhookToken, чтобы отправлять отдельный bearer-токен; если значение не указано, Webhook отправляется без заголовка аутентификации. cron.webhook— устаревший резервный механизм совместимости: выполнитеopenclaw doctor --fix, чтобы перенести сохранённые задания, которые всё ещё используютnotify: true, на явную доставку через Webhook или доставку по завершении для каждого задания.
Страница MCP
Отдельная страница MCP представляет собой операторское представление серверов MCP, управляемых OpenClaw в разделе mcp.servers. Она не запускает транспорты MCP самостоятельно; используйте её для просмотра и изменения сохранённой конфигурации, а когда требуется подтверждение работы сервера в реальном времени, используйте openclaw mcp doctor --probe.
Типичный рабочий процесс:
- Откройте MCP на боковой панели.
- Проверьте сводные карточки с общим количеством серверов и количеством включённых серверов, серверов с OAuth и серверов с фильтрами.
- Просмотрите в строке каждого сервера сведения о транспорте, включении, аутентификации, фильтрах, тайм-аутах и подсказках по командам.
- Управляйте серверами (добавляйте, включайте, отключайте и удаляйте) на странице Плагины, которая является единственным интерактивным средством записи
mcp.servers; список строк на этой странице содержит ссылку на неё. - Изменяйте соответствующий раздел конфигурации
mcpдля определений серверов, заголовков, путей TLS/mTLS, метаданных OAuth, фильтров инструментов и метаданных проекции Codex. - Используйте Сохранить для записи конфигурации или Сохранить и опубликовать, если работающий Gateway должен применить изменённую конфигурацию.
- Выполните
openclaw mcp status --verbose,openclaw mcp doctor --probeилиopenclaw mcp reloadв терминале для статической диагностики, подтверждения работы в реальном времени или сброса кэшированной среды выполнения.
Перед отображением страница скрывает содержащие учётные данные значения, похожие на URL, и заключает имена серверов в кавычки в фрагментах команд, чтобы скопированные команды продолжали работать с пробелами или метасимволами командной оболочки. Полная справка по CLI и конфигурации: MCP.
Вкладка активности
Вкладка Activity находится в Settings › System, рядом с Logs и Debug. Это временный локальный для браузера инструмент наблюдения за активностью инструментов в реальном времени, использующий тот же поток событий Gateway session.tool / инструментов, на основе которого работают карточки инструментов в чате. Он не добавляет отдельное семейство событий Gateway, конечную точку, постоянное хранилище активности, поток метрик или внешний поток наблюдения.
Записи активности содержат только очищенные сводки и отредактированные, усечённые предварительные просмотры вывода. Значения аргументов инструментов не сохраняются в состоянии активности; интерфейс указывает, что аргументы скрыты, и записывает только количество полей аргументов. Список в памяти привязан к текущей вкладке браузера, сохраняется при переходах внутри Control UI и сбрасывается при перезагрузке страницы, смене сеанса или нажатии Clear.
Терминал оператора
Закрепляемый терминал оператора по умолчанию отключён. Чтобы включить его, задайте gateway.terminal.enabled: true и перезапустите Gateway. Для работы терминала требуется соединение operator.admin; он открывает PTY хоста в рабочем пространстве активного агента. Новые вкладки используют выбранного в данный момент агента чата.
Используйте Ctrl + обратная кавычка, чтобы показать или скрыть закреплённую панель. Компоновка поддерживает закрепление снизу и справа, изменяет размер вместе с областью просмотра браузера и позволяет держать несколько вкладок оболочки. Описание gateway.terminal.enabled и необязательного переопределения gateway.terminal.shell см. в разделе Конфигурация Gateway.
Сеансы сохраняются при разрыве соединения: при перезагрузке страницы, переходе ноутбука в спящий режим или кратковременном сбое сети сеанс отсоединяется на Gateway, а не завершается; после восстановления соединения та же вкладка браузера повторно подключается к нему с воспроизведением недавнего вывода. Отсоединённые сеансы завершаются через gateway.terminal.detachedSessionTimeoutSeconds (по умолчанию 300 секунд; 0 восстанавливает завершение при разрыве соединения). terminal.list показывает доступные для подключения сеансы, terminal.attach принимает управление одним из них (перехват в стиле tmux), а terminal.text считывает недавний вывод сеанса как обычный текст без подключения — это возможность для агента и инструментов.
Терминал также доступен как полноэкранный документ, содержащий только терминал, по адресу /?view=terminal. Приложения для iOS и Android встраивают эту страницу в свои экраны Terminal, повторно используя сохранённые учётные данные Gateway; доступность определяется теми же ограничениями gateway.terminal.enabled и operator.admin, а если подключённый Gateway не предоставляет терминал, на странице отображается уведомление.
Панель браузера
Control UI включает закрепляемую панель браузера, которая отображает управляемый Gateway браузер — тот же, которым агенты управляют через инструмент браузера, — в любом обычном веб-браузере без необходимости в нативном webview. Она появляется, когда подключённый Gateway объявляет browser.request для соединения operator.admin; кнопка с глобусом на боковой панели рабочего пространства сеанса показывает или скрывает её. Панель отображает актуальный снимок страницы с вкладками, редактируемой адресной строкой, кнопками перехода назад, вперёд и перезагрузки, а также кнопкой открытия в вашем браузере; она закрепляется справа или снизу и передаёт удалённой странице щелчки, прокрутку колёсиком и базовый ввод текста.
Два режима захвата формируют контекст страницы для агента:
- Аннотирование (карандаш): рисуйте произвольные пометки поверх страницы. Команда Send to chat накладывает штрихи на снимок экрана, прикрепляет изображение к редактору активного чата и предварительно заполняет запрос с описанием URL и заголовка страницы, а также каждой отмеченной области, чтобы агент точно знал, что вы обвели.
- Инспектирование (указатель): наведите указатель, чтобы увидеть элемент под курсором (селектор, доступное имя, роль, размер); щёлкните, чтобы отправить сведения об этом элементе вместе со снимком экрана с подсветкой через тот же процесс редактора. Для инспектирования, прокрутки колёсиком и переходов назад и вперёд требуется
browser.evaluateEnabled(включено по умолчанию).
Приложение для macOS сохраняет нативную боковую панель браузера ссылок для ссылок, открытых на панели управления; панель браузера также работает в нём и служит способом аннотирования страниц на всех остальных платформах.
Поведение чата
Семантика отправки и истории
chat.sendвыполняется неблокирующим образом: подтверждение с{ runId, status: "started" }отправляется немедленно, а ответ передаётся в потоковом режиме через событияchat. Доверенные клиенты Control UI также могут получать необязательные метаданные времени подтверждения для локальной диагностики.- Загрузки в чат принимают изображения и файлы, кроме видео. Для изображений сохраняется собственный путь изображения; остальные файлы хранятся как управляемые медиафайлы и отображаются в истории в виде ссылок на вложения.
- Повторная отправка с тем же
idempotencyKeyвозвращает{ status: "in_flight" }, пока операция выполняется, и{ status: "ok" }после завершения. - Размер ответов
chat.historyограничен для безопасности пользовательского интерфейса. Если записи расшифровки слишком велики, Gateway может обрезать длинные текстовые поля, опускать объёмные блоки метаданных и заменять слишком большие сообщения заполнителем ([chat.history omitted: message too large]). - Если видимое сообщение ассистента было обрезано в
chat.history, боковая панель чтения может по запросу получить полную нормализованную для отображения запись расшифровки черезchat.message.get, используяsessionKey, активныйagentId, когда это необходимо, иmessageIdрасшифровки. Если Gateway по-прежнему не может вернуть больше данных, панель чтения явно показывает состояние недоступности вместо незаметного повторения обрезанного предварительного просмотра. - Изображения ассистента и сгенерированные изображения сохраняются как ссылки на управляемые медиафайлы и возвращаются через аутентифицированные URL-адреса медиафайлов Gateway, поэтому после перезагрузки не требуется сохранять необработанные данные изображений в формате base64 в ответе истории чата.
- При отображении
chat.historyControl UI удаляет из видимого текста ассистента встроенные теги директив, предназначенные только для отображения (например,[[reply_to_*]]и[[audio_as_voice]]), текстовые XML-данные вызовов инструментов (включая<tool_call>...</tool_call>,<function_call>...</function_call>,<tool_calls>...</tool_calls>,<function_calls>...</function_calls>и обрезанные блоки вызовов инструментов), а также просочившиеся управляющие токены модели в формате ASCII и полноширинном формате. Записи ассистента опускаются, если весь их видимый текст состоит только из точного токена молчанияNO_REPLY/no_replyили токена подтверждения HeartbeatHEARTBEAT_OK. - Во время активной отправки и окончательного обновления истории представление чата сохраняет видимыми локальные оптимистичные сообщения пользователя и ассистента, если
chat.historyна короткое время возвращает более старый снимок; каноническая расшифровка заменяет эти локальные сообщения, когда история Gateway синхронизируется. - События
chatв реальном времени отражают состояние доставки, аchat.historyвосстанавливается из сохраняемой расшифровки сеанса. После событий завершения инструмента Control UI перезагружает историю и объединяет только небольшой оптимистичный хвост; граница расшифровки описана в разделе WebChat. chat.injectдобавляет заметку ассистента в расшифровку сеанса и рассылает событиеchatдля обновлений только пользовательского интерфейса (без запуска агента и без доставки в канал).- На боковой панели перечислены все загруженные активные сеансы: они сгруппированы по разделам агентов и категориям закреплённых, каналов, рабочих, пользовательских и Chats; единое действие New Session открывает диалог черновика. Открытие видимой строки изменяет только выделение. Пользовательские группы можно сворачивать и переупорядочивать перетаскиванием, а сеансы можно переносить в группу или Chats; названия и порядок групп синхронизируются через Gateway, а состояние свёрнутости сохраняется в браузере. Новый сеанс панели управления асинхронно получает краткий сгенерированный заголовок из первого сообщения, не являющегося командой; явно заданные имена никогда не заменяются. Установите
agents.defaults.utilityModel(илиagents.list[].utilityModel), чтобы направить этот отдельный вызов модели к модели с меньшей стоимостью. Разворачивание раздела другого агента позволяет просматривать сеансы этого агента, не покидая открытый чат. - Поиск сеансов находится в палитре команд (⌘K или поле Search в верхней части боковой панели): при вводе запроса просматривается ограниченное число страниц с совпадениями по всем агентам, отфильтровываются внутренние дочерние строки и строки Cron, а видимые совпадения отображаются рядом с командами навигации. На странице Sessions остаётся полный список с поиском и фильтрами.
- В каждой строке боковой панели доступно прямое закрепление и полное контекстное меню для управления состоянием непрочитанности, переименования, создания ответвления, группировки, архивирования и удаления. Для нескольких выбранных строк (Cmd/Ctrl-щелчок, Shift-щелчок для диапазонов) доступно пакетное меню, включающее состояние непрочитанности, группировку, архивирование и удаление; пакетные архивирование и удаление остаются недоступными, если хотя бы один выбранный сеанс нельзя архивировать. Активный запуск и основной сеанс агента нельзя архивировать. При архивировании или удалении выбранного в данный момент сеанса Chat переключается обратно на основной сеанс этого агента.
- В приложении для macOS знак OpenClaw использует пустую в других случаях область стандартной строки заголовка рядом с элементами управления окном, а не занимает строку боковой панели.
- При ширине экрана настольного компьютера элементы управления чатом остаются в одной компактной строке и сворачиваются при прокрутке расшифровки вниз; прокрутка вверх, возврат к началу или достижение конца восстанавливают элементы управления.
- Последовательные одинаковые сообщения, содержащие только текст, отображаются в одном пузыре со значком количества. Сообщения с изображениями, вложениями, выводом инструментов или предварительным просмотром холста не объединяются.
- Если рабочая копия сеанса находится в ветке репозитория GitHub, отличной от ветки по умолчанию, представление чата закрепляет над редактором карточки запросов на включение изменений: номер PR, репозиторий, ветку, количество изменений, индикатор CI и состояние черновика, слияния или закрытия — каждый элемент содержит ссылку на PR. В строке отображается не более двух карточек — сначала активные (открытые или черновые) PR, — а кнопка "Show more" раскрывает свёрнутую историю объединённых и закрытых PR. Индикатор CI открывает небольшое всплывающее окно мониторинга CI с количеством пройденных, непройденных, выполняющихся и пропущенных проверок и ссылкой на страницу проверок PR. Обнаружение выполняется на стороне сервера через
controlUi.sessionPullRequests, который повторно используетGH_TOKEN/GITHUB_TOKENGateway, если они заданы. При достижении ограничения частоты запросов GitHub API карточки сохраняют последнее известное состояние и показывают предупреждение о том, что состояние может быть устаревшим; закрытие карточки скрывает её для этого сеанса в текущем профиле браузера. Пока PR ещё не существует, в строке отображается сама ветка — репозиторий, имя ветки и размер различий +/− относительно базы слияния ветки по умолчанию (зафиксированные и незафиксированные изменения), — а также кнопка Create PR, открывающая страницу создания запроса на включение изменений на GitHub. Строка появляется, когда в отправленной ветке есть коммиты для сравнения, и скрывается, пока существует открытый или черновой PR. Данные строки ветки поступают только из локального Git, поэтому она остаётся доступной при ограничении частоты запросов GitHub и показывает такое же предупреждение об устаревшем состоянии, поскольку результат «PR не найден» нельзя считать достоверным до сброса ограничения. - Панель различий сеанса показывает, что фактически было изменено в его рабочей копии: кнопка ветки (в заголовке панели рабочей области, заголовке разделённой панели или плавающая кнопка в однопанельном чате) открывает подробную панель с различиями по каждому файлу для изменений в ветке, незафиксированных и неотслеживаемых изменений относительно базы слияния ветки по умолчанию рабочей копии — точкой состояния, стрелкой переименования, количеством +/− для каждого файла, сворачиваемыми файлами и маркерами "N unmodified lines" между блоками изменений. Различия вычисляются на стороне сервера через метод Gateway
sessions.diff(область действияoperator.read); для двоичных и слишком больших файлов отображается только статистика, а кнопка появляется только тогда, когда подключённый Gateway объявляетsessions.diff. - Панель рабочей области сеанса в каждой панели Chat содержит файлы сеанса, файлы проекта и артефакты. По умолчанию она закреплена у правого края панели; перетащите её заголовок (или используйте кнопку закрепления), чтобы переместить её вниз, — выбор сохраняется в текущем профиле браузера. Свёрнутая панель совсем не занимает места: откройте её снова с помощью ⇧⌘B, переключателя файлов в заголовке разделённой панели или плавающей кнопки файлов в однопанельном чате (на обоих отображается значок с количеством изменённых файлов). Отдельная подробная панель файлов, инструментов и Canvas не изменяется.
- Щелчок по ссылке на файл в чате, пути к файлу в развёрнутой карточке инструмента чтения, редактирования или записи либо строке файла на панели рабочей области открывает подробную панель файла: представление кода на основе CodeMirror с подсветкой синтаксиса, номерами строк, переходом к строке, поиском по файлу, действиями копирования и меню открытия во внешнем редакторе. Когда Gateway объявляет
sessions.files.setдля соединенияoperator.admin, на панели добавляется режим Edit с отслеживанием изменений и сохранением по Cmd/Ctrl-S; несохранённые черновики сохраняются при переходе между файлами, панелями и сеансами в текущей вкладке браузера до явного сохранения или отмены. Сохранение выполняется по принципу сравнения и замены с использованием хеша содержимого, возвращаемогоsessions.files.get: если файл изменился на диске после загрузки (например, потому что агент продолжал работу), панель показывает уведомление о конфликте с действиями Reload (использовать последнее содержимое) и Overwrite (сохранить локальную правку). Запись выполняется с теми же средствами защиты рабочей области файловой системы, что и чтение: контролем нахождения пути в допустимых пределах, отклонением символических и жёстких ссылок и ограничением UTF-8 в 256 KB; перезаписываются только существующие файлы, редактор никогда не создаёт и не удаляет их. - Панель фоновых задач в каждой панели Chat содержит фоновые задачи и субагентов текущего агента (
tasks.listс областью действия по агенту, обновляется событиямиtask): для выполняющейся работы отображаются обновляемый таймер прошедшего времени, количество использований инструментов, используемый в данный момент инструмент и элемент управления остановкой; в сворачиваемом разделе завершённых задач также отображается длительность запусков; ссылка View transcript открывает дочерний сеанс задачи в панели. Откройте её переключателем активности в заголовке разделённой панели или плавающей кнопкой активности в однопанельном чате — снимок задач загружается заранее, поэтому на обоих отображается значок с количеством выполняющихся задач без предварительного открытия панели. Страница Tasks остаётся полным журналом по всем агентам. - Панель рабочей области, панель фоновых задач и подробная панель адаптируются к ширине каждой отдельной панели, а не окна: в узкой панели или компактном окне обе панели отображаются как нижние полосы (элементы бокового закрепления скрыты, пока панель не станет шире; панель рабочей области получает приоритет на боковое место, если помещается только один столбец), а подробная панель располагается под веткой обсуждения с горизонтальным маркером изменения размера, а не в одной строке с ней. На экранах размером с телефон подробная панель по-прежнему открывается на весь экран.
- Элементы выбора модели и режима рассуждений в заголовке чата немедленно обновляют активный сеанс через
sessions.patch; это постоянные переопределения для сеанса, а не параметры отправки только для одного сообщения. - Разделённое представление: откройте его с помощью верхней правой строки плавающих переключателей (рядом с переключателями различий сеанса, фоновых задач и файлов сеанса), затем разделяйте активную панель вправо или вниз, пока помещаются новые панели. Каждая панель имеет собственный сеанс, расшифровку, редактор сообщений и поток инструментов.
- Перетащите сеанс с боковой панели в чат, чтобы открыть его в панели. Анимированный предварительный просмотр области размещения плавно перемещается между зонами и обозначает результат: "Split" над той половиной, которую займёт новая панель, и "Open here" над всей панелью; перетаскивание также работает в однопанельном режиме.
- Активная разделённая панель определяет выбор на боковой панели и URL-адрес. У каждой панели есть собственная строка заголовка с названием сеанса и элементами управления панелью рабочей области, разделением и закрытием; разделители позволяют изменять размер столбцов и расположенных друг над другом панелей, а браузер сохраняет макет локально между перезагрузками.
- На узких экранах разделённое представление сохраняет макет, но отображает только активную панель, включая её заголовок с элементом управления закрытием.
- Если отправить сообщение, пока изменение модели для того же сеанса ещё сохраняется, редактор сообщений дождётся обновления этого сеанса перед вызовом
chat.send, чтобы для отправки использовалась выбранная модель. - Ввод
/newсоздаёт тот же новый сеанс панели управления, что и New Chat, и переключается на него, кроме случая, когда настроенsession.dmScope: "main", а текущий родительский сеанс является основным сеансом агента; тогда основной сеанс сбрасывается на месте. Ввод/resetсохраняет явный сброс текущего сеанса на месте, выполняемый Gateway. - Средство выбора модели чата запрашивает настроенное в Gateway представление моделей. Если присутствует
agents.defaults.models, этот список разрешённых моделей определяет содержимое средства выбора, включая записиprovider/*, которые обеспечивают динамическое обновление каталогов в пределах провайдера. В противном случае средство выбора показывает явные записиmodels.providers.*.models, а также провайдеров с пригодными данными аутентификации. Полный каталог остаётся доступным через отладочный RPCmodels.listсview: "all". - Когда свежие отчёты об использовании сеанса Gateway содержат текущее количество токенов контекста, на панели инструментов редактора сообщений чата отображается небольшое кольцо использования контекста с указанием использованного процента. Откройте кольцо, чтобы просмотреть текущее окно контекста, количество токенов последнего запуска и оценочную общую стоимость, идентификаторы провайдера и модели, а также детализацию стоимости входных, выходных и кэшированных данных в последнем ответе провайдера, если она предоставлена. При высокой нагрузке на контекст кольцо переключается на предупреждающее оформление, а при достижении рекомендуемых уровней Compaction отображает компактную кнопку, запускающую стандартный процесс Compaction сеанса. Устаревшие снимки количества токенов скрываются, пока Gateway снова не сообщит свежие данные об использовании.
Режим разговора (в реальном времени в браузере)
Режим разговора использует зарегистрированного провайдера голосовой связи в реальном времени. Настройте OpenAI с помощью talk.realtime.provider: "openai" и профиля API-ключа openai, talk.realtime.providers.openai.apiKey или OPENAI_API_KEY. OpenAI Realtime использует общедоступный Platform API и требует ключ Platform API; вход через Codex OAuth для этого интерфейса не подходит. Настройте Google с помощью talk.realtime.provider: "google" и talk.realtime.providers.google.apiKey. Браузер никогда не получает стандартный API-ключ провайдера: OpenAI получает временный клиентский секрет Realtime для WebRTC, а Google Live — одноразовый ограниченный токен аутентификации Live API для сеанса WebSocket в браузере, при этом инструкции и объявления инструментов фиксируются в токене посредством Gateway. Провайдеры, предоставляющие только серверный мост реального времени, работают через ретрансляционный транспорт Gateway, поэтому учётные данные и сокеты поставщика остаются на стороне сервера, а звук из браузера передаётся через аутентифицированные RPC Gateway. Приглашение сеанса Realtime формируется Gateway; talk.client.create не принимает переопределения инструкций от вызывающей стороны.
Постоянные значения по умолчанию для провайдера, модели, голоса, транспорта, уровня усилий рассуждения, точного порога VAD, длительности тишины и начального отступа находятся в разделе Настройки → Коммуникации → Разговор; для их изменения требуется доступ operator.admin. Настройка ретрансляции Gateway принудительно включает серверный путь ретрансляции; настройка WebRTC оставляет сеанс под управлением клиента и приводит к ошибке вместо неявного переключения на ретрансляцию, если провайдер не может создать браузерный сеанс.
Сам элемент управления разговором — это кнопка микрофона на панели инструментов редактора сообщения. В её раскрывающемся списке указаны Системное устройство по умолчанию и все микрофоны, доступные браузеру, включая USB-, Bluetooth- и виртуальные устройства ввода. Идентификатор выбранного устройства хранится только в браузере и никогда не отправляется в Gateway; если именно это устройство исчезнет, режим разговора предложит выбрать другое устройство ввода, а не начнёт без предупреждения записывать звук с другого микрофона. Пока режим разговора активен, кнопка микрофона превращается в капсулу с индикатором уровня входного сигнала в реальном времени; нажатие останавливает голосовой ввод, а при наведении отображается значок остановки. Программы экранного доступа объявляют Connecting voice input..., Listening... или Asking OpenClaw..., пока вызов инструмента реального времени обращается к настроенной более крупной модели через talk.client.toolCall. Остановка выполняющегося ответа агента по-прежнему выполняется отдельной квадратной кнопкой Остановить рядом с капсулой.
Проверка работоспособности в реальном окружении для сопровождающих: OPENAI_API_KEY=... GEMINI_API_KEY=... node --import tsx scripts/dev/realtime-talk-live-smoke.ts проверяет серверный мост WebSocket OpenAI, обмен SDP WebRTC между OpenAI и браузером, настройку браузерного WebSocket Google Live с ограниченным токеном и браузерный адаптер ретрансляции Gateway с имитацией мультимедиа микрофона. Команда выводит только состояние провайдера и не записывает секреты в журнал.
Остановка и прерывание
- Нажмите Остановить (вызывает
chat.abort). - Пока выполнение активно, обычные последующие сообщения ставятся в очередь. Нажмите Направить у сообщения в очереди, чтобы внедрить его в выполняющийся ход.
- Введите
/stop(либо отдельную фразу прерывания, напримерstop,stop action,stop run,stop openclaw,please stop), чтобы выполнить внеполосное прерывание. chat.abortподдерживает{ sessionKey }(безrunId) для прерывания всех активных выполнений этого сеанса.
Сохранение частичного результата при прерывании
- При прерывании выполнения частичный текст ассистента всё равно может отображаться в интерфейсе.
- Gateway сохраняет прерванный частичный текст ассистента в истории расшифровки, если имеется буферизованный вывод.
- Сохранённые записи содержат метаданные прерывания, чтобы потребители расшифровки могли отличать частичные результаты прерывания от вывода нормально завершённого выполнения.
Потеря соединения и повторное подключение
После установления сеанса разрыв соединения с Gateway не приводит к выходу из системы. Панель управления остаётся видимой, а под верхней панелью отображается плавающая янтарная капсула «Соединение с Gateway потеряно — повторное подключение…», пока клиент автоматически повторяет попытки с увеличивающейся задержкой (от 800 мс до 15 с). Обновления в реальном времени и действия с сеансом приостанавливаются до восстановления соединения; кнопка Повторить сейчас в капсуле принудительно запускает немедленную попытку. Чат остаётся доступным для редактирования: обычный текст и вложения сохраняются в привязанном к Gateway и сеансу хранилище браузера текущей вкладки, отображаются как ожидающие повторного подключения и автоматически отправляются после восстановления Gateway. Элементы управления в реальном времени и команды с косой чертой остаются недоступными без подключения.
Если в этом браузере уже сохранены учётные данные (настроенный токен или пароль либо одобренный токен устройства), при первом открытии и перезагрузке во время установления соединения отображается небольшой анимированный знак OpenClaw вместо кратковременного появления формы входа. Форма входа появляется только тогда, когда учётные данные ещё не сохранены или Gateway активно отклоняет их (неверный токен или пароль, отозванное сопряжение), — то есть в состояниях, требующих ваших действий, а не ожидания.
Установка PWA и веб-push-уведомления
Control UI поставляется с manifest.webmanifest и сервис-воркером, поэтому современные браузеры могут устанавливать его как автономное PWA-приложение. Web Push позволяет Gateway активировать установленное PWA-приложение с помощью уведомлений, даже когда вкладка или окно браузера не открыты.
Если сразу после обновления OpenClaw на странице отображается сообщение Несоответствие протокола, сначала снова откройте панель управления с помощью openclaw dashboard и выполните принудительное обновление. Если ошибка сохраняется, очистите данные сайта для источника панели управления или проверьте её в приватном окне браузера; старая вкладка или браузерный кеш сервис-воркера может продолжать запускать пакет Control UI, существовавший до обновления, с более новой версией Gateway.
| Компонент | Назначение |
|---|---|
ui/public/manifest.webmanifest |
Манифест PWA. Когда он становится доступен, браузеры предлагают «Установить приложение». |
ui/public/sw.js |
Сервис-воркер, обрабатывающий события push и нажатия на уведомления. |
push/vapid-keys.json (в каталоге состояния OpenClaw) |
Автоматически созданная пара ключей VAPID для подписи полезной нагрузки Web Push. |
push/web-push-subscriptions.json |
Сохранённые конечные точки браузерных подписок. |
Переопределите пару ключей VAPID с помощью переменных среды процесса Gateway, если необходимо закрепить ключи (при развёртывании на нескольких узлах, ротации секретов или тестировании):
OPENCLAW_VAPID_PUBLIC_KEYOPENCLAW_VAPID_PRIVATE_KEYOPENCLAW_VAPID_SUBJECT(по умолчаниюhttps://openclaw.ai)
Control UI использует следующие ограниченные областью действия методы Gateway для регистрации и проверки браузерных подписок:
push.web.vapidPublicKeyполучает активный открытый ключ VAPID.push.web.subscribeрегистрируетendpointвместе сkeys.p256dh/keys.auth.push.web.unsubscribeудаляет зарегистрированную конечную точку.push.web.testотправляет тестовое уведомление в подписку вызывающей стороны.
Встраивание размещённого содержимого
В сообщениях ассистента можно встроить размещённое веб-содержимое с помощью короткого кода [embed ...]. Политика песочницы iframe управляется параметром gateway.controlUi.embedSandbox:
Встроенный плагин Canvas также предоставляет show_widget для отображения автономного SVG или HTML непосредственно из вызова инструмента. Браузер объявляет возможность Gateway inline-widgets, а полученный документ Canvas остаётся доступным после повторной загрузки истории чата. Выполнения, инициированные из каналов, не получают этот инструмент.
строгий
Отключает выполнение скриптов во встроенном размещённом содержимом.
скрипты (по умолчанию)
Разрешает интерактивное встроенное содержимое, сохраняя изоляцию источника; обычно этого достаточно для автономных браузерных игр и виджетов.
доверенный
Добавляет allow-same-origin поверх allow-scripts для документов с того же сайта, которым намеренно требуются расширенные привилегии.
{ gateway: { controlUi: { embedSandbox: "scripts", }, },}Абсолютные внешние URL встраивания http(s) по умолчанию остаются заблокированными. Чтобы разрешить [embed url="https://..."] загружать сторонние страницы, задайте gateway.controlUi.allowExternalEmbedUrls: true.
Ширина сообщений чата
Расшифровка чата отображается в расположенной по центру удобной для чтения области, выровненной с редактором сообщения. Вывод ассистента и инструментов выравнивается по левому краю, а сообщения пользователя — по правому краю внутри этой области. В развёртываниях с широкими мониторами можно переопределить ширину расшифровки без изменения встроенного CSS, задав gateway.controlUi.chatMessageMaxWidth:
{ gateway: { controlUi: { chatMessageMaxWidth: "min(1280px, 82%)", }, },}Значение проверяется до передачи в браузер. Поддерживаются обычные значения длины и процентов, например 960px или 82%, а также ограниченные выражения ширины min(...), max(...), clamp(...), calc(...) и fit-content(...).
Доступ через tailnet (рекомендуется)
Встроенный Tailscale Serve (предпочтительно)
Оставьте Gateway на интерфейсе обратной петли и разрешите Tailscale Serve проксировать его через HTTPS:
openclaw gateway --tailscale serveОткройте https://<magicdns>/ (или настроенный вами gateway.controlUi.basePath).
По умолчанию запросы Control UI/WebSocket через Serve могут проходить аутентификацию с помощью заголовков идентификации Tailscale (tailscale-user-login), если gateway.auth.allowTailscale имеет значение true. OpenClaw проверяет идентификацию, разрешая адрес x-forwarded-for с помощью tailscale whois и сопоставляя его с заголовком, и принимает такие запросы, только если они поступают через интерфейс обратной петли с заголовками Tailscale x-forwarded-*. Для операторских сеансов Control UI с идентификацией браузерного устройства этот проверенный путь Serve также пропускает цикл сопряжения устройства; браузеры без идентификации устройства и подключения с ролью Node по-прежнему проходят обычные проверки устройств. Задайте gateway.auth.allowTailscale: false, если хотите требовать явные учётные данные на основе общего секрета даже для трафика Serve, а затем используйте gateway.auth.mode: "token" или "password".
Для этого асинхронного пути идентификации Serve неудачные попытки аутентификации с одного IP-адреса клиента и в одной области аутентификации сериализуются до записи ограничения частоты запросов. Поэтому при параллельных повторных попытках с неверными данными из одного браузера второй запрос может получить retry later вместо двух обычных несовпадений, обрабатываемых параллельно.
Привязка к tailnet + токен
openclaw gateway --bind tailnet --token "$(openssl rand -hex 32)"Откройте http://<tailscale-ip>:18789/ (или настроенный вами gateway.controlUi.basePath).
Вставьте соответствующий общий секрет в настройки интерфейса (он отправляется как connect.params.auth.token или connect.params.auth.password).
Небезопасный HTTP
Если открыть панель управления через обычный HTTP (http://<lan-ip> или http://<tailscale-ip>), браузер работает в небезопасном контексте и блокирует WebCrypto. По умолчанию OpenClaw блокирует подключения Control UI без идентификации устройства.
Документированные исключения:
- совместимость с небезопасным HTTP только для localhost через
gateway.controlUi.allowInsecureAuth=true - успешная операторская аутентификация Control UI через
gateway.auth.mode: "trusted-proxy" - аварийный механизм
gateway.controlUi.dangerouslyDisableDeviceAuth=true
Рекомендуемое решение: используйте HTTPS (Tailscale Serve) либо откройте интерфейс локально по адресу https://<magicdns>/ (Serve) или http://127.0.0.1:18789/ (на узле Gateway).
Поведение переключателя небезопасной аутентификации
{ gateway: { controlUi: { allowInsecureAuth: true }, bind: "tailnet", auth: { mode: "token", token: "replace-me" }, },}allowInsecureAuth — это только локальный переключатель совместимости:
- Он позволяет локальным сеансам Control UI продолжать работу без идентификации устройства в небезопасных контекстах HTTP.
- Он не обходит проверки сопряжения.
- Он не смягчает требования к идентификации удалённых устройств (не с localhost).
Только для экстренных случаев
{ gateway: { controlUi: { dangerouslyDisableDeviceAuth: true }, bind: "tailnet", auth: { mode: "token", token: "replace-me" }, },}Примечание о доверенном прокси
- Успешная аутентификация через доверенный прокси может разрешить сеансы Control UI с ролью оператора без идентификации устройства.
- Это не распространяется на сеансы Control UI с ролью Node.
- Обратные прокси на том же хосте, использующие loopback, по-прежнему не удовлетворяют требованиям аутентификации через доверенный прокси; см. Аутентификация через доверенный прокси.
Рекомендации по настройке HTTPS см. в разделе Tailscale.
Политика безопасности контента
Control UI поставляется со строгой политикой img-src: разрешены только ресурсы того же источника, URL-адреса data: и локально созданные URL-адреса blob:. Удалённые URL-адреса http(s) и URL-адреса изображений, относительные к протоколу, отклоняются браузером, поэтому сетевые запросы к ним никогда не выполняются.
На практике:
- Аватары и изображения, доступные по относительным путям (например,
/avatars/<id>), по-прежнему отображаются, включая маршруты аватаров с аутентификацией, содержимое которых интерфейс получает и преобразует в локальные URL-адресаblob:. - Встроенные URL-адреса
data:image/...по-прежнему отображаются. - Локальные URL-адреса
blob:, созданные Control UI, по-прежнему отображаются. - Gateway получает аватары для предпросмотра ссылок GitHub с фиксированного хоста аватаров GitHub и возвращает их в виде ограниченных URL-адресов
data:; браузер оператора никогда не обращается к удалённому хосту аватаров. - Удалённые URL-адреса аватаров из метаданных канала удаляются вспомогательными функциями аватаров Control UI и заменяются встроенным логотипом или значком, поэтому скомпрометированный или вредоносный канал не может заставить браузер оператора произвольно загружать удалённые изображения.
Эта защита включена всегда и не настраивается.
Аутентификация маршрута аватара
Если настроена аутентификация Gateway, конечная точка аватара Control UI требует тот же токен Gateway, что и остальная часть API:
GET /avatar/<agentId>возвращает изображение аватара только аутентифицированным клиентам.GET /avatar/<agentId>?meta=1возвращает метаданные аватара по тому же правилу.- Неаутентифицированные запросы к обоим маршрутам отклоняются (аналогично соседнему маршруту медиафайлов ассистента), поэтому маршрут аватара не может раскрыть идентификационные данные агента на хостах, защищённых в остальных отношениях.
- При получении аватаров Control UI передаёт токен Gateway в заголовке bearer-аутентификации и использует аутентифицированные blob-URL, чтобы изображение продолжало отображаться на панелях мониторинга.
Если отключить аутентификацию Gateway (не рекомендуется на общих хостах), маршрут аватара, как и остальная часть Gateway, также станет доступен без аутентификации.
Аутентификация маршрута медиафайлов ассистента
Если настроена аутентификация Gateway, для локального предпросмотра медиафайлов ассистента используется двухэтапный маршрут:
GET /__openclaw__/assistant-media?meta=1&source=<path>требует обычной операторской аутентификации Control UI; при проверке доступности браузер отправляет токен Gateway в заголовке bearer-аутентификации.- Успешные ответы с метаданными содержат краткосрочный
mediaTicket, область действия которого ограничена этим точным исходным путём. - URL-адреса изображений, аудио, видео и документов, отображаемых браузером, используют
mediaTicket=<ticket>вместо активного токена или пароля Gateway. Срок действия билета быстро истекает, и он не может предоставить доступ к другому источнику.
Это обеспечивает совместимость отображения медиафайлов со встроенными медиаэлементами браузера, не помещая повторно используемые учётные данные Gateway в видимые URL-адреса медиафайлов.
Ссылки для подтверждения
Уведомления оператора о запросах подтверждения могут содержать прямую ссылку на отдельный документ подтверждения, доступный в зарезервированном пространстве имён ${controlUiBasePath}/approve/{approvalId} (например, /approve/<approvalId> или /openclaw/approve/<approvalId> при настроенном базовом пути). URL-адрес остаётся неизменным в течение всего срока действия запроса и может безопасно пересылаться между вашими устройствами: он идентифицирует запрос подтверждения, но никогда не авторизует его.
- Односегментное пространство имён
/approve/<approvalId>зарезервировано Gateway перед HTTP-маршрутами плагинов для всех методов HTTP, поэтому маршрут плагина никогда не сможет перекрыть или перехватить документ подтверждения. - Для открытия документа подтверждения требуется та же аутентификация Gateway, что и для остальной части Control UI (токен/пароль, идентификация Tailscale Serve или идентификация доверенного прокси); учётные данные никогда не включаются в URL-адрес подтверждения.
- Если обслуживание Control UI отключено, запросы к этому пространству имён возвращают
404, а не передаются обработчикам плагинов. - Вход в систему в документе подтверждения действует временно и только для этой страницы: он не перезаписывает выбор Gateway или настройки, сохранённые полным интерфейсом Control UI в том же браузере.
Gateway обслуживает статические файлы из dist/control-ui:
pnpm ui:buildНеобязательный абсолютный базовый путь (фиксированные URL-адреса ресурсов):
OPENCLAW_CONTROL_UI_BASE_PATH=/openclaw/ pnpm ui:buildЛокальная разработка (отдельный сервер разработки):
pnpm ui:devЗатем укажите в интерфейсе URL-адрес WS вашего Gateway (например, ws://127.0.0.1:18789).
Пустая страница Control UI
Если браузер загружает пустую панель мониторинга, а DevTools не показывает полезных ошибок, возможно, расширение или ранний скрипт содержимого помешал выполнению приложения на основе модулей JavaScript. Статическая страница содержит простую HTML-панель восстановления, которая появляется, если после запуска не зарегистрирован <openclaw-app>.
После изменения среды браузера используйте действие Try again на панели или перезагрузите страницу вручную после следующих проверок:
- Отключите расширения, внедряющие код во все страницы, особенно расширения со скриптами содержимого
<all_urls>. - Попробуйте открыть страницу в приватном окне, чистом профиле браузера или другом браузере.
- Не останавливайте Gateway и после изменения браузера проверьте тот же URL-адрес панели мониторинга.
Отладка и тестирование: сервер разработки + удалённый Gateway
Control UI состоит из статических файлов; целевой адрес WebSocket настраивается и может отличаться от источника HTTP. Это удобно, если сервер разработки Vite должен работать локально, а Gateway — на другом узле.
Запустите сервер разработки интерфейса
pnpm ui:devОткройте с параметром gatewayUrl
http://localhost:5173/?gatewayUrl=ws%3A%2F%2F<gateway-host>%3A18789Необязательная одноразовая аутентификация (при необходимости):
http://localhost:5173/?gatewayUrl=wss%3A%2F%2F<gateway-host>%3A18789#token=<gateway-token>Примечания
gatewayUrlсохраняется в localStorage после загрузки и удаляется из URL-адреса.- Если через
gatewayUrlпередаётся полная конечная точкаws://илиwss://, закодируйте значение для URL, чтобы браузер правильно разобрал строку запроса. tokenпо возможности следует передавать через фрагмент URL (#token=...). Фрагменты не отправляются серверу, что предотвращает утечку через журналы запросов и заголовок Referer. Устаревшие параметры запроса?token=по-прежнему однократно импортируются для совместимости, но только в качестве резервного варианта, и удаляются сразу после начальной загрузки.passwordхранится только в памяти.- Если задан
gatewayUrl, интерфейс не использует учётные данные из конфигурации или переменных среды в качестве резервного варианта. Укажитеtoken(илиpassword) явно; отсутствие явно заданных учётных данных является ошибкой. - Используйте
wss://, если Gateway находится за TLS (Tailscale Serve, прокси HTTPS и т. п.). gatewayUrlпринимается только в окне верхнего уровня (без встраивания), чтобы предотвратить кликджекинг.- Для общедоступных развёртываний Control UI не на loopback необходимо явно задать
gateway.controlUi.allowedOrigins(полные источники). Частные загрузки из того же источника в LAN/Tailnet с loopback, RFC1918/link-local,.local,.ts.netили хостов Tailscale CGNAT принимаются без включения резервной проверки заголовка Host. - При запуске Gateway может добавить локальные источники, такие как
http://localhost:<port>иhttp://127.0.0.1:<port>, на основе фактических адреса привязки и порта среды выполнения, но источники удалённых браузеров по-прежнему необходимо указывать явно. - Не используйте
gateway.controlUi.allowedOrigins: ["*"], кроме строго контролируемого локального тестирования; это означает разрешение любого источника браузера, а не «сопоставить с используемым мной хостом». gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=trueвключает режим резервной проверки источника по заголовку Host, но это опасный режим безопасности.
{ gateway: { controlUi: { allowedOrigins: ["http://localhost:5173"], }, },}Подробности настройки удалённого доступа: Удалённый доступ.
См. также
- Панель мониторинга — панель мониторинга Gateway
- Проверки работоспособности — мониторинг работоспособности Gateway
- TUI — терминальный пользовательский интерфейс
- Веб-чат — интерфейс чата в браузере