Интерфейс CLI

CLI у Hermes Agent — это полноценный терминальный интерфейс (TUI), а не веб-морда. Здесь есть многострочное редактирование, автодополнение слэш-команд, история переписки, прерывание с перенаправлением и потоковый вывод инструментов. Сделано для тех, кто живёт в терминале.

совет
Первый запуск

Одна команда — hermes setup --portal — и можно сразу набирать hermes chat. Подробнее в разделе Nous Portal.

совет

У Hermes есть и современный TUI с модальными оверлеями, выделением мышью и неблокирующим вводом. Запускается через hermes --tui — см. руководство по TUI.

Запуск CLI

# Запуск интерактивной сессии (по умолчанию)
hermes

# Режим одного запроса (неинтерактивный)
hermes chat -q "Hello"

# С конкретной моделью
hermes chat --model "anthropic/claude-sonnet-4"

# С конкретным провайдером
hermes chat --provider nous        # Использовать Nous Portal
hermes chat --provider openrouter  # Принудительно OpenRouter

# С конкретными наборами инструментов
hermes chat --toolsets "web,terminal,skills"

# Старт с одним или несколькими предзагруженными навыками
hermes -s hermes-agent-dev,github-auth
hermes chat -s github-pr-workflow -q "open a draft PR"

# Возобновление прошлых сессий
hermes --continue             # Возобновить последнюю CLI-сессию (-c)
hermes --resume <session_id>  # Возобновить конкретную сессию по ID (-r)

# Подробный режим (отладочный вывод)
hermes chat --verbose

# Изолированный git worktree (чтобы гонять несколько агентов параллельно)
hermes -w                         # Интерактивный режим в worktree
hermes -w -z "Fix issue #123"     # Одиночный запрос в worktree

Раскладка интерфейса

Stylized preview of the Hermes CLI layout showing the banner, conversation area, and fixed input prompt.

Баннер Hermes CLI, поток переписки и закреплённое поле ввода — отрисованы как стабильная иллюстрация в документации, а не как хрупкий текстовый арт.

Приветственный баннер сразу показывает вашу модель, бэкенд терминала, рабочую директорию, доступные инструменты и установленные навыки.

Строка состояния

Над полем ввода держится постоянная строка состояния, которая обновляется в реальном времени:

 ⚕ claude-sonnet-4-20250514 │ 12.4K/200K │ [██████░░░░] 6% │ $0.06 │ 15m
ЭлементОписание
Название моделиТекущая модель (обрезается, если длиннее 26 символов)
Счётчик токеновИспользованные токены контекста / максимальное окно контекста
Шкала контекстаВизуальный индикатор заполнения с цветовыми порогами
СтоимостьОценочная цена сессии (или n/a для неизвестных и бесплатных моделей)
🗜️ NСчётчик сжатий контекста — сколько раз текущая сессия автоматически сжималась. Появляется после первого срабатывания сжатия.
▶ NАктивные фоновые задачи — сколько промптов /background ещё выполняется в текущей сессии. Показывается, пока в работе хотя бы одна задача.
ДлительностьПрошедшее время сессии
⚠ YOLOПредупреждение о режиме YOLO — горит, когда включён HERMES_YOLO_MODE (через hermes --yolo при запуске или /yolo посреди сессии). Дублирует предупреждение в строке баннера, чтобы вы точно не забыли про режим авто-одобрения.

Строка подстраивается под ширину терминала: полная раскладка при ≥ 76 колонок, компактная при 52–75, минимальная (модель + длительность, плюс значок YOLO, когда он активен) ниже 52.

Цветовая кодировка контекста:

ЦветПорогЧто означает
Зелёный< 50%Места ещё полно
Жёлтый50–80%Постепенно заполняется
Оранжевый80–95%Подбираемся к лимиту
Красный≥ 95%Почти переполнение — подумайте про /compress

Команда /usage даёт детальную разбивку, включая стоимость по категориям (входные токены против выходных).

Отображение возобновления сессии

При возобновлении прошлой сессии (hermes -c или hermes --resume <id>) между баннером и полем ввода появляется панель «Previous Conversation» с компактным пересказом истории. Детали и настройка описаны в разделе Сессии — пересказ переписки при возобновлении.

Горячие клавиши

КлавишаДействие
EnterОтправить сообщение
Alt+Enter, Ctrl+J или Shift+EnterНовая строка (многострочный ввод). Shift+Enter требует терминала, который отличает её от Enter — см. ниже. В Windows Terminal Alt+Enter перехватывается самим терминалом (переключение полноэкранного режима); используйте Ctrl+Enter или Ctrl+J.
Alt+VВставить изображение из буфера обмена, если терминал это поддерживает
Ctrl+VВставить текст и при возможности прихватить изображения из буфера
Ctrl+BСтарт/стоп записи голоса, когда включён голосовой режим (voice.record_key, по умолчанию: ctrl+b)
Ctrl+GОткрыть текущий буфер ввода в $EDITOR (vim/nvim/nano/VS Code и т. д.). Сохраните и выйдите — отредактированный текст уйдёт как следующий промпт. Удобно для длинных промптов в несколько абзацев.
Ctrl+X Ctrl+EАльтернативная привязка во вкусе Emacs для внешнего редактора (поведение то же, что у Ctrl+G).
Ctrl+CПрервать агента (двойное нажатие в течение 2 с принудительно завершает работу)
Ctrl+DВыход
Ctrl+ZСвернуть Hermes в фон (только Unix). Чтобы вернуть — наберите fg в оболочке.
TabПринять автоподсказку (призрачный текст) или автодополнить слэш-команду

Превью многострочной вставки. Когда вы вставляете многострочный блок, CLI выводит компактное однострочное превью ([pasted: 47 lines, 1,842 chars — press Enter to send]), а не вываливает весь текст в скроллбэк. Отправляется при этом полное содержимое — превью нужно только для аккуратного вида.

Удаление markdown в финальных ответах. В финальных репликах агента CLI вырезает самые шумные блоки markdown и обёртки **bold** / *italic*, чтобы текст читался как нормальная терминальная проза, а не как сырой исходник. Блоки кода и списки сохраняются. На платформы-шлюзы и результаты инструментов это не распространяется — там markdown остаётся для родного рендеринга.

Слэш-команды

Наберите /, чтобы открыть выпадающий список автодополнения. Hermes поддерживает большой набор CLI-команд через слэш, динамические команды навыков и пользовательские быстрые команды.

Частые примеры:

КомандаОписание
/helpПоказать справку по командам
/modelПоказать или сменить текущую модель
/toolsПеречислить доступные сейчас инструменты
/skills browseПросмотреть хаб навыков и официальные опциональные навыки
/background <prompt>Запустить промпт в отдельной фоновой сессии
/skinПоказать или переключить активную тему CLI
/voice onВключить голосовой режим CLI (нажмите Ctrl+B для записи)
/voice ttsПереключить озвучку ответов Hermes
/reasoning highПовысить усилие рассуждения
/title My SessionДать имя текущей сессии
/statusПоказать сведения о сессии — модель/профиль/токены/длительность — а следом локальный блок Session recap (счётчики последних ходов, самые частые инструменты, затронутые файлы, последний промпт пользователя и ответ ассистента). Считается локально, без обращения к LLM.
/sessionsОткрыть интерактивный выбор сессий прямо в классическом CLI (тот же экран, что и в TUI). Набирайте для фильтрации, стрелки для навигации, Enter для возобновления.

Полные списки встроенных CLI- и messaging-команд смотрите в Справочнике по слэш-командам.

Про настройку, провайдеров, тонкую подстройку тишины и голос в messaging/Discord читайте в разделе Голосовой режим.

совет

Регистр в командах не важен — /HELP работает так же, как /help. Установленные навыки тоже автоматически становятся слэш-командами.

Быстрые команды

Можно завести собственные команды, которые мгновенно выполняют shell-команды без обращения к LLM. Работают и в CLI, и на платформах messaging (Telegram, Discord и т. д.).

# ~/.hermes/config.yaml
quick_commands:
  status:
    type: exec
    command: systemctl status hermes-agent
  gpu:
    type: exec
    command: nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv,noheader
  restart:
    type: alias
    target: /gateway restart

После этого в любом чате доступны /status, /gpu или /restart. Больше примеров — в руководстве по конфигурации.

Предзагрузка навыков при старте

Если вы заранее знаете, какие навыки нужны для сессии, передайте их прямо при запуске:

hermes -s hermes-agent-dev,github-auth
hermes chat -s github-pr-workflow -s github-auth

Hermes подгружает каждый указанный навык в промпт сессии ещё до первого хода. Флаг работает одинаково и в интерактивном режиме, и в режиме одного запроса.

Слэш-команды навыков

Каждый навык, установленный в ~/.hermes/skills/, автоматически регистрируется как слэш-команда. Командой становится имя навыка:

/gif-search funny cats
/axolotl help me fine-tune Llama 3 on my dataset
/github-pr-workflow create a PR for the auth refactor

# Просто имя навыка загружает его, и агент сам спросит, что вам нужно:
/excalidraw

Личности

Задайте готовую личность, чтобы поменять тон агента:

/personality pirate
/personality kawaii
/personality concise

Встроенные личности: helpful, concise, technical, creative, teacher, kawaii, catgirl, pirate, shakespeare, surfer, noir, uwu, philosopher, hype.

Свои личности тоже можно описать в ~/.hermes/config.yaml:

personalities:
  helpful: "You are a helpful, friendly AI assistant."
  kawaii: "You are a kawaii assistant! Use cute expressions..."
  pirate: "Arrr! Ye be talkin' to Captain Hermes..."
  # Add your own!

Многострочный ввод

Ввести многострочное сообщение можно двумя способами:

  1. Alt+Enter, Ctrl+J или Shift+Enter — вставляют новую строку
  2. Продолжение через обратный слэш — завершите строку символом \, чтобы продолжить:
❯ Write a function that:\
  1. Takes a list of numbers\
  2. Returns the sum
инфо

Вставка многострочного текста поддерживается — нажмите любую из клавиш для переноса строки выше или просто вставьте содержимое напрямую.

Совместимость с Shift+Enter

Большинство терминалов по умолчанию шлют одинаковую байтовую последовательность для Enter и Shift+Enter, поэтому приложения их не различают. Hermes распознаёт Shift+Enter только тогда, когда терминал отправляет отдельную последовательность через клавиатурный протокол Kitty или режим modifyOtherKeys от xterm.

ТерминалСтатус
Kitty, foot, WezTerm, GhosttyОтдельный Shift+Enter включён по умолчанию
iTerm2 (свежий), Alacritty, терминал VS Code, WarpПоддерживается после включения протокола Kitty в настройках
Windows Terminal Preview 1.25+Поддерживается после включения протокола Kitty в настройках
macOS Terminal.app, штатный Windows Terminal (stable)Не поддерживается — Shift+Enter неотличим от Enter

Там, где терминал их не различает, Alt+Enter и Ctrl+J работают везде. Отдельно про Windows Terminal: Alt+Enter перехватывается терминалом (переключает полноэкранный режим) и до Hermes не доходит — для переноса строки используйте Ctrl+Enter (он приходит как Ctrl+J) или сразу Ctrl+J.

Прерывание агента

Прервать агента можно в любой момент:

  • Наберите новое сообщение и нажмите Enter, пока агент работает — он прервётся и обработает новые инструкции
  • Ctrl+C — прервать текущую операцию (нажмите дважды за 2 с, чтобы принудительно выйти)
  • Запущенные терминальные команды убиваются немедленно (SIGTERM, затем SIGKILL через 1 с)
  • Несколько сообщений, набранных во время прерывания, склеиваются в один промпт

Режим ввода при занятом агенте

Ключ конфигурации display.busy_input_mode задаёт, что произойдёт, если нажать Enter, пока агент работает:

РежимПоведение
"interrupt" (по умолчанию)Ваше сообщение прерывает текущую операцию и обрабатывается сразу
"queue"Сообщение молча уходит в очередь и отправляется следующим ходом, когда агент закончит
"steer"Сообщение вливается в текущий запуск через /steer и доходит до агента после следующего вызова инструмента — без прерывания и без нового хода
# ~/.hermes/config.yaml
display:
  busy_input_mode: "steer"   # или "queue", или "interrupt" (по умолчанию)

Режим "queue" пригодится, когда хочется подготовить уточняющие сообщения и не оборвать случайно работу на лету. Режим "steer" хорош, когда нужно перенаправить агента посреди задачи без прерывания — например, бросить «actually, also check the tests», пока он ещё правит код. Неизвестные значения откатываются к "interrupt".

У "steer" есть два автоматических запасных хода: если агент ещё не начал работу или если прикреплены изображения, сообщение откатывается к поведению "queue", чтобы ничего не потерялось.

Переключить режим можно и прямо в CLI:

/busy queue
/busy steer
/busy interrupt
/busy status
совет
Подсказка с первого раза

В самый первый раз, когда вы нажмёте Enter во время работы Hermes, он выведет однострочное напоминание про ручку /busy ("(tip) Your message interrupted the current run…"). Срабатывает один раз на установку — флаг в config.yaml под onboarding.seen.busy_input_prompt фиксирует это. Удалите ключ, чтобы увидеть подсказку снова.

Сворачивание в фон

На Unix-системах нажмите Ctrl+Z, чтобы свернуть Hermes в фон — как любой другой терминальный процесс. Оболочка напечатает подтверждение:

Hermes Agent has been suspended. Run `fg` to bring Hermes Agent back.

Наберите fg в оболочке — и сессия возобновится ровно с того места, где вы остановились. На Windows это не работает.

Отображение прогресса инструментов

CLI показывает анимированную обратную связь, пока агент работает:

Анимация размышления (во время вызовов API):

  ◜ (。•́︿•̀。) pondering... (1.2s)
  ◠ (⊙_⊙) contemplating... (2.4s)
  ✧٩(ˊᗜˋ*)و✧ got it! (3.1s)

Лента выполнения инструментов:

  ┊ 💻 terminal `ls -la` (0.3s)
  ┊ 🔍 web_search (1.2s)
  ┊ 📄 web_extract (2.1s)

Режимы отображения перебираются командой /verbose: off → new → all → verbose. Эту команду можно включить и для платформ messaging — см. конфигурацию.

Длина превью инструмента

Ключ display.tool_preview_length задаёт максимальное число символов в строках превью вызова инструмента (например, пути к файлам, терминальные команды). Значение по умолчанию — 0, то есть без ограничения: пути и команды показываются целиком.

# ~/.hermes/config.yaml
display:
  tool_preview_length: 80   # Обрезать превью инструментов до 80 символов (0 = без лимита)

Удобно на узких терминалах или когда в аргументах инструмента попадаются очень длинные пути к файлам.

Управление сессиями

Возобновление сессий

Когда вы выходите из CLI-сессии, выводится команда для её возобновления:

Resume this session with:
  hermes --resume 20260225_143052_a1b2c3

Session:        20260225_143052_a1b2c3
Duration:       12m 34s
Messages:       28 (5 user, 18 tool calls)

Варианты возобновления:

hermes --continue                          # Возобновить последнюю CLI-сессию
hermes -c                                  # Короткая форма
hermes -c "my project"                     # Возобновить именованную сессию (последнюю в линии)
hermes --resume 20260225_143052_a1b2c3     # Возобновить конкретную сессию по ID
hermes --resume "refactoring auth"         # Возобновить по заголовку
hermes -r 20260225_143052_a1b2c3           # Короткая форма

Возобновление восстанавливает всю историю переписки из SQLite. Агент видит все прошлые сообщения, вызовы инструментов и ответы — будто вы и не уходили.

Чтобы дать имя текущей сессии, наберите внутри чата /title My Session Name либо из командной строки выполните hermes sessions rename <id> <title>. Список прошлых сессий открывается через hermes sessions list.

Хранение сессий

CLI-сессии лежат в SQLite-базе состояния Hermes по пути ~/.hermes/state.db. База хранит:

  • метаданные сессии (ID, заголовок, временные метки, счётчики токенов)
  • историю сообщений
  • родословную между сжатыми и возобновлёнными сессиями
  • индексы полнотекстового поиска, которые использует session_search

Некоторые адаптеры messaging вдобавок держат рядом с базой пофайловые транскрипты для каждой платформы, но сам CLI возобновляется из SQLite-хранилища сессий.

Сжатие контекста

Длинные диалоги автоматически сворачиваются в сводку, когда приближаются к пределу контекста:

# В ~/.hermes/config.yaml
compression:
  enabled: true
  threshold: 0.50    # Сжимать при 50% лимита контекста (по умолчанию)

# Модель для суммаризации настраивается под auxiliary:
auxiliary:
  compression:
    model: ""  # Оставьте пустым, чтобы взять основную чат-модель (по умолчанию). Или закрепите дешёвую быструю модель, например "google/gemini-3-flash-preview".

Когда сжатие срабатывает, средние ходы сворачиваются в сводку, а первые 3 и последние 20 ходов сохраняются всегда.

Фоновые сессии

Запустите промпт в отдельной фоновой сессии и продолжайте пользоваться CLI для другой работы:

/background Analyze the logs in /var/log and summarize any errors from today

Hermes тут же подтверждает задачу и возвращает вам управление:

🔄 Background task #1 started: "Analyze the logs in /var/log and summarize..."
   Task ID: bg_143022_a1b2c3

Как это устроено

Каждый промпт /background порождает полностью отдельную сессию агента в демон-потоке:

  • Изолированный диалог — фоновый агент ничего не знает об истории вашей текущей сессии. Он получает только тот промпт, что вы дали.
  • Та же конфигурация — фоновый агент наследует от текущей сессии вашу модель, провайдера, наборы инструментов, настройки рассуждения и запасную модель.
  • Без блокировки — основная сессия остаётся полностью интерактивной. Можно общаться, выполнять команды и даже запускать новые фоновые задачи.
  • Несколько задач — фоновых задач можно держать сразу несколько. У каждой свой нумерованный ID.

Результаты

Когда фоновая задача завершается, результат приходит панелью в ваш терминал:

╭─ ⚕ Hermes (background #1) ──────────────────────────────────╮
│ Found 3 errors in syslog from today:                         │
│ 1. OOM killer invoked at 03:22 — killed process nginx        │
│ 2. Disk I/O error on /dev/sda1 at 07:15                      │
│ 3. Failed SSH login attempts from 192.168.1.50 at 14:30      │
╰──────────────────────────────────────────────────────────────╯

Если задача провалится, вы увидите уведомление об ошибке. А когда в конфиге включён display.bell_on_complete, по завершении задачи звенит терминальный звонок.

Сценарии использования

  • Долгие исследования — «/background research the latest developments in quantum error correction», пока вы работаете над кодом
  • Обработка файлов — «/background analyze all Python files in this repo and list any security issues», пока вы продолжаете диалог
  • Параллельные расследования — запустите несколько фоновых задач, чтобы одновременно копать в разных направлениях
инфо

Фоновые сессии не попадают в вашу основную историю переписки. Это самостоятельные сессии со своим ID задачи (например, bg_143022_a1b2c3).

Тихий режим

По умолчанию CLI работает в тихом режиме, который:

  • глушит подробное логирование инструментов
  • включает kawaii-анимацию обратной связи
  • держит вывод чистым и дружелюбным

Для отладочного вывода:

hermes chat --verbose
ESC