Промпты: как получить лучший результат
Будьте конкретны
Чем точнее запрос, тем лучше ответ. Вместо «исправь баг» напишите: «В функции calculate_total в файле cart.py не учитывается скидка — исправь и добавь тест». Указывайте файлы, имена функций и ожидаемый результат.
Предоставляйте контекст заранее
Если задача зависит от специфики проекта, укажите это в первом сообщении: стек технологий, ограничения, формат вывода. Агент сразу получит всё необходимое для качественной работы.
Используйте контекстные файлы
Создайте AGENTS.md в корне проекта — агент загружает его автоматически. Запишите туда: структуру проекта, команды сборки, код-стайл. Для кастомизации личности агента используйте SOUL.md. Также поддерживаются .cursorrules.
Доверяйте инструментам
Не копируйте содержимое файлов вручную — агент может читать файлы, работать с терминалом, git и другими инструментами напрямую.
CLI-шорткаты
- Многострочный ввод — вставляйте длинные промпты; агент автоматически определяет вставку.
- Прерывание — нажмите
Escape, чтобы остановить ответ и уточнить задачу. - Возобновление сессий —
hermes -cпродолжает последнюю сессию,hermes -r "название"возобновленную. - Автодополнение — введите
/и Tab для списка слеш-команд. - Вставка изображений — скриншоты из буфера обмена анализируются автоматически.
Память и навыки
Память — для фактов, навыки — для процедур
Память (MEMORY.md, USER.md) хранит предпочтения и окружение. Навыки (Skills) — многошаговые рецепты, вызываемые командой /имя-навыка. Задача из 5+ повторяющихся шагов? Сохраните как навык.
Управление памятью
Память ограничена (~2200 символов). Помогите агенту: «обнови — мы теперь на Python 3.12». После продуктивной сессии: «запомни это». Изменения вступают в силу со следующей сессии.
Оптимизация стоимости
- Не ломайте кэш промпта — стабильный системный промпт даёт кэш-попадания у провайдеров, что значительно снижает цену. Не меняйте контекст, инструменты или системный промпт в середине разговора.
- Чередование ролей сообщений — никогда не допускайте два сообщения assistant или два сообщения user подряд. Провайдеры требуют строгое чередование ролей для корректной работы.
- Команда
/compress— суммирует историю сессии, сохраняя контекст и снижая токены. - Параллельное делегирование —
delegate_taskзапускает субагентов независимо; в сессию возвращаются только итоги. - Пакетные скрипты — один скрипт вместо поочерёдных команд быстрее и дешевле.
- Выбор модели —
/modelдля переключения. Сложные задачи — фронтьер-модели, простые — быстрые и дешёвые. - Контроль расхода —
/usageпоказывает потребление,/insights— статистику за 30 дней.
Ключевые правила для разработчиков
Не ломайте prompt caching
Стабильный системный промпт обеспечивает кэш-попадания у провайдеров (Anthropic, OpenAI). Не меняйте контекст, инструменты или системный промпт в середине разговора. Изменения toolset применяются только при /reset (новая сессия).
Чередование ролей сообщений
Провайдеры требуют строгое чередование: user → assistant → user → assistant. Никогда не допускайте два сообщения одного типа подряд — это вызывает ошибки API.
Используйте get_hermes_home() для путей
Никогда не хардкодьте ~/.hermes. Импортируйте get_hermes_home() из hermes_constants — он корректно работает с профилями и разными окружениями.
Config vs .env — разделяйте настройки
config.yaml — настройки (модель, провайдер, лимиты, feature flags). .env — секреты (API-ключи, токены). Никогда не храните ключи в config.yaml и не пишите настройки в .env без необходимости.
Новым инструментам нужен check_fn
При добавлении нового инструмента через registry.register() обязательно указывайте check_fn — функцию проверки доступности. Инструмент без check_fn будет показываться всем пользователям, даже если у них нет нужных зависимостей или API-ключей.
Публикация в Telegram
Только send_message, никаких fallback-цепочек
Распространённый антипаттерн: навыки содержат цепочки вроде send_message → tg-post.sh → curl с bot token. Агент cron читает навык, попадает на fallback-путь, обращается к отозванному токену и получает 401. Правило: все публикации только через send_message. Инструмент маршрутизирует через аккаунт платформы агента — работает всегда, если запущен gateway.
Бот должен быть админом канала
send_message работает только с каналами, где бот — администратор. Если нет доступа к каналу, используйте скрипты с API оригинального бота.
Флаг --yolo и режим HERMES_YOLO_MODE
Для пропуска одобрения опасных команд:
hermes --yolo— при запуске CLI, разовая сессия без подтвержденийexport HERMES_YOLO_MODE=1— переменная окружения, действует на все сессии/yolo— слеш-команда в сессии, переключает режимhermes config set approvals.mode off— глобально в config.yaml
Режимы одобрения: manual (по умолчанию), smart (LLM решает), off (всё пропускает). YOLO не отключает редактирование секретов — это независимые настройки.
Диагностика: hermes doctor
Команда hermes doctor проверяет зависимости, конфигурацию и доступность компонентов. С флагом --fix автоматически исправляет обнаруженные проблемы:
hermes doctor # проверка состояния
hermes doctor --fix # проверка + автоисправление
Что проверяет doctor:
- Наличие и корректность API-ключей
- Доступность Python-зависимостей
- Состояние gateway-сервиса
- Корректность config.yaml
- Доступность MCP-серверов
Безопасность
Docker для ненадёжного кода
При работе с незнакомыми репозиториями используйте Docker-бэкенд: TERMINAL_BACKEND=docker в .env. Деструктивные команды внутри контейнера не повредят хосту.
Одобрение команд
Hermes проверяет каждую команду по списку опасных паттернов: рекурсивные удаления, DROP TABLE, pipe curl в shell. Выбирайте «один раз» или «на сессию» — не спешите с «всегда».
Списки доступа
Никогда не используйте GATEWAY_ALLOW_ALL_USERS=true для ботов с терминалом. Используйте TELEGRAM_ALLOWED_USERS или DISCORD_ALLOWED_USERS. Для командного доступа — DM-паринг.
Сессии и каналы
Назначьте домашний канал /sethome для результатов запланированных задач. Именуйте сессии /title. На мессенджер-платформах сессии сбрасываются после простоя (по умолчанию 24 часа).