Интерфейс 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
Раскладка интерфейса
Баннер 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!
Многострочный ввод
Ввести многострочное сообщение можно двумя способами:
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 или режим 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