Перейти к содержанию

TUI

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

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

Launch​

[code] # Запуск TUI
hermes --tui

# Возобновление последней TUI-сессии (с откатом к последней классической сессии)  
hermes --tui -c  
hermes --tui --continue

# Возобновление конкретной сессии по ID или названию  
hermes --tui -r 20260409_000000_aa11bb  
hermes --tui --resume "my t0p session"

# Запуск напрямую из исходников — пропускает этап предварительной сборки (для контрибьюторов TUI)  
hermes --tui --dev

[/code]

Вы также можете включить его через переменную окружения:

[code] export HERMES_TUI=1
hermes # теперь использует TUI
hermes chat # аналогично

[/code]

Classic CLI остаётся доступным по умолчанию. Всё, что описано в CLI Interface — слеш-команды, быстрые команды, предзагрузка навыков, персонализации, многострочный ввод, прерывания — работает в TUI идентично.

Why the TUI​

  • Мгновенный первый кадр — баннер отображается до завершения загрузки приложения, поэтому терминал никогда не кажется замороженным, пока Hermes запускается.
  • Неблокирующий ввод — вводите и ставьте в очередь сообщения до готовности сессии. Ваш первый промпт отправится в тот момент, когда агент появится в сети.
  • Богатые оверлеи — выбор модели, выбор сессии, запросы на одобрение и уточнение отображаются в виде модальных панелей, а не встроенных потоков.
  • Живая панель сессии — инструменты и навыки заполняются постепенно по мере инициализации.
  • Мышь для выделения — перетаскивайте для выделения с однородным фоном вместо SGR-инверсии. Копируйте обычным жестом копирования вашего терминала.
  • Рендеринг на альтернативном экране — дифференциальные обновления означают отсутствие мерцания при стриминге и отсутствие мусора в скроллбэке после выхода.
  • Возможности композиции — сворачивание длинных фрагментов при вставке, Cmd+V / Ctrl+V для вставки текста с откатом к буферу обмена с изображениями, безопасность вставки в скобках и нормализация вложений изображений/путей к файлам.

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

Requirements​

  • Node.js ≥ 20 — TUI запускается как подпроцесс из Python CLI. hermes doctor проверяет это.
  • TTY — как и в classic CLI, при перенаправлении stdin или работе в неинтерактивном окружении происходит откат к режиму одиночного запроса.

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

External prebuild​

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

[code] export HERMES_TUI_DIR=/path/to/prebuilt/ui-tui
hermes --tui

[/code]

Директория должна содержать dist/entry.js и актуальный node_modules.

Keybindings​

Сочетания клавиш полностью совпадают с Classic CLI. Единственные различия в поведении:

  • Перетаскивание мышью выделяет текст с однородным фоном выделения.
  • Cmd+V / Ctrl+V сначала пытается вставить обычный текст, затем пробует OSC52/нативный буфер обмена и, наконец, прикрепляет изображение, если буфер обмена или вставленные данные содержат изображение.
  • /terminal-setup устанавливает локальные привязки терминала для VS Code / Cursor / Windsurf для лучшей совместимости Cmd+Enter и отмены/повтора на macOS.
  • Автодополнение слеш-команд открывается как плавающая панель с описаниями, а не как встроенный выпадающий список.
  • Ctrl+X — когда выделено сообщение из очереди (отправленное, пока агент ещё работал), удаляет его из очереди. Esc отменяет редактирование и снимает выделение без удаления.
  • Ctrl+G / Ctrl+X Ctrl+E — открывает текущий буфер ввода в $EDITOR для многострочной / длинной композиции промпта; сохранение и выход отправляют содержимое обратно как промпт.

Slash commands​

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

Command TUI behavior
/help Оверлей с категоризированными командами, навигация стрелками
/sessions Модальный выбор сессии — предпросмотр, название, количество токенов, возобновление без перехода
/model Модальный выбор модели, сгруппированный по провайдерам, с подсказками по стоимости
/skin Живой предпросмотр — смена темы применяется по мере просмотра
/details Переключение подробного отображения вызовов инструментов (глобально или по секциям)
/usage Расширенная панель токенов / стоимости / контекста
/agents (алиас /tasks) Оверлей наблюдаемости — живое дерево сабагентов с контролем остановки/паузы, сводка по стоимости/токенам/файлам на каждую ветку, пошаговая история
/reload Перечитывает ~/.hermes/.env в работающий процесс TUI, чтобы только что добавленные API-ключи вступили в силу без перезапуска
/mouse Включение/выключение отслеживания мыши на лету (также сохраняется в display.mouse_tracking в config.yaml)

Все остальные слеш-команды (включая установленные навыки, быстрые команды и переключатели персонализации) работают идентично classic CLI. См. Slash Commands Reference.

LaTeX math rendering​

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

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

Light-terminal detection​

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

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

Если вы хотите, чтобы светлая тема была постоянной независимо от терминала:

[code] export HERMES_TUI_THEME=light

[/code]

Busy indicator styles​

FaceTicker в строке состояния является подключаемым — по умолчанию он вращает палитру кавайных лиц Hermes каждые 2.5 секунды во время работы агента. Выберите другой стиль (или none для минимальной точки) через конфиг:

[code] display:
busy_indicator:
style: kawaii # kawaii | minimal | dots | wings | none

[/code]

Стили поставляются с согласованной шириной глифов, чтобы остальная часть строки состояния не дёргалась при вращении.

Auto-resume​

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

[code] export HERMES_TUI_RESUME=1 # последняя TUI-сессия
# или:
export HERMES_TUI_RESUME= # конкретная сессия

[/code]

Сбросьте переменную или явно передайте --resume <id>, чтобы переопределить при конкретном запуске.

Status line​

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

Status Meaning
starting agent… ID сессии активен; инструменты и навыки ещё подключаются. Вы можете печатать — сообщения ставятся в очередь и отправляются, когда всё готово.
ready Агент бездействует, ожидает ввода.
thinking… / running… Агент размышляет или выполняет инструмент.
interrupted Текущий шаг был отменён; нажмите Enter, чтобы отправить снова.
forging session… / resuming… Первичное подключение или рукопожатие --resume.

Цвета и пороги строки состояния для каждого скина общие с classic CLI — см. Skins для настройки.

Строка состояния также показывает:

  • Рабочую директорию с git-веткой — ~/projects/hermes-agent (docs/two-week-gap-sweep). Суффикс ветки обновляется при git checkout в соседнем терминале (кэшируется по mtime), поэтому TUI отражает вашу актуальную активную ветку, а не ту, что была при запуске.
  • Время, затраченное на каждый промпт — ⏱ 12s/3m 45s пока шаг выполняется (живое), застывает как ⏲ 32s / 3m 45s после завершения шага. Первое число — время с последнего сообщения пользователя; второе — общая длительность сессии. Сбрасывается при каждом новом промпте.

Configuration​

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

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

[code] display:
skin: default # любой встроенный или кастомный скин
personality: helpful
details_mode: collapsed # hidden | collapsed | expanded — глобальный аккордеон по умолчанию
sections: # опционально: переопределения для отдельных секций (любой набор)
thinking: expanded # всегда открыто
tools: expanded # всегда открыто
activity: collapsed # вернуть панель активности (по умолчанию скрыта)
mouse_tracking: true # отключите, если ваш терминал конфликтует с отслеживанием мыши

[/code]

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

  • /details [hidden|collapsed|expanded|cycle] — установить глобальный режим
  • /details <section> [hidden|collapsed|expanded|reset] — переопределить одну секцию (секции: thinking, tools, subagents, activity)

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

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

  • thinking — expanded. Рассуждения отображаются встроенно по мере их генерации моделью.
  • tools — expanded. Вызовы инструментов и их результаты отображаются открытыми.
  • subagents — использует глобальный details_mode (по умолчанию свёрнут под шевроном — остаётся скрытым, пока делегирование не произойдёт).
  • activity — hidden. Фоновая мета-информация (подсказки шлюза, уведомления паритета терминала, фоновые уведомления) — шум для повседневного использования. Сбои инструментов всё равно отображаются встроенно в строке сбойного инструмента; фоновые ошибки/предупреждения отображаются через резервный механизм плавающих оповещений, когда все панели скрыты.

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

  • display.sections.thinking: collapsed — убрать рассуждения обратно под шеврон
  • display.sections.tools: collapsed — убрать вызовы инструментов обратно под шеврон
  • display.sections.activity: collapsed — вернуть панель активности
  • /details <section> <mode> во время выполнения

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

Sessions​

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

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

Reverting to the classic CLI​

Запуск hermes (без --tui) остаётся на classic CLI. Чтобы на конкретной машине предпочитать TUI, установите HERMES_TUI=1 в вашем shell-профиле. Чтобы вернуться обратно, сбросьте её.

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

See also​