Интерфейс CLI
CLI Hermes Agent — это полноценный терминальный интерфейс, а не web UI. Он поддерживает многострочное редактирование, автодополнение slash-команд, историю диалога, прерывание и перенаправление, а также потоковый вывод инструментов. Этот режим рассчитан на тех, кто живет в терминале.
Запуск CLI
Заголовок раздела «Запуск CLI»# Start an interactive session (default)hermes
# Single query mode (non-interactive)hermes chat -q "Hello"
# With a specific modelhermes chat --model "anthropic/claude-sonnet-4"
# With a specific providerhermes chat --provider nous
# Use Nous Portalhermes chat --provider openrouter
# Force OpenRouter
# With specific toolsetshermes chat --toolsets "web,terminal,skills"
# Start with one or more skills preloadedhermes -s hermes-agent-dev,github-authhermes chat -s github-pr-workflow -q "open a draft PR"
# Resume previous sessionshermes --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 worktreehermes -w -q "Fix issue #123"
# Single query in worktreeМакет интерфейса
Заголовок раздела «Макет интерфейса»Баннер 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 остается как есть.
Slash-команды
Заголовок раздела «Slash-команды»Введите /, чтобы увидеть выпадающий список автодополнения. 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 и т. д.).
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-authhermes chat -s github-pr-workflow -s github-authHermes загружает каждый указанный навык в prompt сессии до первого хода. Тот же флаг работает в интерактивном режиме и в режиме одиночного запроса.
Slash-команды навыков
Заголовок раздела «Slash-команды навыков»Каждый установленный навык в ~/.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!Многострочный ввод
Заголовок раздела «Многострочный ввод»Есть два способа вводить многострочные сообщения:
Alt+Enter,Ctrl+J, илиShift+Enter— вставляет новую строку- Продолжение с обратной косой чертой — завершите строку символом
\, чтобы продолжить:
❯ Write a function that:\ 1. Takes a list of numbers\ 2. Returns the sumПоддерживается вставка многострочного текста — используйте любую из указанных выше клавиш новой строки или просто вставьте содержимое напрямую.
Совместимость Shift+Enter
Заголовок раздела «Совместимость Shift+Enter»По умолчанию большинство терминалов отправляют одну и ту же последовательность байтов для 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
Заголовок раздела «Прерывание Agent»Вы можете прервать agent в любой момент:
- Введите новое сообщение + Enter, пока agent работает — это прервёт текущую операцию и обработает ваши новые инструкции
Ctrl+C— прервать текущую операцию (нажмите дважды в течение 2 с, чтобы принудительно выйти)- Выполняющиеся команды терминала немедленно завершаются (SIGTERM, затем SIGKILL через 1 с)
- Несколько сообщений, введённых во время прерывания, объединяются в один prompt
Режим busy input
Заголовок раздела «Режим busy input»Ключ конфигурации display.busy_input_mode управляет тем, что происходит, когда вы нажимаете Enter, пока agent работает:
| Режим | Поведение |
|---|---|
"interrupt" (по умолчанию) | Ваше сообщение прерывает текущую операцию и обрабатывается немедленно |
"queue" | Ваше сообщение беззвучно ставится в очередь и отправляется следующим ходом после завершения работы agent |
"steer" | Ваше сообщение внедряется в текущий запуск через /steer, поступая к agent после следующего вызова инструмента — без прерывания, без нового хода |
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, что означает отсутствие ограничения — показываются полные пути и команды.
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_a1b2c3Duration: 12m 34sMessages: 28 (5 user, 18 tool calls)Варианты возобновления:
hermes --continue
# Resume the most recent CLI sessionhermes -c
# Short formhermes -c "my project"
# Resume a named session (latest in lineage)hermes --resume 20260225_143052_a1b2c3
# Resume a specific session by IDhermes --resume "refactoring auth"
# Resume by titlehermes -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.yamlcompression: 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 todayHermes сразу подтверждает задачу и возвращает вам 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