Советы и лучшие практики
Коллекция быстрых побед — практические советы, которые сразу сделают вас эффективнее при работе с Hermes Agent. Каждый раздел посвящён определённому аспекту — просмотрите заголовки и переходите к нужному.
Как добиться лучших результатов
Будьте конкретны в своих запросах
Расплывчатые промпты дают расплывчатые результаты. Вместо «исправь код» скажите «исправь 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 после включения протокола клавиатуры Kitty). Остальные два работают в любом терминале.
Определение вставки
CLI автоматически определяет многострочные вставки. Просто вставьте блок кода или трассировку ошибки — каждая строка не будет отправлена как отдельное сообщение. Вставка буферизуется и отправляется одним сообщением.
Прерывание и перенаправление
Нажмите Ctrl+C один раз, чтобы прервать ответ агента. Затем вы можете ввести новое сообщение, чтобы перенаправить его. Дважды нажмите Ctrl+C в течение 2 секунд для принудительного выхода. Это бесценно, когда агент начинает идти по неверному пути.
Возобновление сеансов с помощью -c
Забыли что-то из прошлого сеанса? Запустите hermes -c, чтобы продолжить ровно с того места, где остановились, с полным восстановлением истории разговора. Также можно возобновить по заголовку: hermes -r "мой исследовательский проект".
Вставка изображений из буфера обмена
Нажмите Ctrl+V, чтобы вставить изображение из буфера обмена прямо в чат. Агент использует зрение для анализа скриншотов, диаграмм, всплывающих окон с ошибками или макетов интерфейса — не нужно сначала сохранять файл.
Автодополнение слеш-команд
Введите / и нажмите Tab, чтобы увидеть все доступные команды. Сюда входят встроенные команды (/compress, /model, /title) и все установленные навыки. Вам не нужно ничего запоминать — дополнение по Tab всё подскажет.
💡 Tip
Используйте/verbose для переключения режимов отображения вывода инструментов: off → new → all → verbose. Режим «all» отлично подходит для наблюдения за действиями агента; «off» — самый чистый для простых вопросов и ответов.Контекстные файлы
AGENTS.md: мозг вашего проекта
Создайте AGENTS.md в корне проекта с архитектурными решениями, соглашениями по коду и инструкциями, специфичными для проекта. Этот файл автоматически внедряется в каждый сеанс, поэтому агент всегда знает правила вашего проекта.
# Контекст проекта
- Это бэкенд на FastAPI с ORM SQLAlchemy
- Всегда используйте async/await для операций с базой данных
- Тесты находятся в tests/ и используют pytest-asyncio
- Никогда не коммитьте файлы.env
SOUL.md: настройка личности
Хотите, чтобы у Гермеса был стабильный голос по умолчанию? Отредактируйте ~/.hermes/SOUL.md (или $HERMES_HOME/SOUL.md, если вы используете пользовательскую домашнюю директорию Hermes). Гермес теперь автоматически создает стартовую ДУШУ и использует этот глобальный файл в качестве источника личности для всех экземпляров.
Полное руководство см. в разделе Использование SOUL.md с Hermes.
# Душа
Вы — старший бэкенд-инженер. Будьте кратки и прямолинейны.
Пропускайте объяснения, если вас не просят. Предпочитайте однострочные решения многословным.
Всегда учитывайте обработку ошибок и граничные случаи.
Используйте SOUL.md для долговременной личности. Используйте AGENTS.md для инструкций, специфичных для проекта.
Совместимость с.cursorrules
Уже есть файл .cursorrules или .cursor/rules/*.mdc? Hermes также читает их. Вам не нужно дублировать соглашения по коду — они загружаются автоматически из рабочей директории.
Обнаружение
Hermes загружает AGENTS.md верхнего уровня из текущей рабочей директории при запуске сеанса. Файлы AGENTS.md в поддиректориях обнаруживаются лениво во время вызовов инструментов (через subdirectory_hints.py) и внедряются в результаты инструментов — они не загружаются заранее в системный промпт.
💡 Tip
Держите контекстные файлы сфокусированными и краткими. Каждый символ учитывается в вашем токенном бюджете, поскольку они внедряются в каждое сообщение.Память и навыки
Память против навыков: что куда
Память — для фактов: ваше окружение, предпочтения, расположение проектов и то, что агент узнал о вас. Навыки — для процедур: многошаговые рабочие процессы, инструкции по использованию инструментов и многократно используемые рецепты. Используйте память для «что», навыки — для «как».
Когда создавать навыки
Если вы обнаружили задачу, которая занимает 5+ шагов и вы будете выполнять её снова, попросите агента создать для неё навык. Скажите «сохрани то, что ты только что сделал, как навык с именем deploy-staging». В следующий раз просто введите /deploy-staging, и агент загрузит полную процедуру.
Управление ёмкостью памяти
Память намеренно ограничена (~2 200 символов для MEMORY.md, ~1 375 символов для USER.md). Когда она заполняется, агент консолидирует записи. Вы можете помочь, сказав «очисти память» или «замени старую заметку о Python 3.9 — мы теперь на 3.12».
Позвольте агенту запоминать
После продуктивного сеанса скажите «запомни это для следующего раза», и агент сохранит ключевые выводы. Вы также можете быть конкретны: «сохрани в память, что наш CI использует GitHub Actions с рабочим процессом deploy.yml».
⚠️ Warning
Память — это замороженный снимок: изменения, сделанные во время сеанса, не появляются в системном промпте до начала следующего сеанса. Агент записывает на диск немедленно, но кеш промпта не инвалидируется в середине сеанса.Производительность и стоимость
Не ломайте кеш промпта
Большинство LLM-провайдеров кешируют префикс системного промпта. Если вы сохраняете системный промпт стабильным (те же контекстные файлы, та же память), последующие сообщения в сеансе получают попадания в кеш, что значительно дешевле. Избегайте смены модели или системного промпта в середине сеанса.
Используйте /compress до достижения лимитов
Длинные сеансы накапливают токены. Когда вы замечаете, что ответы замедляются или обрезаются, выполните /compress. Это суммирует историю разговора, сохраняя ключевой контекст, но значительно уменьшая количество токенов. Используйте /usage, чтобы проверить текущее состояние.
Делегируйте для параллельной работы
Нужно исследовать три темы одновременно? Попросите агента использовать delegate_task с параллельными подзадачами. Каждый под-агент работает независимо со своим контекстом, и возвращаются только итоговые сводки — это значительно снижает использование токенов в вашем основном разговоре.
Используйте execute_code для пакетных операций
Вместо того чтобы выполнять команды терминала по одной, попросите агента написать скрипт, который делает всё сразу. «Напиши Python-скрипт для переименования всех файлов .jpeg в .jpg и выполни его» — это дешевле и быстрее, чем переименовывать файлы по отдельности.
Выбирайте правильную модель
Используйте /model для переключения моделей в середине сеанса. Используйте передовую модель (Claude Sonnet/Opus, GPT-4o) для сложных рассуждений и архитектурных решений. Переключайтесь на более быструю модель для простых задач, таких как форматирование, переименование или генерация шаблонного кода.
💡 Tip
Периодически выполняйте/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» даёт приятный живой обзор всего, что делает агент.
💡 Tip
В мессенджерах сеансы автоматически сбрасываются после бездействия (по умолчанию 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("✓ Всё хорошо\n")
- В PowerShell вы также можете переключить текущий сеанс в UTF-8 для вывода консоли и нормальной команды:
$OutputEncoding = [Console]::OutputEncoding = [Text.UTF8Encoding]::new($false)
Это удерживает PowerShell и дочерние процессы в UTF-8 и помогает избежать сбоев, характерных только для Windows.
Просматривайте перед выбором «Всегда»
Когда агент запрашивает одобрение опасной команды (rm -rf, DROP TABLE и т.д.), у вас есть четыре телефона: один раз, сеанс, всегда, отклонить. Хорошо подумайте, прежде чем посетить заголовок «всегда» — запишите этот шаблон в белом списке. Продолжайте с «сеансом», пока не уверены.
Одобрение команды — ваша страховка
Теперь каждая команда содержит символы курируемого списку шаблонов перед выполнением. Сюда входят рекурсивные удаления, SQL-сбросы, передача данных в оболочку и многое другое. Не отключайте его в продакшене — это существует по веским причинам.:::предупреждение При работе в контейнерном бэкенде (Docker, Singularity, Modal, Daytona) появляется команда про вывод, поскольку контейнер находится на границе безопасности. Убедитесь, что контейнеры с изображениями должны быть изолированы.