Перейти к содержимому

TUI — это современный интерфейс Hermes: терминальный UI, работающий на том же Python-рантайме, что и классический CLI. Тот же агент, те же сессии и те же slash-команды, но в более чистой и отзывчивой оболочке.

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

Окно терминала
# Запустить TUI
hermes --tui
# Продолжить последнюю TUI-сессию
# Если её нет, будет использована последняя классическая сессия
hermes --tui -c
hermes --tui --continue
# Продолжить конкретную сессию по ID или заголовку
hermes --tui -r 20260409_000000_aa11bb
hermes --tui --resume "my t0p session"
# Запустить исходники напрямую, без шага prebuild
hermes --tui --dev

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

Окно терминала
export HERMES_TUI=1
hermes # теперь использует TUI
hermes chat # тоже

Классический CLI по-прежнему доступен по умолчанию. Всё, что описано в интерфейсе CLI — slash-команды, быстрые команды, предзагрузка навыков, персональности, многострочный ввод и прерывания — в 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.

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

Окно терминала
export HERMES_TUI_DIR=/path/to/prebuilt/ui-tui
hermes --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-команды работают без изменений. Некоторые из них принадлежат самому 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-командам.

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

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

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

  1. Переменная окружения HERMES_TUI_THEME — наивысший приоритет. Значения: light, dark или необработанный 6-символьный hex фона (например, ffffff, 1a1a2e).
  2. Переменная окружения COLORFGBG — классическая подсказка «какой у меня цвет фона?» для терминалов на базе xterm.
  3. Проверка фона терминала через 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. Вы можете начать сессию в одном и продолжить в другом. Средство выбора сессий показывает сессии из обоих источников с тегом источника.

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

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

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

  • Интерфейс CLI — полный справочник по slash-командам и привязкам клавиш (общий)
  • Сессии — продолжение, ветвление и история
  • Skins & Themes — оформление баннера, строки состояния и оверлеев
  • Voice Mode — работает в обоих интерфейсах
  • Configuration — все ключи конфигурации