TUI
TUI — это современный интерфейс для Hermes, терминальный пользовательский интерфейс, работающий на том же рантайме Python, что и классический CLI. Тот же агент, те же сессии, те же слэш-команды; более чистый и отзывчивый интерфейс для взаимодействия с ними.
Это рекомендуемый способ интерактивной работы с Hermes.
Launch
# Launch the TUI
hermes --tui
# Resume the latest TUI session (falls back to the latest classic session)
hermes --tui -c
hermes --tui --continue
# Resume a specific session by ID or title
hermes --tui -r 20260409_000000_aa11bb
hermes --tui --resume "my t0p session"
# Run source directly — skips the prebuild step (for TUI contributors)
hermes --tui --dev
Вы также можете включить его через переменную окружения:
export HERMES_TUI=1
hermes # now uses the TUI
hermes chat # same
Классический CLI остаётся доступным по умолчанию. Всё, что описано в CLI Interface — слэш-команды, быстрые команды, предзагрузка навыков, личности, многострочный ввод, прерывания — работает в TUI точно так же.
Why the TUI
-
Мгновенный первый кадр — баннер отображается до завершения загрузки приложения, поэтому терминал не зависает во время запуска Hermes.
-
Неблокирующий ввод — вводите и ставьте в очередь сообщения до готовности сессии. Ваш первый запрос отправляется в момент подключения агента.
-
Богатые оверлеи — выбор модели, выбор сессии, запросы подтверждения и уточнения отображаются как модальные панели, а не встроенные потоки.
-
Панель живой сессии — инструменты и навыки постепенно заполняются по мере их инициализации.
-
Удобное выделение мышью — перетаскивание для выделения с однородным фоном вместо SGR-инверсии. Копирование обычным жестом копирования вашего терминала.
-
Рендеринг в альтернативном экране — дифференциальные обновления означают отсутствие мерцания при потоковой передаче и отсутствие мусора в истории прокрутки после выхода.
-
Удобства композитора — встроенное сворачивание вставки для длинных фрагментов, текстовая вставка
Cmd+V/Ctrl+Vс резервным копированием из буфера обмена, безопасность bracketed-paste и нормализация вложений изображений/путей к файлам.
Применяются те же скины и личности. Переключайте их в середине сессии с помощью /skin ares, /personality pirate, и интерфейс обновляется в реальном времени. См. Скины и темы для полного списка настраиваемых параметров и того, какие из них применяются к классическому CLI, а какие к TUI — TUI учитывает палитру баннера, цвета UI, глиф/цвет приглашения, отображение сессии, меню автодополнения, фон выделения, tool_prefix и help_header.
Requirements
-
Node.js ≥ 20 — TUI запускается как подпроцесс, запущенный из Python CLI.
hermes doctorпроверяет это. -
TTY — как и в классическом CLI, перенаправление stdin или запуск в неинтерактивной среде переключает в режим одного запроса.
При первом запуске Hermes устанавливает зависимости Node TUI в ui-tui/node_modules (однократно, несколько секунд). Последующие запуски быстрые. Если вы обновляете версию Hermes, пакет TUI перестраивается автоматически, когда источники новее, чем dist.
External prebuild
Дистрибутивы, поставляющие предсобранный пакет (Nix, системные пакеты), могут указать Hermes на него:
export HERMES_TUI_DIR=/path/to/prebuilt/ui-tui
hermes --tui
Директория должна содержать dist/entry.js и актуальный node_modules.
Keybindings
Горячие клавиши точно соответствуют классическому CLI. Единственные поведенческие отличия:
-
Перетаскивание мышью выделяет текст с однородным фоном выделения.
-
Cmd+V/Ctrl+Vсначала пробует обычную вставку текста, затем переходит к OSC52/чтению нативного буфера обмена, и наконец к прикреплению изображения, когда буфер обмена или вставленные данные являются изображением. -
/terminal-setupустанавливает локальные привязки терминала VS Code / Cursor / Windsurf для лучшей работыCmd+Enterи паритета undo/redo на macOS. -
Автодополнение слэш-команд открывается как плавающая панель с описаниями, а не встроенный выпадающий список.
-
Ctrl+X— когда поставленное в очередь сообщение выделено (отправлено, пока агент ещё работал), удаляет его из очереди.Escотменяет редактирование и снимает выделение без удаления. -
Ctrl+G/Ctrl+X Ctrl+E— открывает текущий буфер ввода в$EDITORдля многострочного ввода / составления длинных запросов; сохранение и выход отправляют содержимое обратно как запрос.
Slash commands
Все слэш-команды работают без изменений. Некоторые принадлежат TUI — они производят более богатый вывод или отображаются как оверлеи, а не встроенные панели:
| Command | Поведение TUI |
|---|---|
/help |
Оверлей с категоризированными командами, навигация стрелками |
/sessions |
Модальный выбор сессии — предпросмотр, название, итоги токенов, возобновление на месте |
/model |
Модальный выбор модели, сгруппированный по провайдеру, с подсказками о стоимости |
/skin |
Живой предпросмотр — смена темы применяется при просмотре |
/details |
Переключение подробных сведений о вызовах инструментов (глобально или по секциям) |
/usage |
Богатая панель токенов / стоимости / контекста |
/agents (alias /tasks) |
Оверлей наблюдаемости — живое дерево субагентов с контролями kill/pause, свёртки стоимости / токенов / файлов по ветвям, история по ходам |
/reload |
Перечитывает ~/.hermes/.env в работающий процесс TUI, чтобы вновь добавленные API-ключи вступили в силу без перезапуска |
/mouse |
Переключение отслеживания мыши вкл/выкл во время выполнения (также сохраняется в display.mouse_tracking в config.yaml) |
Все остальные слэш-команды (включая установленные навыки, быстрые команды и переключатели личности) работают идентично классическому CLI. См. Справочник слэш-команд.
LaTeX math rendering
Конвейер markdown TUI рендерит математику LaTeX инлайн: $E = mc^2$ и $$\frac{a}{b}$$ отображаются как математика в формате Unicode вместо исходного TeX. Работает для инлайн и блочной математики; неподдерживаемый синтаксис отображается как литеральный TeX, обёрнутый в code span, чтобы его можно было скопировать.
Это всегда включено — ничего не нужно настраивать. Классический 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.
Если вы хотите светлую тему постоянно, независимо от терминала:
export HERMES_TUI_THEME=light
Busy indicator styles
Индикатор занятости в строке состояния является подключаемым — по умолчанию палитра лиц Hermes вращается каждые 2,5 секунды во время работы агента. Выберите другой стиль через конфигурацию или слэш-команду /indicator:
display:
tui_status_indicator: kaomoji # kaomoji | emoji | unicode | ascii
Или в сессии: /indicator emoji (и т.д.). Стили поставляются с согласованными ширинами глифов, чтобы остальная часть строки состояния не дрожала при вращении.
Auto-resume
По умолчанию hermes --tui запускает новую сессию при каждом запуске. Чтобы автоматически подключаться к последней сессии TUI (полезно, когда ваш терминал или SSH-соединение неожиданно обрывается), включите эту опцию:
export HERMES_TUI_RESUME=1 # most-recent TUI session
# or:
export HERMES_TUI_RESUME=<session-id> # specific session
Отключите переменную или передайте --resume <id> явно для переопределения при каждом запуске.
Status line
Строка состояния TUI отслеживает состояние агента в реальном времени:
| Состояние | Значение |
|---|---|
starting agent… |
ID сессии активен; инструменты и навыки ещё подключаются. Вы можете вводить — сообщения ставятся в очередь и отправляются, когда всё готово.
|
ready |
Агент простаивает, принимает ввод.
|
thinking… / running… |
Агент рассуждает или выполняет инструмент.
|
interrupted |
Текущий ход был отменён; нажмите Enter, чтобы отправить снова.
|
forging session… / resuming… |
Начальное подключение или рукопожатие
Цвета и пороги строки состояния для каждого скина общие с классическим CLI — см. Скины для настройки.
Строка состояния также показывает:
-
Рабочая директория с веткой 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 специфически:
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: true # disable if your terminal conflicts with mouse reporting
Переключатели во время выполнения:
-
/details [hidden|collapsed|expanded|cycle]— установить глобальный режим -
/details <section> [hidden|collapsed|expanded|reset]— переопределить одну секцию (секции:thinking,tools,subagents,activity)
Видимость по умолчанию
TUI поставляется с установленными по умолчанию настройками для каждой секции, которые транслируют ход как живую транскрипцию, а не стену шевронов:
-
thinking— развёрнуто. Рассуждения транслируются инлайн по мере их генерации моделью. -
tools— развёрнуто. Вызовы инструментов и их результаты отображаются открыто. -
subagents— наследует глобальныйdetails_mode(свёрнут под шевроном по умолчанию — молчит, пока делегирование фактически не произойдёт). -
activity— скрыто. Окружающая метаинформация (подсказки шлюза, намеки на паритет терминалов, фоновые уведомления) является шумом для большинства повседневных задач. Сбои инструментов всё ещё отображаются инлайн в строке неудавшегося инструмента; окружающие ошибки/предупреждения выводятся через плавающую панель оповещений, когда все панели скрыты.
Переопределения для отдельных секций имеют приоритет над значениями по умолчанию секции и глобальным details_mode. Чтобы изменить макет:
-
display.sections.thinking: collapsed— вернуть рассуждения под шеврон -
display.sections.tools: collapsed— вернуть вызовы инструментов под шеврон -
display.sections.activity: collapsed— вернуть панель активности -
/details <section> <mode>во время выполнения
Всё, что явно задано в display.sections, имеет приоритет над значениями по умолчанию, поэтому существующие конфигурации продолжают работать без изменений.
Sessions
Сессии общие для TUI и классического CLI — оба пишут в ту же ~/.hermes/state.db. Вы можете начать сессию в одном интерфейсе и возобновить в другом. Выбор сессий показывает сессии из обоих источников с меткой источника.
См. Сессии для информации о жизненном цикле, поиске, сжатии и экспорте.
Reverting to the classic CLI
Запуск hermes (без --tui) использует классический CLI. Чтобы машина предпочитала TUI, установите HERMES_TUI=1 в профиле вашей оболочки. Чтобы вернуться обратно, отключите переменную.
Если TUI не удаётся запустить (нет Node, отсутствует пакет, проблема с TTY), Hermes выводит диагностику и переключается на классический CLI — вместо того чтобы оставить вас в затруднительном положении.
See also
-
CLI Interface — полный справочник слэш-команд и горячих клавиш (общий)
-
Сессии — возобновление, ветвление и история
-
Скины и темы — оформление баннера, строки состояния и оверлеев
-
Голосовой режим — работает в обоих интерфейсах
-
Конфигурация — все ключи конфигурации