ТУИ

TUI — это современный интерфейс для Hermes — пользовательский интерфейс терминала, поддерживаемый той же средой выполнения Python, что и Classic CLI. Тот же агент, те же сеансы, те же команды с косой чертой; более чистая и отзывчивая поверхность для взаимодействия с ними.

Это рекомендуемый способ запуска Hermes в интерактивном режиме.

Запуск

# Launch the TUI
hermes --tui

# Resume the latest TUI session (falls back to the latest classic session)
hermes --tui -c
hermes --tui --continue
hermes --tui --resume latest

# Resume a specific session by ID or title
hermes --tui -r 20260409_000000_aa11bb
hermes --tui --resume "my t0p session"

# Resume the latest session for a specific project directory
hermes --tui --resume latest --in./my-project

# Run source directly — skips the prebuild step (for TUI contributors)
hermes --tui --dev

Вы также можете включить его через env var:

export HERMES_TUI=1
hermes          # now uses the TUI
hermes chat     # same

Или сделайте его постоянным по умолчанию в ~/.hermes/config.yaml:

display:
  interface: tui   # "cli" (default) or "tui"

При использовании display.interface: tui пустой hermeshermeschat) запускает TUI. Явные флаги всегда побеждают — запустите hermes --cli, чтобы вернуться к классическому REPL для одного вызова, или hermes --tui / HERMES_TUI=1, чтобы принудительно использовать TUI, если в конфигурации по умолчанию используется cli.

Классический интерфейс командной строки остается по умолчанию. Все, что задокументировано в [Интерфейс CLI] (cli.md) — косые команды, быстрые команды, предварительная загрузка навыков, персональные настройки, многострочный ввод, прерывания — работает в TUI одинаково.

Почему TUI

Применяются те же скины и личности. Переключитесь в середине сеанса с помощью /skin ares, /personality Pirate, и пользовательский интерфейс перерисовывается в реальном времени. См. Скины и темы для получения полного списка настраиваемых клавиш и того, какие из них применимы к классическому интерфейсу, а не к TUI — TUI учитывает палитру баннера, цвета пользовательского интерфейса, глиф/цвет подсказки, отображение сеанса, меню завершения, фон выбора, tool_prefix и help_header.

Сворачиваемые разделы баннеров

Баннер запуска TUI группирует информацию о времени выполнения в четыре сворачиваемых раздела, каждый из которых отображается с помощью шеврона / рядом с заголовком раздела:

Раздел Состояние по умолчанию
Инструменты Открыть
Навыки Свернутый
Системная подсказка Свернутый
MCP-серверы Свернутый

Щелкните в любом месте заголовка раздела (или его шеврона), чтобы переключить его. Список «Инструменты» открывается по умолчанию, поскольку это наиболее проверяемый раздел при запуске сеанса; Навыки, системная подсказка и серверы MCP по умолчанию сворачиваются, поэтому баннер остается компактным, даже если вы установили десятки навыков или подключили множество серверов MCP. Состояние является локальным для экземпляра баннера, поэтому при следующем запуске сбрасываются значения по умолчанию.

Требования

При первом запуске Hermes устанавливает зависимости узла TUI в ui-tui/node_modules (один раз, несколько секунд). Последующие запуски происходят быстро. Если вы установите новую версию Hermes, пакет TUI будет пересобран автоматически, если исходные коды новее, чем dist.

💡 Tip

Работаете с рабочими деревьями git? Участники, которые запускают hermes --tui --dev из многих рабочих деревьев, могут использовать один node_modules вместо установки для каждого оформления заказа — см. TUI и рабочий стол из Worktrees.

Внешняя предварительная сборка

Дистрибутивы, поставляющие готовый пакет (Nix, системные пакеты), могут указать на него Hermes:

export HERMES_TUI_DIR=/path/to/prebuilt/ui-tui
hermes --tui

Каталог должен содержать dist/entry.js.

Сочетания клавиш

Привязки клавиш точно соответствуют Классическому CLI. Единственные поведенческие различия:

Слэш-команды

Все слэш-команды работают без изменений. Некоторые из них принадлежат TUI — они производят более насыщенный вывод или визуализируются в виде наложений, а не встроенных панелей:

Команда Поведение TUI
/помощь Наложение с категоризированными командами, навигация с помощью клавиш со стрелками
/sessions (псевдоним /switch) Переключатель сеансов в реальном времени — список открытых сеансов TUI, переключение между ними, закрытие их или запуск другого
/модель Модальный выбор моделей, сгруппированный по поставщикам, с подсказками по стоимости
/скин Предварительный просмотр в реальном времени — изменение темы применяется по мере просмотра
/детали Toggle verbose tool-call details (global or per-section)
/использование Расширенная панель токенов/стоимости/контекста
/агенты (псевдоним /задачи) Наложение наблюдаемости — действующее дерево субагентов с элементами управления уничтожением/паузой, стоимостью каждой ветки/свертыванием токенов/файлов, пошаговой историей
/перезагрузить Перечитывает ~/.hermes/.env в работающий процесс TUI, чтобы вновь добавленные ключи API вступили в силу без перезапуска
/mouse [вкл\|выкл\|переключение\|колесо\|кнопки\|все] Выберите предустановку отслеживания мыши во время выполнения (также сохраняется в display.mouse_tracking в config.yaml). wheel (1000+1006) сохраняет прокрутку с помощью колеса прокрутки без событий наведения, которые вызывают спам tmux «Нет изображения в буфере обмена» над строкой подсказки; buttons добавляет перетаскивание для выбора; all является значением по умолчанию для пользовательского интерфейса, управляемого наведением курсора.

Любая другая косая черта (включая установленные навыки, быстрые команды и переключение личности) работает идентично классическому интерфейсу командной строки. См. Справочник по слэш-командам.

Переключатель сеансов в реальном времени

Используйте переключатель живых сеансов, если вы хотите, чтобы один терминал выступал в качестве диспетчера для нескольких сеансов TUI. В нем перечислены только сеансы, которые в данный момент активны в этом процессе TUI; закрытые сеансы остаются сохраненными стенограммами и могут быть открыты повторно с помощью /resume или hermes --tui --resume <id-or-title>.

Откройте его любым из этих способов:

Оркестратор сеансов Hermes TUI с одним активным сеансом и +новой строкой

Внутри коммутатора:

Математический рендеринг LaTeX

Конвейер уценки TUI визуализирует математику LaTeX в строке: $E = mc^2$ и $$\frac{a}{b}$$ отображают как математические вычисления в формате Unicode, а не как необработанный исходный текст TeX. Работает для встроенной и блочной математики; неподдерживаемый синтаксис возвращается к отображению буквального TeX, завернутого в фрагмент кода, чтобы его можно было копировать.

Это всегда включено — ничего настраивать не нужно. Классический CLI сохраняет необработанный TeX.

Light-terminal detection

TUI автоматически обнаруживает световые терминалы и соответствующим образом переключается на светлую тему. Обнаружение работает на трех уровнях:

  1. HERMES_TUI_THEME env var — высший приоритет. Значения: «светлый», «темный» или необработанный фоновый шестнадцатеричный код из 6 символов (например, «ffffff», «1a1a2e»).
  2. COLORFGBG env var — классический вопрос «какой у меня цвет фона?» подсказка, используемая терминалами, производными от xterm.
  3. Фоновая проверка терминала через OSC 11 — работает на современных терминалах (Ghostty, Warp, iTerm2, WezTerm, Kitty), которые не устанавливают COLORFGBG.

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

export HERMES_TUI_THEME=light

Стили индикатора занятости

Индикатор занятости в строке состояния является подключаемым — по умолчанию палитра лица Hermes в стиле каваи вращается каждые 2,5 секунды во время работы агента. Выберите другой стиль через конфигурацию или слеш-команду /indicator:

display:
  tui_status_indicator: kaomoji   # kaomoji | emoji | unicode | ascii

Или во время сеанса: /indicator emoji (и т. д.). Стили поставляются с глифами одинаковой ширины, поэтому остальная часть строки состояния не дрожит при вращении.

Автовозобновление

По умолчанию hermes --tui запускает новый сеанс при каждом запуске. Чтобы автоматически повторно подключиться к последнему сеансу TUI (полезно, если ваш терминал или SSH-соединение неожиданно прерывается), зарегистрируйтесь:

export HERMES_TUI_RESUME=1          # most-recent TUI session
# or:
export HERMES_TUI_RESUME=<session-id>   # specific session

Снимите настройку переменной или явно передайте --resume <id> для переопределения для каждого запуска.

Строка состояния

Строка состояния TUI отслеживает состояние агента в режиме реального времени:

После того, как сеансу присвоено имя, его название отображается в виде значка акцентного цвета в крайнем правом углу строки состояния. Заголовок занимает место метки рабочей области и обрезается на узких терминалах.

Статус Значение
стартовый агент… Идентификатор сеанса активен; инструменты и навыки все еще появляются в Интернете. Вы можете ввести — сообщения в очереди и отправить, когда будете готовы.
готов Агент простаивает, принимает вводимые данные.
думаю… / бегу... Агент рассуждает или запускает инструмент.
прерванный Текущий ход отменен; нажмите Enter, чтобы отправить еще раз.
формирование сеанса… / возобновление… Первоначальное соединение или рукопожатие --resume.

Цвета и пороговые значения строки состояния для каждого скина используются в классическом интерфейсе командной строки — см. Skins для настройки.

В строке состояния также отображается:

Конфигурация

TUI учитывает все стандартные конфигурации Hermes: ~/.hermes/config.yaml, профили, персональные настройки, скины, быстрые команды, пулы учетных данных, поставщики памяти, включение инструментов/навыков. Никакого файла конфигурации, специфичного для TUI, не существует.

Несколько клавиш специально настраивают поверхность TUI:

display:
  skin: default              # any built-in or custom skin
  personality: helpful
  details_mode: collapsed    # hidden | collapsed | expanded — global accordion default
  sections:                  # optional: per-section overrides (any subset)
    thinking: expanded       # always open
    tools: expanded          # always open
    activity: collapsed      # opt back IN to the activity panel (hidden by default)
  mouse_tracking: all        # off | wheel | buttons | all (or true/false for back-compat).
                             #   wheel   — 1000+1006 (scroll + click; no drag, no hover —
                             #             recommended inside tmux to silence the prompt-row
                             #             "No image in clipboard" spam from hover events)
                             #   buttons — adds 1002 for terminal-side drag selection
                             #   all     — adds 1003 for hover (scrollbar paginate-on-hover,
                             #             link mouseenter, etc.)

Переключатели времени выполнения:

Видимость по умолчанию

TUI поставляется с самоуверенными настройками по умолчанию для каждого раздела, которые транслируют ход как живая расшифровка вместо стены шевронов:

Переопределения для каждого раздела имеют приоритет как над значением раздела по умолчанию, так и над значением по умолчанию. глобальный details_mode. Чтобы изменить макет:

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

сеансов

Сеансы разделяются между TUI и классическим CLI — оба пишут в один и тот же ~/.hermes/state.db. Вы можете начать сеанс в одном, возобновить в другом. Средство выбора сеанса отображает сеансы из обоих источников с помощью тега источника.

См. Сессии для получения информации о жизненном цикле, поиске, сжатии и экспорте.

Как TUI взаимодействует со своим шлюзом

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

Вы можете увидеть переменную окружения HERMES_TUI_GATEWAY_URL, на которую есть ссылка в базе кода или журналах. Это деталь внутренней проводки веб-панели, а не ручка дистанционного подключения, обращенная к пользователю. Когда вы открываете вкладку «Чат» на информационной панели («hermes Dashboard» → «/chat»), веб-сервер информационной панели порождает встроенный дочерний процесс TUI и внедряет HERMES_TUI_GATEWAY_URL, чтобы дочерний элемент прикреплялся к собственному внутрипроцессному «tui_gateway» информационной панели через петлевой WebSocket (/api/ws). Конечная точка /api/ws существует только внутри сервера информационной панели (hermes_cli/web_server.py) и привязана к времени жизни и авторизации этого процесса.

Не существует общего режима «направьте любой TUI на любой порт автономного шлюза». В частности, OpenAI-совместимый сервер API (шлюз Hermes / платформа api_server) не обслуживает /api/ws — это поверхность бэкенда модели (/v1/chat/completions, /v1/models, …) и намеренно не раскрывает канал управления JSON-RPC TUI. Установка HERMES_TUI_GATEWAY_URL для этого порта приведет к ошибке 404.

Если вы хотите, чтобы несколько поверхностей использовали один набор сеансов, используйте общий ~/.hermes/state.db (см. Сессии) или встроенный чат веб-панели (см. Веб-панель) — а не заданный вручную URL-адрес шлюза.

Возврат к классическому интерфейсу командной строки

Запуск «hermes» (без «--tui») по умолчанию остается в классическом интерфейсе командной строки. Чтобы машина предпочитала TUI, установите display.interface: tui в ~/.hermes/config.yaml (постоянно) или HERMES_TUI=1 в профиле вашей оболочки (для каждой оболочки). Чтобы вернуться назад, установите interface: cli / отключите переменную env или передайте hermes --cli для одноразового использования.

Если TUI не запускается (нет узла, отсутствует пакет, проблема с телетайпом), Hermes распечатывает диагностическое сообщение и отступает — вместо того, чтобы оставить вас в тупике.

См. также