CLI Интерфейс

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

Hermes также поставляется с современным TUI с модальными оверлеями, выделением мышью и неблокирующим вводом. Запустите его через `hermes --tui` — см. руководство по [TUI](tui.md).

Запуск CLI

# Start an interactive session (default)
hermes

# Single query mode (non-interactive)
hermes chat -q "Hello"

# With a specific model
hermes chat --model "anthropic/claude-sonnet-4"

# With a specific provider
hermes chat --provider nous        # Use Nous Portal
hermes chat --provider openrouter  # Force OpenRouter

# With specific toolsets
hermes chat --toolsets "web,terminal,skills"

# Start with one or more skills preloaded
hermes -s hermes-agent-dev,github-auth
hermes chat -s github-pr-workflow -q "open a draft PR"

# Resume previous sessions
hermes --continue             # Resume the most recent CLI session (-c)
hermes --resume <session_id>  # Resume a specific session by ID (-r)

# Verbose mode (debug output)
hermes chat --verbose

# Isolated git worktree (for running multiple agents in parallel)
hermes -w                         # Interactive mode in worktree
hermes -w -q "Fix issue #123"     # Single query in worktree

Макет интерфейса

Стилизованный предпросмотр макета Hermes CLI с баннером, областью диалога и фиксированной строкой ввода.

Баннер Hermes CLI, поток диалога и фиксированная строка ввода, отображаемые в виде стабильного изображения в документации вместо хрупкого текстового art.

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

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

Постоянная строка состояния находится над областью ввода и обновляется в реальном времени:

 ⚕ claude-sonnet-4-20250514 │ 12.4K/200K │ [██████░░░░] 6% │ $0.06 │ 15m
Элемент Описание
Название модели Текущая модель (сокращается, если длиннее 26 символов)
Количество токенов Использовано токенов / макс. окно контекста
Индикатор контекста Визуальный индикатор заполнения с цветовой маркировкой порогов
Стоимость Оценочная стоимость сессии (или n/a для неизвестных/бесплатных моделей)
Продолжительность Прошедшее время сессии

Строка адаптируется к ширине терминала — полный макет при ≥ 76 колонок, компактный при 52–75, минимальный (только модель + длительность) при менее 52.

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

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

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

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

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

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

Клавиша Действие
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 отображает компактный однострочный превью ([вставлено: 47 строк, 1 842 символа — нажмите Enter для отправки]) вместо выгрузки всего содержимого в скроллбэк. Отправляется всё содержимое целиком; это лишь косметическое улучшение отображения.

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

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

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

Часто используемые примеры:

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

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

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

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

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

Вы можете определить пользовательские команды, которые выполняют shell-команды мгновенно без вызова LLM. Они работают как в CLI, так и в мессенджер-платформах (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

# Just the skill name loads it and lets the agent ask what you need:
/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 или режим xterm modifyOtherKeys.

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

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

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

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

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

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

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

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

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

Вы также можете изменить это внутри CLI:

/busy queue
/busy steer
/busy interrupt
/busy status

tip Подсказка при первом касании В самый первый раз, когда вы нажмёте Enter, пока Hermes работает, Hermes выводит однострочное напоминание, объясняющее настройку /busy ("(подсказка) Ваше сообщение прервало текущий запуск…"). Это срабатывает только один раз за установку — флаг в 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. Эту команду также можно включить для мессенджер-платформ — см. конфигурацию.

Длина предпросмотра инструментов

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

# ~/.hermes/config.yaml
display:
  tool_preview_length: 80   # Truncate tool previews to 80 chars (0 = no limit)

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

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

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

При выходе из 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                          # Resume the most recent CLI session
hermes -c                                  # Short form
hermes -c "my project"                     # Resume a named session (latest in lineage)
hermes --resume 20260225_143052_a1b2c3     # Resume a specific session by ID
hermes --resume "refactoring auth"         # Resume by title
hermes -r 20260225_143052_a1b2c3           # Short form

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

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

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

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

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

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

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

# In ~/.hermes/config.yaml
compression:
  enabled: true
  threshold: 0.50    # Compress at 50% of context limit by default

# Summarization model configured under auxiliary:
auxiliary:
  compression:
    model: ""  # Leave empty to use the main chat model (default). Or pin a cheap fast model, e.g. "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 порождает полностью отдельную сессию агента в потоке-демоне:

Результаты

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

╭─ ⚕ 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, терминал издаст звуковой сигнал при завершении задачи.

Варианты использования

Фоновые сессии не отображаются в основной истории диалога. Это отдельные сессии со своим собственным ID задачи (например, `bg_143022_a1b2c3`).

Тихий режим

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

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

hermes chat --verbose