Интерфейс командной строки
CLI агента Hermes представляет собой полноценный пользовательский интерфейс терминала (TUI), а не веб-интерфейс. Он поддерживает многострочное редактирование, автозаполнение косой черты, историю разговоров, прерывание и перенаправление, а также потоковую передачу данных. Создан для людей, живущих в терминале.
💡 Tip
Первоначальная настройка Одна команда — «hermes setup --portal» — и вы готовы к «чату Hermesа». См. Nous Portal.:::💡 Tip
Hermes также предлагает современный TUI с модальными наложениями, выбором с помощью мыши и неблокирующим вводом. Запустите его с помощьюhermes --tui — см. руководство 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)
hermes --resume latest # Resume the most recent session (same as -c)
hermes --resume latest --in./dir # Resume./dir's latest session, staying in./dir
# Verbose mode (debug output)
hermes chat --verbose
# Isolated git worktree (for running multiple agents in parallel)
hermes -w # Interactive mode in worktree
hermes -w -z "Fix issue #123" # Single query in worktree
Управление плагинами
Команды hermesplugins управляют собственными плагинами Hermes и портативным агентом.
Пакеты плагинов v1 через тот же рабочий процесс:
hermes plugins install owner/repository --no-enable
hermes plugins list
hermes plugins enable <plugin-name>
hermes plugins disable <plugin-name>
hermes plugins update <plugin-name>
hermes plugins remove <plugin-name>
Портативные пакеты остаются отключенными до тех пор, пока они не будут включены явно. Hermes в настоящее время загружает переносимые навыки агента и записи MCP stdio. См. руководство разработчика плагинов для точного поддерживаемого подмножества и границы доверия.
Макет интерфейса
Баннер интерфейса командной строки Hermes, поток диалога и фиксированное приглашение к вводу отображаются как стабильный рисунок документа, а не хрупкий текстовый рисунок.
Приветственный баннер сразу показывает вашу модель, серверную часть терминала, рабочий каталог, доступные инструменты и установленные навыки.
Строка состояния
Постоянная строка состояния находится над областью ввода и обновляется в реальном времени:
⚕ claude-sonnet-4-20250514 │ 12.4K/200K │ [██████░░░░] 6% │ $0.06 │ 15m
| Элемент | Описание |
|---|---|
| Название модели | Текущая модель (усекается, если длина превышает 26 символов) |
| Количество токенов | Используемые токены контекста / максимальное окно контекста |
| Контекстная панель | Визуальный индикатор заполнения с цветовыми порогами |
| Стоимость | Ориентировочная стоимость сеанса (или «нет данных» для неизвестных моделей или моделей с нулевой ценой) |
| 🗜️ Н | Счетчик сжатия контекста — сколько раз текущий сеанс был автоматически сжат. Появляется после первого срабатывания сжатия. |
| ▶ Н | Активные фоновые задачи — сколько запросов /background все еще выполняется в текущем сеансе. Появляется всякий раз, когда выполняется хотя бы одна задача. |
| Продолжительность | Прошедшее время сеанса |
| Название сессии | Если у сеанса есть название, оно отображается в виде золотого значка, прикрепленного к правому краю. Длинные заголовки обрезаются перед заменой основных полей модели и контекста. |
| ⚠ ЙОЛО | Предупреждение о режиме YOLO — отображается всякий раз, когда включен HERMES_YOLO_MODE (либо hermes --yolo при запуске, либо /yolo, переключаемый в середине сеанса). Отражает предупреждение в баннерной строке, чтобы вы не могли забыть, что находитесь в режиме автоматического одобрения. |
Панель адаптируется к ширине терминала — полная компоновка при ≥ 76 столбцах, компактная при 52–75, минимальная (модель + продолжительность плюс значок YOLO, когда она активна) ниже 52.
Цветовое кодирование контекста:
| Цвет | Порог | Значение |
|---|---|---|
| Зеленый | < 50% | Много места |
| Желтый | 50–80% | Наполняюсь |
| Оранжевый | 80–95% | Приближаемся к пределу |
| Красный | ≥ 95% | Ближе к переполнению — рассмотрите /compress |
Используйте /usage для подробной разбивки, включая затраты по каждой категории (входные и выходные токены).
У провайдера openai-codex /usage также показывает все сбросы лимитов использования, сохраненные в вашей учетной записи ChatGPT («У вас есть N сбросов в банке — используйте /usage сброс для активации»). /usage reset погашает один банковский сброс, полностью восстанавливая ваши 5-часовые и еженедельные лимиты. Hermes отказывается выкупить, пока ваши лимиты не исчерпаны (сброс в банке восстанавливает полный лимит, поэтому, потратив его раньше времени, вы тратите его впустую) — все равно передайте /usage reset --force, чтобы погасить.
Отображение возобновления сеанса
При возобновлении предыдущего сеанса (hermes -c или hermes --resume <id>) между баннером и приглашением ввода появляется панель «Предыдущий разговор», на которой отображается компактный обзор истории разговора. Подробные сведения и настройки см. в разделе Сессии — повторение беседы при возобновлении.
Сочетания клавиш
| Ключ | Действие |
|---|---|
Ввод |
Отправить сообщение |
Alt+Enter, Ctrl+J или Shift+Enter |
Новая строка (многострочный ввод). Для «Shift+Enter» требуется терминал, отличающий его от «Enter» — см. ниже. В терминале Windows нажатие 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+S |
Сохраните приглашение. Паркует текущий черновик и очищает композитор, чтобы вы могли сначала отправить что-нибудь еще. Нажмите Ctrl+S еще раз на пустом композиторе, чтобы вернуть черновик (курсор в конце, прикрепленные изображения восстановлены). Повторные нажатия создают стек, а не перезаписывают, поэтому более ранний черновик никогда не теряется незаметно — если спрятано два или более, Ctrl+S открывает панель просмотра (↑/↓для навигации,Enterдля восстановления,Dдля отмены,EscилиCtrl+Sдля закрытия). Значок📌 N` в строке состояния показывает, сколько черновиков припарковано. Многострочные черновики точно туда и обратно, включая пустые строки. Тайник хранится в памяти только на протяжении сеанса — на диск ничего не записывается, поскольку черновики часто содержат секреты. |
Ctrl+C |
Агент прерывания (дважды нажмите в течение 2 секунд, чтобы принудительно выйти) |
Ctrl+D |
Выход |
Ctrl+Z |
Приостановить работу Hermes в фоновом режиме (только для Unix). Запустите fg в оболочке, чтобы возобновить работу. |
Вкладка |
Принимать автоматические предложения (призрачный текст) или команды автозаполнения косой черты |
!<команда> |
Режим оболочки — самостоятельно запустите команду оболочки, не тратя ход модели (например, !git status, !pytest -x). См. ниже. |
Предварительный просмотр многострочной вставки. При вставке многострочного блока интерфейс командной строки отображает компактный однострочный предварительный просмотр («[вставлено: 47 строк, 1842 символа — нажмите Enter для отправки]») вместо того, чтобы выгружать всю полезную нагрузку в обратную прокрутку. Полный контент по-прежнему отправляется; это просто полировка дисплея.
! Режим оболочки
Начните строку с !, чтобы запустить ее как команду оболочки, а не отправлять агенту:
>!git status
>!ls -la
>!pytest -x tests/cli
- Нулевая стоимость. Модель никогда не вызывается — ни вызов API, ни токены, ни задержка.
- Ничего не происходит в разговоре. Команда и ее вывод не добавляются в историю, поэтому ваш контекст остается чистым, а кеш подсказок не затрагивается.
- Запускается там, где работает инструмент
терминалаагента. Использует рабочий каталог сеанса, поэтому!pwdсоответствует тому, что увидит агент. - Одобрения по-прежнему действительны. Опасная команда (
rm -rf, запись в~/.hermes/config.yamlи т. д.) проходит через тот же запрос на одобрение, который использует инструменттерминалагента.!— это ярлык стоимости/задержки, а не обход безопасности. - Отображаются ненулевые выходы. При неудачной команде выводится
! вышел из <code>после его вывода. !сам по себе печатает однострочное напоминание об использовании.
Режим оболочки доступен только через CLI. Платформы шлюзов (Discord, Telegram, Slack) и cron игнорируют это — у этих пользователей уже есть свои оболочки.
Удаление уценки в окончательных ответах. CLI удаляет самые многословные ограничения уценки и оболочки **жирным**/*курсивом* из финальных ответов агента, поэтому они отображаются как читаемый терминальный текст, а не как исходный исходный код. Блоки кода и списки сохраняются. Это не влияет на платформы шлюзов или результаты инструментов — они сохраняют свою уценку для нативного рендеринга.
Слэш-команды
Введите /, чтобы увидеть раскрывающийся список автозаполнения. Hermes поддерживает большой набор косых команд CLI, динамических команд навыков и определяемых пользователем быстрых команд.
Распространенные примеры:
| Команда | Описание |
|---|---|
/помощь |
Показать справку по команде |
/модель |
Показать или изменить текущую модель |
/инструменты |
Список доступных на данный момент инструментов |
/просмотр навыков |
Просмотрите центр навыков и официальные дополнительные навыки |
/background <подсказка> |
Запуск запроса в отдельном фоновом сеансе |
/скин |
Показать или переключить активный скин CLI |
/голос включен |
Включить голосовой режим CLI (нажмите Ctrl+B для записи) |
/voice tts |
Переключить голосовое воспроизведение ответов Hermesа |
/высокие рассуждения |
Увеличьте усилие рассуждения |
/title Моя сессия |
Назовите текущий сеанс |
/статус |
Показать информацию о сеансе — модель/профиль/токены/продолжительность — с последующим локальным блоком Резюме сеанса (количество последних ходов, основные используемые инструменты, затронутые файлы, последнее приглашение пользователя + ответ помощника). Чисто локальные вычисления; нет звонка в LLM. |
/context [все] |
Визуальная разбивка контекста использования — сетка блоков глифов + таблица токенов по категориям (системная подсказка/инструменты/навыки/память/разговор/свободное пространство). /context all добавляет затраты на каждый навык и набор инструментов. |
/сессии |
Откройте интерактивный инструмент выбора сеанса прямо в классическом интерфейсе командной строки (та же поверхность, которую использует TUI). Введите для фильтрации, клавиши со стрелками для навигации, Enter для возобновления. |
Полный список встроенных команд командной строки и списков сообщений см. в Справочнике по слэш-командам.
Информацию о настройке, провайдерах, настройке тишины и использовании голосовых сообщений/Discord см. в разделе Голосовой режим.
💡 Tip
Команды нечувствительны к регистру —/HELP работает так же, как /help. Установленные навыки также автоматически становятся косыми командами.Быстрые команды
Вы можете определить собственные команды, которые мгновенно запускают команды оболочки, не вызывая 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 загружает каждый названный навык в приглашение сеанса перед первым ходом. Тот же флаг работает в интерактивном режиме и режиме одного запроса.
Команды навыка Slash
Каждый установленный навык в ~/.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
Встроенные личности включают в себя: «полезный», «краткий», «технический», «творческий», «учитель», «каваий», «девушка-кошка», «пират», «шекспир», «серфер», «нуар», «уву», «философ», «хайп».
Чтобы вернуться к настройкам по умолчанию (без наложения), используйте /personality none — default и neutral тоже работают.
Вы также можете определить персональные настройки в ~/.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
```<div class="admonition admonition-info"><p class="admonition-title">ℹ️ Info</p>
Поддерживается вставка многострочного текста — используйте любую из клавиш новой строки, указанных выше, или просто вставьте содержимое напрямую.</div>
### Shift+Enter совместимость
Большинство терминалов по умолчанию отправляют одну и ту же последовательность байтов для «Enter» и «Shift+Enter», поэтому приложения не могут их различить. Hermes распознает «Shift+Enter» только тогда, когда терминал отправляет отдельную последовательность через [протокол клавиатуры Kitty] (https://sw.kovidgoyal.net/kitty/keyboard-protocol/) или режим «modifyOtherKeys» xterm.
| Терминал | Статус |
|---|---|
| Китти, нога, WezTerm, Ghostty | Отдельный `Shift+Enter` включен по умолчанию |
| iTerm2 (недавний), Alacritty, терминал VS Code, Warp | Поддерживается после включения протокола Kitty в настройках |
| Предварительная версия терминала Windows 1.25+ | Поддерживается после включения протокола Kitty в настройках |
| macOS Terminal.app, стандартный терминал Windows (стабильная версия) | Не поддерживается — «Shift+Enter» неотличим от «Enter» |
Если терминал не может их различить, Alt+Enter и Ctrl+J продолжают работать везде. **В частности, в терминале Windows нажатие клавиши «Alt+Enter» захватывается терминалом (переключает полноэкранный режим) и никогда не достигает Hermes — используйте «Ctrl+Enter» (доставляется как «Ctrl+J») или «Ctrl+J» непосредственно для перевода строки.**
## Перенаправление агента в середине хода
Пока агент работает, вы можете отправить коррекцию, не начиная новый ход:
- **Введите новое сообщение + Enter** — перенаправляет активный ход с учетом вашей поправки.
- **`Ctrl+C`** — прервать текущую операцию (нажмите дважды в течение 2 секунд для принудительного выхода)
- Завершенная работа с инструментом и уже показанные рассуждения остаются в контексте.
- Работающий инструмент достигает безопасной границы до того, как будет применена коррекция.
### Режим входа «Занято»
Конфигурационный ключ `display.busy_input_mode` управляет тем, что происходит, когда вы нажимаете Enter во время работы агента:
| Режим | Поведение |
|------|----------|
| `"прерывание"` (по умолчанию) | Ваше сообщение перенаправляет активный ход. Генерация модели возобновляется с сохранением отображенных рассуждений и завершенной работы; инструменты для бега финишируют первыми |
| `"очередь"` | Ваше сообщение автоматически ставится в очередь и отправляется на следующем этапе после завершения работы агента |
| `"рулить"` | Ваше сообщение вводится в текущий запуск через `/steer` и поступает к агенту после следующего вызова инструмента — без прерывания, без нового поворота |
```yaml
# ~/.hermes/config.yaml
display:
busy_input_mode: "steer" # or "queue" or "interrupt" (default)
Режим «очереди» готовит отдельный последующий ход. "steer" всегда ожидает следующей границы результата инструмента. Режим «прерывания» по умолчанию реагирует быстрее во время генерации модели, избегая при этом отмены работающего инструмента. Используйте /stop, если хотите отменить поворот и его работу на переднем плане. Неизвестные значения возвращаются к «прерованию».
"steer" имеет два автоматических варианта возврата: если агент еще не запущен или если изображения прикреплены, сообщение возвращается к поведению "queue", поэтому ничего не теряется.
Вы также можете изменить его внутри CLI:
/busy queue
/busy steer
/busy interrupt
/busy status
```<div class="admonition admonition-tip"><p class="admonition-title">💡 Tip</p> Подсказка при первом касании
Когда вы в первый раз нажимаете Enter во время работы Hermes, Hermes печатает однострочное напоминание с объяснением ручки `/busy`. Он срабатывает только один раз за установку; `onboarding.seen.busy_input_prompt` в `config.yaml` записывает, что оно было показано. Удалите этот ключ, чтобы снова увидеть подсказку.</div>
### Приостановка работы в фоновом режиме
В системах Unix нажмите **`Ctrl+Z`**, чтобы перевести Hermes в фоновый режим — как и любой терминальный процесс. Оболочка печатает подтверждение:
Hermes Agent has been suspended. Run fg to bring Hermes Agent back.
Введите `fg` в своей оболочке, чтобы возобновить сеанс с того места, на котором вы остановились. Это не поддерживается в Windows.
## Отображение хода работы инструмента
Интерфейс командной строки отображает анимированную обратную связь во время работы агента:
**Анимация мышления** (во время вызовов 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](/user-guide/configuration#display-settings).
### Длина предварительного просмотра инструмента
Ключ конфигурации `display.tool_preview_length` контролирует максимальное количество символов, отображаемых в строках предварительного просмотра вызова инструмента (например, пути к файлам, команды терминала). По умолчанию установлено значение «0», что означает отсутствие ограничений — отображаются полные пути и команды.
```yaml
# ~/.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 --resume latest # Resume the most recent session (same as -c)
hermes --resume latest --in./my-project # Latest session for./my-project's workspace
hermes -r 20260225_143052_a1b2c3 # Short form
Возобновление восстанавливает полную историю разговоров из SQLite. Агент видит все предыдущие сообщения, вызовы инструментов и ответы — так, как будто вы никогда не уходили.
Используйте /title My Session Name внутри чата, чтобы назвать текущий сеанс, или hermes session rename <id> <title> из командной строки. Используйте «Список сеансов Hermes», чтобы просмотреть прошлые сеансы.
Хранилище сеансов
Сеансы CLI хранятся в базе данных состояний Hermes SQLite в ~/.hermes/state.db. В базе данных хранятся:
- метаданные сеанса (идентификатор, заголовок, временные метки, счетчики токенов)
- история сообщений
- происхождение по сжатым/возобновленным сеансам
- индексы полнотекстового поиска, используемые
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 витков всегда сохраняются.
Фоновые сеансы
Запустите приглашение в отдельном фоновом сеансе, продолжая использовать 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, по завершении задачи раздастся звуковой сигнал терминала.
Варианты использования
- Длительные исследования — «/background исследовать последние разработки в области квантовой коррекции ошибок», пока вы работаете над кодом.
- Обработка файлов — «/background проанализируйте все файлы Python в этом репозитории и перечислите все проблемы безопасности», пока вы продолжаете разговор.
- Параллельные расследования — запускайте несколько фоновых задач, чтобы одновременно исследовать разные стороны.
ℹ️ Info
Фоновые сеансы не отображаются в основной истории разговоров. Это автономные сеансы со своим идентификатором задачи (например,bg_143022_a1b2c3).
Тихий режим
По умолчанию интерфейс командной строки работает в тихом режиме, который: - Подавляет подробное ведение журнала из инструментов. - Включает анимированную обратную связь в стиле каваи. - Сохраняет вывод чистым и удобным для пользователя
Для вывода отладки:
hermes chat --verbose