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 автоматически определяет светлые терминалы и переключается на светлую тему соответственно. Определение работает в три слоя:
- Переменная окружения
HERMES_TUI_THEME— наивысший приоритет. Значения:light,darkили сырой 6-символьный hex-код фона (например,ffffff,1a1a2e). - Переменная окружения
COLORFGBG— классическая подсказка «какой у меня цвет фона?», используемая терминалами, производными от xterm. - Зонд фона терминала через 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¶
- CLI Interface — полный справочник слеш-команд и сочетаний клавиш (общий)
- Sessions — возобновление, ветвление и история
- Skins & Themes — настройка баннера, строки состояния и оверлеев
- Voice Mode — работает в обоих интерфейсах
-
Configuration — все ключи конфигурации
- Why the TUI
- Requirements
- Keybindings
- Slash commands
- LaTeX math rendering
- Light-terminal detection
- Busy indicator styles
- Auto-resume
- Status line
- Configuration
- Sessions
- Reverting to the classic CLI
- See also