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?
On this page

On this page