ТУИ
TUI — это современный интерфейс для Hermes — пользовательский интерфейс терминала, поддерживаемый той же средой выполнения Python, что и Classic CLI. Тот же агент, те же сеансы, те же команды с косой чертой; более чистая и отзывчивая поверхность для взаимодействия с ними.
Это рекомендуемый способ запуска Hermes в интерактивном режиме.
Запуск
# Launch the TUI
hermes --tui
# Resume the latest TUI session (falls back to the latest classic session)
hermes --tui -c
hermes --tui --continue
hermes --tui --resume latest
# Resume a specific session by ID or title
hermes --tui -r 20260409_000000_aa11bb
hermes --tui --resume "my t0p session"
# Resume the latest session for a specific project directory
hermes --tui --resume latest --in./my-project
# Run source directly — skips the prebuild step (for TUI contributors)
hermes --tui --dev
Вы также можете включить его через env var:
export HERMES_TUI=1
hermes # now uses the TUI
hermes chat # same
Или сделайте его постоянным по умолчанию в ~/.hermes/config.yaml:
display:
interface: tui # "cli" (default) or "tui"
При использовании display.interface: tui пустой hermes (и hermeschat) запускает TUI. Явные флаги всегда побеждают — запустите hermes --cli, чтобы вернуться к классическому REPL для одного вызова, или hermes --tui / HERMES_TUI=1, чтобы принудительно использовать TUI, если в конфигурации по умолчанию используется cli.
Классический интерфейс командной строки остается по умолчанию. Все, что задокументировано в [Интерфейс CLI] (cli.md) — косые команды, быстрые команды, предварительная загрузка навыков, персональные настройки, многострочный ввод, прерывания — работает в TUI одинаково.
Почему TUI
- Мгновенный первый кадр — баннер отображается до завершения загрузки приложения, поэтому терминал никогда не зависает во время запуска Hermes.
- Неблокирующий ввод — вводите и ставьте сообщения в очередь до того, как сеанс будет готов. Ваше первое приглашение отправляется в тот момент, когда агент подключается к сети.
- Богатые наложения – средства выбора модели, средства выбора сеансов, запросы на утверждение и разъяснения отображаются в виде модальных панелей, а не в виде встроенных потоков.
- Панель сеансов в реальном времени — инструменты и навыки заполняются постепенно по мере их инициализации.
- Выбор, удобный для мыши — перетащите, чтобы выделить однородный фон вместо инверсного SGR. Скопируйте обычным жестом копирования вашего терминала.
- Рендеринг на альтернативном экране — дифференциальные обновления означают отсутствие мерцания при потоковой передаче и отсутствие помех при прокрутке после выхода.
- Возможности Composer — встроенная вставка-свертывание для длинных фрагментов, вставка текста
Cmd+V/Ctrl+Vс резервным копированием изображения в буфер обмена, безопасность вставки в квадратных скобках и нормализация вложений изображений/путей к файлам.
Применяются те же скины и личности. Переключитесь в середине сеанса с помощью /skin ares, /personality Pirate, и пользовательский интерфейс перерисовывается в реальном времени. См. Скины и темы для получения полного списка настраиваемых клавиш и того, какие из них применимы к классическому интерфейсу, а не к TUI — TUI учитывает палитру баннера, цвета пользовательского интерфейса, глиф/цвет подсказки, отображение сеанса, меню завершения, фон выбора, tool_prefix и help_header.
Сворачиваемые разделы баннеров
Баннер запуска TUI группирует информацию о времени выполнения в четыре сворачиваемых раздела, каждый из которых отображается с помощью шеврона ▸/▾ рядом с заголовком раздела:
| Раздел | Состояние по умолчанию |
|---|---|
| Инструменты | Открыть |
| Навыки | Свернутый |
| Системная подсказка | Свернутый |
| MCP-серверы | Свернутый |
Щелкните в любом месте заголовка раздела (или его шеврона), чтобы переключить его. Список «Инструменты» открывается по умолчанию, поскольку это наиболее проверяемый раздел при запуске сеанса; Навыки, системная подсказка и серверы MCP по умолчанию сворачиваются, поэтому баннер остается компактным, даже если вы установили десятки навыков или подключили множество серверов MCP. Состояние является локальным для экземпляра баннера, поэтому при следующем запуске сбрасываются значения по умолчанию.
Требования
- Node.js ≥ 20 — TUI запускается как подпроцесс, запускаемый из интерфейса командной строки Python. «Доктор Гермес» подтверждает это.
- TTY — как и в классическом интерфейсе командной строки, передача стандартного ввода или работа в неинтерактивных средах возвращаются в режим одного запроса.
При первом запуске Hermes устанавливает зависимости узла TUI в ui-tui/node_modules (один раз, несколько секунд). Последующие запуски происходят быстро. Если вы установите новую версию Hermes, пакет TUI будет пересобран автоматически, если исходные коды новее, чем dist.
💡 Tip
Работаете с рабочими деревьями git? Участники, которые запускаютhermes --tui --dev из многих рабочих деревьев, могут использовать один node_modules вместо установки для каждого оформления заказа — см. TUI и рабочий стол из Worktrees.Внешняя предварительная сборка
Дистрибутивы, поставляющие готовый пакет (Nix, системные пакеты), могут указать на него Hermes:
export HERMES_TUI_DIR=/path/to/prebuilt/ui-tui
hermes --tui
Каталог должен содержать dist/entry.js.
Сочетания клавиш
Привязки клавиш точно соответствуют Классическому 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для многострочной композиции/композиции с длинными подсказками; save-and-exit отправляет содержимое обратно в виде приглашения.
Слэш-команды
Все слэш-команды работают без изменений. Некоторые из них принадлежат TUI — они производят более насыщенный вывод или визуализируются в виде наложений, а не встроенных панелей:
| Команда | Поведение TUI |
|---|---|
/помощь |
Наложение с категоризированными командами, навигация с помощью клавиш со стрелками |
/sessions (псевдоним /switch) |
Переключатель сеансов в реальном времени — список открытых сеансов TUI, переключение между ними, закрытие их или запуск другого |
/модель |
Модальный выбор моделей, сгруппированный по поставщикам, с подсказками по стоимости |
/скин |
Предварительный просмотр в реальном времени — изменение темы применяется по мере просмотра |
/детали |
Toggle verbose tool-call details (global or per-section) |
/использование |
Расширенная панель токенов/стоимости/контекста |
/агенты (псевдоним /задачи) |
Наложение наблюдаемости — действующее дерево субагентов с элементами управления уничтожением/паузой, стоимостью каждой ветки/свертыванием токенов/файлов, пошаговой историей |
/перезагрузить |
Перечитывает ~/.hermes/.env в работающий процесс TUI, чтобы вновь добавленные ключи API вступили в силу без перезапуска |
/mouse [вкл\|выкл\|переключение\|колесо\|кнопки\|все] |
Выберите предустановку отслеживания мыши во время выполнения (также сохраняется в display.mouse_tracking в config.yaml). wheel (1000+1006) сохраняет прокрутку с помощью колеса прокрутки без событий наведения, которые вызывают спам tmux «Нет изображения в буфере обмена» над строкой подсказки; buttons добавляет перетаскивание для выбора; all является значением по умолчанию для пользовательского интерфейса, управляемого наведением курсора. |
Любая другая косая черта (включая установленные навыки, быстрые команды и переключение личности) работает идентично классическому интерфейсу командной строки. См. Справочник по слэш-командам.
Переключатель сеансов в реальном времени
Используйте переключатель живых сеансов, если вы хотите, чтобы один терминал выступал в качестве диспетчера для нескольких сеансов TUI. В нем перечислены только сеансы, которые в данный момент активны в этом процессе TUI; закрытые сеансы остаются сохраненными стенограммами и могут быть открыты повторно с помощью /resume или hermes --tui --resume <id-or-title>.
Откройте его любым из этих способов:
Ctrl+Xиз TUI./sessionsили/switch./sessions newдля немедленного создания нового живого сеанса.- Нажмите на счетчик «N живых сеансов» в строке состояния.

Внутри коммутатора:
↑/↓переместить выделение; щелчки мыши также выбирают строки.Enterпереключает на выбранный сеанс прямой трансляции.Ctrl+Dзакрывает выбранный сеанс прямой трансляции.Ctrl+Nstarts a blank live session.Ctrl+Rобновляет список живых сессий.Escзакрывает переключатель.- Выберите «+new», введите приглашение и нажмите «Enter», чтобы запустить новый сеанс в реальном времени. Сначала нажмите «Tab», если вы хотите выбрать модель только для этого нового сеанса.
Математический рендеринг LaTeX
Конвейер уценки TUI визуализирует математику LaTeX в строке: $E = mc^2$ и $$\frac{a}{b}$$ отображают как математические вычисления в формате Unicode, а не как необработанный исходный текст TeX. Работает для встроенной и блочной математики; неподдерживаемый синтаксис возвращается к отображению буквального TeX, завернутого в фрагмент кода, чтобы его можно было копировать.
Это всегда включено — ничего настраивать не нужно. Классический CLI сохраняет необработанный TeX.
Light-terminal detection
TUI автоматически обнаруживает световые терминалы и соответствующим образом переключается на светлую тему. Обнаружение работает на трех уровнях:
HERMES_TUI_THEMEenv var — высший приоритет. Значения: «светлый», «темный» или необработанный фоновый шестнадцатеричный код из 6 символов (например, «ffffff», «1a1a2e»).COLORFGBGenv var — классический вопрос «какой у меня цвет фона?» подсказка, используемая терминалами, производными от xterm.- Фоновая проверка терминала через OSC 11 — работает на современных терминалах (Ghostty, Warp, iTerm2, WezTerm, Kitty), которые не устанавливают
COLORFGBG.
Если вам нужна светлая тема постоянно независимо от терминала:
export HERMES_TUI_THEME=light
Стили индикатора занятости
Индикатор занятости в строке состояния является подключаемым — по умолчанию палитра лица Hermes в стиле каваи вращается каждые 2,5 секунды во время работы агента. Выберите другой стиль через конфигурацию или слеш-команду /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 отслеживает состояние агента в режиме реального времени:
После того, как сеансу присвоено имя, его название отображается в виде значка акцентного цвета в крайнем правом углу строки состояния. Заголовок занимает место метки рабочей области и обрезается на узких терминалах.
| Статус | Значение |
|---|---|
стартовый агент… |
Идентификатор сеанса активен; инструменты и навыки все еще появляются в Интернете. Вы можете ввести — сообщения в очереди и отправить, когда будете готовы. |
готов |
Агент простаивает, принимает вводимые данные. |
думаю… / бегу... |
Агент рассуждает или запускает инструмент. |
прерванный |
Текущий ход отменен; нажмите Enter, чтобы отправить еще раз. |
формирование сеанса… / возобновление… |
Первоначальное соединение или рукопожатие --resume. |
Цвета и пороговые значения строки состояния для каждого скина используются в классическом интерфейсе командной строки — см. Skins для настройки.
В строке состояния также отображается:
- Рабочий каталог с веткой git —
~/projects/hermes-agent (docs/two-week-gap-sweep). Суффикс ветки обновляется, когда вы выполняете команду git checkout на стороннем терминале (кэшированном по времени), поэтому TUI отражает вашу фактическую активную ветку, а не ту, которая была при запуске. - Прошедшее время для каждого запроса —
⏱ 12 с/3 мин 45 сво время хода (в реальном времени), замораживается до⏲ 32 с / 3 мин 45 спосле завершения хода. Первое число — время с момента последнего сообщения пользователя; во-вторых, общая продолжительность сеанса. Сбрасывается при каждом новом запросе. 🗜️ N— сколько раз текущий сеанс был автоматически сжат. Появляется после первого сжатия.▶ N— количество задач/background, запущенных в данный момент в этом сеансе. Появляется всякий раз, когда выполняется хотя бы одна задача.⚠ YOLO— видимое предупреждение всякий раз, когда включен режим YOLO (hermes --yolo,/yoloилиHERMES_YOLO_MODE=1). Тот же значок также отображается в баннере запуска, поэтому вы не можете запустить сеанс автоматического одобрения, не заметив этого.
Конфигурация
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: all # off | wheel | buttons | all (or true/false for back-compat).
# wheel — 1000+1006 (scroll + click; no drag, no hover —
# recommended inside tmux to silence the prompt-row
# "No image in clipboard" spam from hover events)
# buttons — adds 1002 for terminal-side drag selection
# all — adds 1003 for hover (scrollbar paginate-on-hover,
# link mouseenter, etc.)
Переключатели времени выполнения:
/details [hidden|collapsed|expanded|cycle]— установить глобальный режим/details <section> [hidden|collapsed|expanded|reset]— переопределить один раздел (разделы:мышление,инструменты,субагенты,деятельность)
Видимость по умолчанию
TUI поставляется с самоуверенными настройками по умолчанию для каждого раздела, которые транслируют ход как живая расшифровка вместо стены шевронов:
мышление— расширенное. Рассуждения передаются в реальном времени по мере того, как модель их генерирует.инструменты— расширено. Вызовы инструментов и их результаты отображаются открытыми.subagents— попадает в глобальныйdetails_mode(сворачивается под шеврон по умолчанию — молчит, пока делегирование не произойдет).активность— скрыта. Окружающая мета (подсказки о шлюзах, терминальная четность подсказки, фоновые уведомления) — это шум для большинства повседневного использования. Инструмент сбои по-прежнему отображаются в строке неисправного инструмента; окружающий ошибки/предупреждения отображаются через плавающую кнопку обратного хода, когда каждая панель скрыт.
Переопределения для каждого раздела имеют приоритет как над значением раздела по умолчанию, так и над значением по умолчанию.
глобальный details_mode. Чтобы изменить макет:
display.sections.thinking: свернуто— поместить мышление обратно под шевронdisplay.sections.tools: свернуто— поместить вызовы инструментов обратно под шеврон.display.sections.activity: свернуто— снова включить панель активности./details <раздел> <режим>во время выполнения
Все, что явно установлено в display.sections, имеет преимущество перед значениями по умолчанию, поэтому
существующие конфигурации продолжают работать без изменений.
сеансов
Сеансы разделяются между TUI и классическим CLI — оба пишут в один и тот же ~/.hermes/state.db. Вы можете начать сеанс в одном, возобновить в другом. Средство выбора сеанса отображает сеансы из обоих источников с помощью тега источника.
См. Сессии для получения информации о жизненном цикле, поиске, сжатии и экспорте.
Как TUI взаимодействует со своим шлюзом
По умолчанию TUI создает собственный внутрипроцессный шлюз, поэтому каждый экземпляр TUI является автономным — настраивать нечего.
Вы можете увидеть переменную окружения HERMES_TUI_GATEWAY_URL, на которую есть ссылка в базе кода или журналах. Это деталь внутренней проводки веб-панели, а не ручка дистанционного подключения, обращенная к пользователю. Когда вы открываете вкладку «Чат» на информационной панели («hermes Dashboard» → «/chat»), веб-сервер информационной панели порождает встроенный дочерний процесс TUI и внедряет HERMES_TUI_GATEWAY_URL, чтобы дочерний элемент прикреплялся к собственному внутрипроцессному «tui_gateway» информационной панели через петлевой WebSocket (/api/ws). Конечная точка /api/ws существует только внутри сервера информационной панели (hermes_cli/web_server.py) и привязана к времени жизни и авторизации этого процесса.
Не существует общего режима «направьте любой TUI на любой порт автономного шлюза». В частности, OpenAI-совместимый сервер API (шлюз Hermes / платформа api_server) не обслуживает /api/ws — это поверхность бэкенда модели (/v1/chat/completions, /v1/models, …) и намеренно не раскрывает канал управления JSON-RPC TUI. Установка HERMES_TUI_GATEWAY_URL для этого порта приведет к ошибке 404.
Если вы хотите, чтобы несколько поверхностей использовали один набор сеансов, используйте общий ~/.hermes/state.db (см. Сессии) или встроенный чат веб-панели (см. Веб-панель) — а не заданный вручную URL-адрес шлюза.
Возврат к классическому интерфейсу командной строки
Запуск «hermes» (без «--tui») по умолчанию остается в классическом интерфейсе командной строки. Чтобы машина предпочитала TUI, установите display.interface: tui в ~/.hermes/config.yaml (постоянно) или HERMES_TUI=1 в профиле вашей оболочки (для каждой оболочки). Чтобы вернуться назад, установите interface: cli / отключите переменную env или передайте hermes --cli для одноразового использования.
Если TUI не запускается (нет узла, отсутствует пакет, проблема с телетайпом), Hermes распечатывает диагностическое сообщение и отступает — вместо того, чтобы оставить вас в тупике.
См. также
- Интерфейс CLI — полная косая черта и справочник по привязке клавиш (общий)
- Сессии — резюме, ветка и история
- Скины и темы — тема для баннера, строки состояния и наложений.
- Голосовой режим — работает в обоих интерфейсах
- Конфигурация — все ключи конфигурации