TUI
TUI — это современный интерфейс Hermes: терминальный UI, работающий на том же Python-рантайме, что и классический CLI. Тот же агент, те же сессии и те же slash-команды, но в более чистой и отзывчивой оболочке.
Это рекомендуемый способ интерактивного запуска Hermes.
# Запустить TUIhermes --tui
# Продолжить последнюю TUI-сессию# Если её нет, будет использована последняя классическая сессияhermes --tui -chermes --tui --continue
# Продолжить конкретную сессию по ID или заголовкуhermes --tui -r 20260409_000000_aa11bbhermes --tui --resume "my t0p session"
# Запустить исходники напрямую, без шага prebuildhermes --tui --devТакже можно включить TUI через переменную окружения:
export HERMES_TUI=1hermes # теперь использует TUIhermes chat # тожеКлассический CLI по-прежнему доступен по умолчанию. Всё, что описано в интерфейсе CLI — slash-команды, быстрые команды, предзагрузка навыков, персональности, многострочный ввод и прерывания — в TUI работает так же.
Почему TUI
Заголовок раздела «Почему TUI»- Мгновенный первый кадр — баннер отображается до завершения загрузки приложения, поэтому терминал никогда не кажется зависшим во время запуска Hermes.
- Неблокирующий ввод — вводите и ставьте сообщения в очередь ещё до готовности сессии. Ваш первый prompt отправится в тот момент, когда агент выйдет в online.
- Богатые overlays — выбор модели, выбор сессии, запросы на подтверждение и уточнение отображаются как модальные панели, а не встроенные потоки.
- Панель сессии в реальном времени — инструменты и навыки заполняются постепенно по мере инициализации.
- Удобное выделение мышью — можно протянуть курсор и получить ровный фон выделения вместо SGR-inverse. Копирование остаётся обычным жестом терминала.
- Отрисовка в alternate screen — потоковый вывод идёт без мерцания, а после выхода в scrollback не остаётся лишнего шума.
- Удобный composer — есть сворачивание длинных вставок, вставка текста через
Cmd+V/Ctrl+Vс резервным чтением буфера обмена, безопасная обработка bracketed paste и нормализация вложений по изображению или пути к файлу.
Здесь работают те же скины и персональности. Их можно переключать прямо в сессии через /skin ares и /personality pirate, и интерфейс тут же перерисуется. Полный список настраиваемых ключей и различия между классическим CLI и TUI см. в разделе Skins & Themes. TUI учитывает палитру баннера, цвета интерфейса, глиф и цвет приглашения, отображение сессии, меню автодополнения, фон выделения, tool_prefix и help_header.
Требования
Заголовок раздела «Требования»- Node.js ≥ 20 — TUI запускается как подпроцесс из Python CLI.
hermes doctorпроверяет это. - TTY — как и в classic CLI, при передаче stdin через pipe или запуске в неинтерактивной среде используется режим одного запроса.
При первом запуске Hermes устанавливает Node-зависимости TUI в ui-tui/node_modules (один раз, несколько секунд). Последующие запуски быстрые. Если вы скачаете новую версию Hermes, bundle TUI будет автоматически пересобран, когда исходники новее, чем dist.
Внешний prebuild
Заголовок раздела «Внешний prebuild»Дистрибутивы, поставляющие prebuilt bundle (Nix, системные пакеты), могут указать Hermes на него:
export HERMES_TUI_DIR=/path/to/prebuilt/ui-tuihermes --tuiКаталог должен содержать dist/entry.js и актуальный node_modules.
Комбинации клавиш
Заголовок раздела «Комбинации клавиш»Комбинации клавиш точно совпадают с Classic CLI. Единственные различия в поведении:
- Перетаскивание мышью выделяет текст с единым фоном выделения.
Cmd+V/Ctrl+Vсначала пытается выполнить обычную вставку текста, затем переключается на чтение буфера обмена через OSC52/native clipboard, и в конце — на прикрепление изображения, если буфер обмена или вставленные данные распознаются как изображение./terminal-setupустанавливает локальные terminal bindings для VS Code / Cursor / Windsurf для лучшего соответствияCmd+Enterи undo/redo на macOS.- Автодополнение slash-команд открывается как плавающая панель с описаниями, а не как встроенный выпадающий список.
Ctrl+X— когда выделено сообщение в очереди (отправленное, пока агент ещё работал), удаляет его из очереди.Escотменяет редактирование и снимает выделение без удаления.Ctrl+G/Ctrl+X Ctrl+E— открывает текущий буфер ввода в$EDITORдля составления многострочных / длинных prompt; после сохранения и выхода содержимое отправляется обратно как prompt.
Slash-команды
Заголовок раздела «Slash-команды»Все slash-команды работают без изменений. Некоторые из них принадлежат самому TUI: они либо показывают более богатый вывод, либо рендерятся как оверлеи, а не как встроенные панели.
| Команда | Поведение TUI |
|---|---|
/help | Оверлей с командами по категориям, навигация стрелками |
/sessions | Модальное окно выбора сессии — предварительный просмотр, заголовок, общее число токенов, возобновление встроенно |
/model | Модальное окно выбора модели, сгруппированное по провайдерам, с подсказками по стоимости |
/skin | Предварительный просмотр в реальном времени — смена темы применяется по мере просмотра |
/details | Переключает подробные сведения о вызовах инструментов (глобально или для отдельного раздела) |
/usage | Насыщенная панель токенов / стоимости / контекста |
/agents (алиас /tasks) | Оверлей наблюдаемости — живое дерево subagent с элементами управления kill/pause, сводки по стоимости / токенам / файлам для каждой ветви, история по ходам |
/reload | Повторно считывает ~/.hermes/.env в выполняющийся процесс TUI, чтобы новые ключи API вступили в силу без перезапуска |
/mouse | Переключает отслеживание мыши on/off во время выполнения (также сохраняется в display.mouse_tracking в config.yaml) |
Все остальные slash-команды (включая установленные навыки, быстрые команды и переключатели personality) работают так же, как в классическом CLI. См. Справочник по slash-командам.
Рендеринг математики LaTeX
Заголовок раздела «Рендеринг математики LaTeX»Markdown-конвейер TUI отображает математику LaTeX прямо в тексте: $E = mc^2$ и $$\frac{a}{b}$$ рендерятся как математические выражения в формате Unicode, а не как исходный TeX. Работает для встроенной и блочной математики; неподдерживаемый синтаксис возвращается к отображению буквального TeX, обёрнутого в code span, чтобы его можно было копировать.
Это всегда включено — ничего настраивать не нужно. Классический CLI сохраняет исходный TeX.
Определение светлого терминала
Заголовок раздела «Определение светлого терминала»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Стили индикатора занятости
Заголовок раздела «Стили индикатора занятости»Индикатор занятости в строке состояния можно подключать — по умолчанию он вращает палитру kawaii-лиц Hermes каждые 2,5 секунды во время работы агента. Выберите другой стиль через config или slash-команду /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 отслеживает состояние агента в реальном времени:
| Статус | Значение |
|---|---|
starting agent… | ID сессии активен; инструменты и навыки все еще подключаются. Вы можете печатать — сообщения ставятся в очередь и отправляются, когда все будет готово. |
ready | Агент простаивает и принимает ввод. |
thinking… / running… | Агент рассуждает или запускает инструмент. |
interrupted | Текущий ход был отменен; нажмите Enter, чтобы отправить снова. |
forging session… / resuming… | Начальное подключение или handshake --resume. |
Цвета и пороги строки состояния для каждой темы общие с классическим CLI — см. Скины для настройки.
Строка состояния также показывает:
- Рабочий каталог с веткой git —
~/projects/hermes-agent (docs/two-week-gap-sweep). Суффикс ветки обновляется, когда вы делаетеgit checkoutв соседнем терминале (с кэшированием по mtime), поэтому TUI отражает вашу фактически активную ветку, а не ту, которая была при запуске. - Прошедшее время для каждого prompt —
⏱ 12s/3m 45sво время выполнения хода (в реальном времени), фиксируется на⏲ 32s / 3m 45sпосле завершения хода. Первое число — время с момента последнего сообщения пользователя; второе — общая длительность сессии. Сбрасывается при каждом новом prompt.
Конфигурация
Заголовок раздела «Конфигурация»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— скрыт. Фоновая метаинформация (подсказки gateway, подсказки для паритета с терминалом, фоновые уведомления) — это шум для большинства повседневных сценариев. Сбои инструментов по-прежнему отображаются прямо в строке сбойного инструмента; фоновые errors/warnings выводятся через резервный плавающий alert, когда все панели скрыты.
Переопределения для отдельных разделов имеют приоритет и над значением по умолчанию для раздела, и над
глобальным details_mode. Чтобы изменить макет:
display.sections.thinking: collapsed— снова поместить рассуждения под шевронdisplay.sections.tools: collapsed— снова поместить вызовы инструментов под шевронdisplay.sections.activity: collapsed— снова включить панель активности/details <section> <mode>во время выполнения
Всё, что явно задано в display.sections, имеет приоритет над значениями по умолчанию, поэтому существующие конфигурации продолжают работать без изменений.
Сессии общие для TUI и классического CLI — оба записывают в один и тот же ~/.hermes/state.db. Вы можете начать сессию в одном и продолжить в другом. Средство выбора сессий показывает сессии из обоих источников с тегом источника.
См. Сессии для сведений о жизненном цикле, поиске, сжатии и экспорте.
Возврат к классическому CLI
Заголовок раздела «Возврат к классическому CLI»Запуск hermes (без --tui) оставляет вас на классическом CLI. Чтобы машина предпочитала TUI, задайте HERMES_TUI=1 в профиле вашей shell. Чтобы вернуться обратно, снимите эту переменную.
Если TUI не удается запустить (нет Node, отсутствует bundle, проблема с TTY), Hermes выводит диагностику и выполняет откат — вместо того чтобы оставить вас заблокированными.
См. также
Заголовок раздела «См. также»- Интерфейс CLI — полный справочник по slash-командам и привязкам клавиш (общий)
- Сессии — продолжение, ветвление и история
- Skins & Themes — оформление баннера, строки состояния и оверлеев
- Voice Mode — работает в обоих интерфейсах
- Configuration — все ключи конфигурации