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

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


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

Будьте конкретны в своих запросах

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

Предоставляйте контекст заранее

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

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

Если вы замечаете, что повторяете одни и те же инструкции («используй табуляцию, а не пробелы», «мы используем 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 после включения протокола клавиатуры Kitty). Остальные два работают в любом терминале.

Обнаружение вставки

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

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

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

Возобновление сессий с помощью -c

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

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

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

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

Введите / и нажмите 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). Теперь Hermes автоматически создаёт начальный SOUL и использует этот глобальный файл как источник личности для всего экземпляра.

Полное руководство см. в разделе Использование SOUL.md с 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) и внедряются в результаты инструментов — они не загружаются заранее в системный промпт.

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

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

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

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

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

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

Управление объёмом памяти

Объём памяти намеренно ограничен (~2 200 символов для MEMORY.md, ~1 375 символов для USER.md). Когда она заполняется, агент объединяет записи. Вы можете помочь, сказав «почисти свою память» или «замени старую заметку про Python 3.9 — теперь мы на 3.12».

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

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

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

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

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

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

Используйте /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". Безымянные сессии накапливаются и становятся неразличимыми.

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

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

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

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

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

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

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

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

# In your .env:
TERMINAL_BACKEND=docker
TERMINAL_DOCKER_IMAGE=hermes-sandbox:latest

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

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

with open("results.txt", "w", encoding="utf-8") as f:
    f.write("✓ All good\n")
$OutputEncoding = [Console]::OutputEncoding = [Text.UTF8Encoding]::new($false)

Это удерживает PowerShell и дочерние процессы на UTF-8 и помогает избежать сбоев, характерных для Windows.

Подумайте, прежде чем выбирать «Всегда»

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

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

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

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

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

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

# Recommended: explicit allowlists per platform
TELEGRAM_ALLOWED_USERS=123456789,987654321
DISCORD_ALLOWED_USERS=123456789012345678

# Or use cross-platform allowlist
GATEWAY_ALLOWED_USERS=123456789,987654321

Знаете совет, который должен быть на этой странице? Откройте issue или PR — вклад сообщества приветствуется.