Интерфейс командной строки

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

Баннер интерфейса командной строки 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 nonedefault и 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!

Многострочный ввод

Существует два способа ввода многострочных сообщений:

  1. Alt+Enter, Ctrl+J или Shift+Enter — вставляет новую строку.
  2. Продолжение обратной косой черты — для продолжения завершите строку символом \:
 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