Советы и лучшие практики

Набор быстрых практических советов, которые сразу сделают работу с Hermes Agent продуктивнее. Разделы независимы — пробегитесь по заголовкам и читайте нужное.

совет
Не знаете, какую модель выбрать?

Запустите hermes setup --portal — получите 300+ моделей, включая Claude, GPT-5 и Gemini по одной подписке. См. Nous Portal.


Как получать лучшие результаты

Будьте конкретны

Размытые промпты дают размытые результаты. Вместо «почини код» напишите: «исправь TypeError в api/handlers.py на строке 47 — функция process_request() получает None от parse_body()». Чем больше контекста — тем меньше итераций.

Давайте контекст сразу

Начинайте запрос с нужными деталями: пути к файлам, сообщения об ошибках, ожидаемое поведение. Одно хорошо сформулированное сообщение лучше трёх раундов уточнений. Вставляйте трейсбэки ошибок напрямую — агент их разберёт.

Используйте файлы контекста для повторяющихся инструкций

Если вы постоянно повторяете одно и то же («используй табы», «мы на pytest», «API по адресу /api/v2») — запишите это в AGENTS.md. Агент читает его автоматически каждую сессию. Один раз настроили — забыли.

Дайте агенту работать со своими инструментами

Не пытайтесь расписывать каждый шаг. Скажите «найди и почини упавший тест» вместо «открой tests/test_foo.py, посмотри строку 42, затем…». У агента есть поиск по файлам, доступ к терминалу и выполнение кода — пусть исследует и итерирует.

Используйте навыки для сложных рабочих процессов

Прежде чем писать длинный промпт с объяснением, как что-то делать — проверьте, нет ли уже навыка для этого. Наберите /skills для просмотра, или просто вызовите напрямую: /axolotl, /github-pr-workflow.

CLI для продвинутых

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

Нажмите Alt+Enter, Ctrl+J или Shift+Enter, чтобы вставить перевод строки без отправки. Shift+Enter работает только если терминал отправляет его как отдельное нажатие (Kitty / foot / WezTerm / Ghostty по умолчанию; iTerm2 / Alacritty / VS Code terminal после включения протокола Kitty keyboard). Остальные два работают в любом терминале.

Определение вставки

CLI автоматически распознаёт многострочные вставки. Просто вставьте блок кода или трейсбэк ошибки — каждая строка не будет отправляться отдельным сообщением. Вставка буферизуется и отправляется целиком.

Прерывание и перенаправление

Нажмите Ctrl+C один раз, чтобы прервать агента в середине ответа. Затем можно ввести новое сообщение и перенаправить его. Двойное нажатие Ctrl+C в течение 2 секунд — принудительный выход. Незаменимо, когда агент явно пошёл не туда.

Возобновление сессий через -c

Забыли что-то из прошлой сессии? Запустите hermes -c — вернётесь точно туда, где остановились, с полной историей разговора. Можно также возобновить по названию: hermes -r "my research project".

Вставка изображений из буфера обмена

Нажмите Ctrl+V, чтобы вставить изображение из буфера прямо в чат. Агент использует зрение для анализа скриншотов, диаграмм, попапов с ошибками и UI-макетов — не нужно сначала сохранять в файл.

Автодополнение слэш-команд

Наберите / и нажмите Tab, чтобы увидеть все доступные команды. Это и встроенные команды (/compress, /model, /title), и каждый установленный навык. Ничего не нужно запоминать — Tab вас покроет.

совет

Используйте /verbose для переключения режимов отображения вывода инструментов: off → new → all → verbose. Режим «all» отлично подходит для наблюдения за действиями агента; «off» — самый чистый для простых вопросов-ответов.

Файлы контекста

AGENTS.md: мозг вашего проекта

Создайте AGENTS.md в корне проекта с архитектурными решениями, соглашениями по коду и инструкциями для агента. Он автоматически вставляется в каждую сессию — агент всегда знает правила вашего проекта.

# Project Context
- This is a FastAPI backend with SQLAlchemy ORM
- Always use async/await for database operations
- Tests go in tests/ and use pytest-asyncio
- Never commit .env files

SOUL.md: настройка личности

Хотите, чтобы у Hermes был стабильный голос? Отредактируйте ~/.hermes/SOUL.md (или $HERMES_HOME/SOUL.md, если используете кастомный Hermes home). Hermes автоматически создаёт стартовый SOUL и использует этот глобальный файл как источник личности для всего инстанса.

Полное руководство — в Use SOUL.md with Hermes.

# Soul
You are a senior backend engineer. Be terse and direct.
Skip explanations unless asked. Prefer one-liners over verbose solutions.
Always consider error handling and edge cases.

SOUL.md — для устойчивой личности. AGENTS.md — для инструкций, специфичных для проекта.

Совместимость с .cursorrules

Уже есть файл .cursorrules или .cursor/rules/*.mdc? Hermes их тоже читает. Не нужно дублировать соглашения по коду — они подхватываются автоматически из рабочей директории.

Обнаружение файлов

Hermes загружает AGENTS.md верхнего уровня из текущей рабочей директории при старте сессии. Файлы AGENTS.md в поддиректориях обнаруживаются лениво при вызовах инструментов (через subdirectory_hints.py) и вставляются в результаты инструментов — они не загружаются заранее в системный промпт.

совет

Держите файлы контекста в фокусе и лаконичными. Каждый символ идёт в счёт токенов, поскольку они вставляются в каждое сообщение.

Память и навыки

Память vs навыки: что куда

Память — для фактов: ваше окружение, предпочтения, пути к проектам, то, что агент узнал о вас. Навыки — для процедур: многошаговые рабочие процессы, инструкции по конкретным инструментам, переиспользуемые рецепты. Память — «что», навыки — «как».

Когда создавать навыки

Нашли задачу, которая занимает 5+ шагов и будет повторяться? Попросите агента создать для неё навык. Скажите «сохрани то, что ты только что сделал, как навык deploy-staging». В следующий раз просто наберите /deploy-staging — агент загрузит всю процедуру.

Управление ёмкостью памяти

Память намеренно ограничена (~2200 символов для MEMORY.md, ~1375 символов для USER.md). Когда она заполняется, агент консолидирует записи. Вы можете помочь: «почисти память» или «замени старую заметку о Python 3.9 — мы теперь на 3.12».

Пусть агент запоминает

После продуктивной сессии скажите «запомни это на следующий раз» — агент сохранит ключевые выводы. Можно и конкретнее: «сохрани в памяти, что наш CI использует GitHub Actions с воркфлоу deploy.yml».

внимание

Память — замороженный снимок: изменения в ходе сессии не появятся в системном промпте до следующей сессии. Агент пишет на диск сразу, но кэш промпта не сбрасывается в середине сессии.

Производительность и стоимость

Не ломайте кэш промпта

Большинство LLM-провайдеров кэшируют префикс системного промпта. Если системный промпт остаётся стабильным (те же файлы контекста, та же память), последующие сообщения в сессии получают cache hit — это заметно дешевле. Избегайте смены модели или системного промпта в середине сессии.

Используйте /compress перед достижением лимитов

Длинные сессии накапливают токены. Когда замечаете, что ответы замедлились или обрезаются — запустите /compress. Это суммаризирует историю разговора, сохраняя ключевой контекст и резко снижая количество токенов. Проверить текущее состояние: /usage.

Делегируйте для параллельной работы

Нужно исследовать три темы одновременно? Попросите агента использовать delegate_task с параллельными подзадачами. Каждый субагент работает независимо со своим контекстом, и назад возвращаются только итоговые сводки — это резко сокращает расход токенов основного разговора.

Используйте execute_code для пакетных операций

Вместо того чтобы запускать команды терминала по одной, попросите агента написать скрипт, который сделает всё сразу. «Напиши Python-скрипт для переименования всех .jpeg в .jpg и запусти его» — дешевле и быстрее, чем переименовывать файлы по одному.

Выбирайте правильную модель

Используйте /model для смены модели прямо в сессии. Фронтирная модель (Claude Sonnet/Opus, GPT-4o) — для сложных рассуждений и архитектурных решений. Переходите на быструю модель для простых задач: форматирование, переименование, генерация шаблонного кода.

совет

Периодически запускайте /usage для отслеживания потребления токенов. /insights — для более широкого взгляда на паттерны использования за последние 30 дней.

Советы для мессенджеров

Установите домашний канал

Используйте /sethome в нужном Telegram- или Discord-чате, чтобы назначить его домашним каналом. Результаты cron-задач и вывод запланированных задач доставляются сюда. Без него у агента нет куда отправлять проактивные сообщения.

Используйте /title для организации сессий

Называйте сессии: /title auth-refactor или /title research-llm-quantization. Именованные сессии легко найти через hermes sessions list и возобновить через hermes -r "auth-refactor". Безымянные накапливаются и становятся неразличимы.

Паринг через ЛС для командного доступа

Вместо ручного сбора user ID для списков доступа включите паринг через ЛС. Когда коллега пишет боту, он получает одноразовый код паринга. Вы одобряете его через hermes pairing approve telegram XKGH5N7P — просто и надёжно.

Режимы отображения прогресса инструментов

Используйте /verbose для управления количеством активности инструментов, которую вы видите. В мессенджерах меньше — обычно лучше: держите режим «new», чтобы видеть только новые вызовы инструментов. В CLI режим «all» даёт приятный живой обзор всего, что делает агент.

совет

На платформах мессенджеров сессии автоматически сбрасываются после простоя (по умолчанию: 24 часа) или ежедневно в 4 утра. Настройте по платформам в ~/.hermes/config.yaml, если нужны более длинные сессии.

Безопасность

Используйте Docker для недоверенного кода

При работе с недоверенными репозиториями или незнакомым кодом используйте Docker или Daytona как бэкенд терминала. Задайте TERMINAL_BACKEND=docker в .env. Деструктивные команды внутри контейнера не навредят хостовой системе.

# В вашем .env:
TERMINAL_BACKEND=docker
TERMINAL_DOCKER_IMAGE=hermes-sandbox:latest

Избегайте проблем с кодировкой в Windows

В Windows некоторые кодировки по умолчанию (например, cp125x) не могут представить все Unicode-символы, что приводит к UnicodeEncodeError при записи файлов в тестах или скриптах.

  • Предпочтительно открывать файлы с явной кодировкой UTF-8:
with open("results.txt", "w", encoding="utf-8") as f:
    f.write("✓ All good\n")
  • В PowerShell можно переключить текущую сессию на UTF-8 для вывода консоли и нативных команд:
$OutputEncoding = [Console]::OutputEncoding = [Text.UTF8Encoding]::new($false)

Это переводит PowerShell и дочерние процессы на UTF-8 и устраняет сбои, специфичные для Windows.

Думайте перед выбором «Always»

Когда агент запрашивает одобрение опасной команды (rm -rf, DROP TABLE и т.д.), вам предлагают четыре варианта: once, session, always, deny. Хорошо подумайте перед выбором «always» — это навсегда добавляет паттерн в белый список. Начинайте с «session», пока не убедитесь в безопасности.

Одобрение команд — ваша страховочная сетка

Hermes проверяет каждую команду по списку опасных паттернов перед выполнением. Рекурсивное удаление, SQL DROP, pipe из curl в shell — и многое другое. Не отключайте это в продакшне: оно существует по веским причинам.

внимание

При использовании контейнерного бэкенда (Docker, Singularity, Modal, Daytona) проверки опасных команд пропускаются, потому что контейнер сам является периметром безопасности. Убедитесь, что образы контейнеров должным образом защищены.

Используйте списки доступа для ботов в мессенджерах

Никогда не устанавливайте GATEWAY_ALLOW_ALL_USERS=true для бота с доступом к терминалу. Всегда используйте платформенные списки доступа (TELEGRAM_ALLOWED_USERS, DISCORD_ALLOWED_USERS) или паринг через ЛС для контроля доступа к агенту.

# Рекомендуется: явные списки доступа по платформам
TELEGRAM_ALLOWED_USERS=123456789,987654321
DISCORD_ALLOWED_USERS=123456789012345678

# Или кросс-платформенный список доступа
GATEWAY_ALLOWED_USERS=123456789,987654321

Есть совет, которого здесь не хватает? Откройте issue или PR — вклад сообщества приветствуется.

ESC