macOS companion app

WebChat (macOS)

Застосунок рядка меню macOS вбудовує інтерфейс WebChat як нативне подання SwiftUI. Він підключається до Gateway і за замовчуванням використовує основний сеанс вибраного агента (main або global, коли session.scope має значення global).

Повне вікно чату — це нативне розділене подання:

  • Бічна панель сеансів: список сеансів із пошуком, розділами закріплених і нещодавніх сеансів, індикаторами непрочитаного та контекстними меню для закріплення або відкріплення, копіювання ключа сеансу й видалення. Кнопка на панелі інструментів (або Cmd-N) створює справжній новий сеанс через sessions.create.
  • Панель інструментів вікна: кільцевий індикатор використання контексту (токени й вартість сеансу, з компактною дією), засіб вибору рівня міркування, засіб вибору моделі та меню дій із сеансом (новий сеанс, оновити, скопіювати ключ сеансу, експортувати стенограму, стиснути, очистити історію).
  • Стенограма й редактор повідомлень: повідомлення асистента відображаються як звичайний текст з аватаром, а повідомлення користувача — як акцентовані бульбашки. Введення / відкриває автодоповнення команд із похилою рискою на основі 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