CLI Интерфейс
CLI Hermes Agent — это полноценный терминальный интерфейс (TUI), а не веб-интерфейс. Он поддерживает многострочное редактирование, автозаполнение слеш-команд, историю диалогов, прерывание и перенаправление, а также потоковый вывод инструментов. Создан для тех, кто живёт в терминале.
Запуск 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, поток диалога и фиксированная строка ввода, отображаемые в виде стабильного изображения в документации вместо хрупкого текстового 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 см. Голосовой режим.
Быстрые команды
Вы можете определить пользовательские команды, которые выполняют 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!
Многострочный ввод
Есть два способа ввода многострочных сообщений:
-
Alt+Enter,Ctrl+JилиShift+Enter— вставляет новую строку -
Продолжение обратным слешем — завершите строку символом
\, чтобы продолжить:
❯ 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 для новой строки.
Прерывание агента
Вы можете прервать агента в любой момент:
-
Введите новое сообщение + Enter пока агент работает — оно прерывает его и обрабатывает ваши новые инструкции
-
Ctrl+C— прервать текущую операцию (нажмите дважды в течение 2 секунд для принудительного выхода) -
Выполняемые терминальные команды немедленно завершаются (SIGTERM, затем SIGKILL через 1 секунду)
-
Несколько сообщений, введённых во время прерывания, объединяются в один промпт
Режим ввода во время занятости
Ключ конфигурации 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