macOS companion app
WebChat (macOS)
Приложение для строки меню macOS встраивает интерфейс WebChat как нативное представление SwiftUI. Оно подключается к Gateway и по умолчанию использует основной сеанс выбранного агента (main или global, когда session.scope имеет значение global).
Полное окно чата представляет собой нативное разделённое представление:
- Боковая панель сеансов: список сеансов с поиском, разделами закреплённых и недавних сеансов, индикаторами непрочитанных сообщений и контекстными меню для закрепления и открепления, копирования ключа сеанса и удаления. Кнопка на панели инструментов (или Cmd-N) создаёт настоящий новый сеанс через
sessions.create. - Панель инструментов окна: кольцевой индикатор использования контекста (токены и стоимость сеанса, с компактным действием), средство выбора уровня рассуждений, средство выбора модели и меню действий с сеансом (новый сеанс, обновление, копирование ключа сеанса, экспорт расшифровки, Compaction, очистка истории).
- Расшифровка и редактор сообщения: сообщения ассистента отображаются как обычный текст с аватаром, а сообщения пользователя — как акцентные облачка. При вводе
/открывается автодополнение слеш-команд на основеcommands.listс навигацией с клавиатуры с помощью стрелок, Tab, Return и Escape. Чтобы скопировать сообщение, щёлкните его правой кнопкой мыши.
Закреплённая панель быстрого чата из строки меню сохраняет компактную одноколоночную компоновку со встроенными средствами выбора.
- Локальный режим: подключается непосредственно к локальному WebSocket Gateway.
- Удалённый режим: перенаправляет управляющий порт Gateway через SSH и использует этот туннель как канал передачи данных.
Запуск и отладка
-
Вручную: меню Lobster -> "Open Chat".
-
Автоматическое открытие для тестирования:
bash dist/OpenClaw.app/Contents/MacOS/OpenClaw --chat(
--webchatподдерживается как устаревший псевдоним.) -
Журналы:
./scripts/clawlog.sh(подсистемаai.openclaw, категорияWebChatSwiftUI).
Схема подключения
- Канал передачи данных: методы WS Gateway
chat.history,chat.send,chat.abort,chat.injectи событияchat,agent,presence,tick,health. chat.historyвозвращает нормализованную для отображения расшифровку: встроенные теги директив удаляются из видимого текста; XML-данные вызовов инструментов в виде обычного текста (<tool_call>,<function_call>,<tool_calls>,<function_calls>, включая усечённые блоки) и попавшие в вывод управляющие токены модели удаляются; строки ассистента, содержащие только служебный токен молчания, например точное значениеNO_REPLY/no_reply, пропускаются; слишком большие строки могут заменяться усечённым заполнителем.- Сеанс: по умолчанию используется основной сеанс, как описано выше; интерфейс позволяет переключаться между сеансами.
- Для первоначальной настройки используется отдельный сеанс, чтобы отделить её от обычной работы.
- Автономный кеш: приложение хранит небольшой кеш только для чтения с недавними сеансами чата и расшифровками для каждого Gateway (
~/Library/Application Support/OpenClaw/chat-cache.sqlite). При холодном запуске сразу отображается последняя известная расшифровка, которая обновляется после ответа Gateway; недавние чаты остаются доступными для просмотра без подключения, но отправка сообщений отключена до его восстановления.
Область безопасности
- В удалённом режиме через SSH перенаправляется только управляющий порт WebSocket Gateway.
Известные ограничения
- Интерфейс оптимизирован для сеансов чата, а не для использования в качестве полноценной браузерной песочницы.
Связанные материалы
Was this useful?