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

Интерфейс CLI

CLI Hermes Agent — это полноценный терминальный интерфейс, а не web UI. Он поддерживает многострочное редактирование, автодополнение slash-команд, историю диалога, прерывание и перенаправление, а также потоковый вывод инструментов. Этот режим рассчитан на тех, кто живет в терминале.

Окно терминала
# 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, показывающий баннер, область диалога и фиксированный prompt ввода.

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

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

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

⚕ 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>) между баннером и prompt ввода появляется панель «Предыдущий разговор», показывающая компактное резюме истории разговора. Подробности и конфигурацию см. в Сессии — резюме разговора при возобновлении.

КлавишаДействие
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 mode (voice.record_key, по умолчанию: ctrl+b)
Ctrl+GОткрыть текущий буфер ввода в $EDITOR (vim/nvim/nano/VS Code/etc.). Сохраните и выйдите, чтобы отправить отредактированный текст как следующий prompt. Удобно для длинных многоабзацных запросов.
Ctrl+X Ctrl+EАльтернативная привязка в стиле Emacs для внешнего редактора (то же поведение, что и у Ctrl+G).
Ctrl+CПрервать agent (двойное нажатие в течение 2 с для принудительного выхода)
Ctrl+DВыйти
Ctrl+ZПриостановить Hermes и отправить в фон (только Unix). Выполните fg в shell, чтобы возобновить работу.
TabПринять автоподсказку (ghost text) или автодополнить slash-команды

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

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

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

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

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

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

Сведения о настройке, провайдерах, бесшумном режиме и использовании voice mode в мессенджерах и Discord см. в разделе Voice Mode.

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

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

/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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Введите fg в shell, чтобы возобновить сессию ровно с того места, где вы остановились. В 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. Эту команду также можно включить для платформ обмена сообщениями — см. configuration.

Ключ конфигурации 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. База данных хранит:

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

Некоторые адаптеры обмена сообщениями также хранят файлы расшифровок для каждой платформы рядом с базой данных, но сам 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 ходов всегда сохраняются.

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

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

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

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

Каждый prompt /background запускает полностью отдельную сессию агента в daemon thread:

  • Изолированный диалог — фоновый агент ничего не знает об истории вашей текущей сессии. Он получает только тот prompt, который вы передаёте.
  • Та же конфигурация — фоновый агент наследует модель, провайдера, наборы инструментов, настройки рассуждений и резервную модель из текущей сессии.
  • Без блокировки — ваша основная сессия остаётся полностью интерактивной. Вы можете общаться, запускать команды или даже запускать дополнительные фоновые задачи.
  • Несколько задач — можно одновременно запускать несколько фоновых задач. Каждая получает числовой 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