🤖HermesBlog
Hermes Official Tutorials · Часть 78/9/2026

Урок 7: Конфигурационные файлы

Tutorial 7: Configuration Files — easy-to-understand guide based on official docs

Hermes tutorial

Урок 7: Конфигурационные файлы

С возвращением, укротители агентов! В этом уроке мы погружаемся в самое сердце Hermes — конфигурационные файлы. Если вы когда-нибудь тонули в море YAML и переменных окружения, не бойтесь — мы сделаем всё максимально безболезненно.

Домашняя база Hermes

Всё хранится в ~/.hermes/. Представьте это как квартиру вашего агента. Вот что внутри:

~/.hermes/
├── config.yaml     # Настройки (модель, терминал, TTS, сжатие и т.д.)
├── .env            # API-ключи и секреты
├── auth.json       # Учётные данные OAuth-провайдеров (Nous Portal и др.)
├── SOUL.md         # Основная идентичность агента (слот #1 в системном промпте)
├── memories/       # Постоянная память (MEMORY.md, USER.md)
├── skills/         # Навыки, созданные агентом (управляются через инструмент skill_manage)
├── cron/           # Запланированные задачи
├── sessions/       # Сессии шлюза
└── logs/           # Журналы (errors.log, gateway.log — секреты автоматически редактируются)

Самый простой путь: настройка одной командой

Прежде чем мы углубимся в детали, вот профессиональный совет: выполните hermes setup --portal. Одна OAuth-авторизация даст вам провайдера моделей и все четыре инструмента Tool Gateway без единого касания YAML-файла. Подписчики Portal также получают скидку 10% на провайдеров с оплатой за токены. Это ленивый способ начать работу, и мы его обожаем.

Управление конфигурацией

Hermes предоставляет полный набор инструментов для управления настройками. Вот команды, которые вы будете использовать ежедневно:

hermes config              # Просмотр текущей конфигурации
hermes config edit         # Открыть config.yaml в вашем редакторе
hermes config get KEY      # Вывести вычисленное значение
hermes config set KEY VAL  # Установить конкретное значение
hermes config unset KEY    # Удалить значение, заданное пользователем
hermes config check        # Проверить отсутствующие опции (после обновлений)
hermes config migrate      # Интерактивно добавить недостающие опции

Вот несколько практических примеров:

hermes config get model
hermes config set model anthropic/claude-opus-4
hermes config set terminal.backend docker
hermes config unset terminal.backend
hermes config set OPENROUTER_API_KEY sk-or-...  # Сохраняется в .env

Магический трюк: hermes config set автоматически направляет значения в нужный файл. API-ключи отправляются в .env, всё остальное — в config.yaml. Больше никаких догадок!

Что побеждает при конфликте?

Hermes разрешает настройки в следующем порядке (от высшего приоритета к низшему):

  1. Аргументы CLI — например, hermes chat --model anthropic/claude-sonnet-4
  2. ~/.hermes/config.yaml — ваш основной конфигурационный файл
  3. ~/.hermes/.env — для секретов (API-ключи, токены, пароли)
  4. Встроенные значения по умолчанию — безопасные захардкоженные значения

Эмпирическое правило: Секреты — в .env. Всё остальное — в config.yaml. Если заданы оба, config.yaml побеждает для несекретных настроек.

Подстановка переменных окружения

Вы можете ссылаться на переменные окружения в config.yaml, используя синтаксис ${VAR_NAME}:

auxiliary:
  vision:
    api_key: ${GOOGLE_API_KEY}
    base_url: ${CUSTOM_VISION_URL}

delegation:
  api_key: ${DELEGATION_KEY}

Множественные ссылки тоже работают: url: "${HOST}:${PORT}". Если переменная не задана, плейсхолдер остаётся как есть, а в журнал записывается предупреждение. Синтаксис в стиле Cursor ${env:VAR_NAME} также поддерживается, так что вы можете копировать фрагменты из конфигов Cursor или Claude без изменений.

Таймауты провайдеров

Вы можете задавать таймауты для каждого провайдера и каждой модели:

providers:
  some-provider:
    request_timeout_seconds: 600
    models:
      some-model:
        timeout_seconds: 300

Также существует stale_timeout_seconds для обнаружения зависших не-стриминговых вызовов. Эти настройки переопределяют устаревшие переменные окружения HERMES_API_TIMEOUT и HERMES_API_CALL_STALE_TIMEOUT.

Ограничения времени выполнения

Для долго работающих серверных поверхностей (шлюз, hermes serve --isolated) вы можете задать лимиты файловых дескрипторов:

runtime:
  nofile_soft_limit: 4096

Значение по умолчанию — 4096. Установите 0, false или null, чтобы отключить корректировку.

Поведение при обновлении

Настройки обновления находятся в разделе updates в config.yaml:

updates:
  pre_update_backup: quick

Подводим итоги

Вот и весь обзор конфигурации! Запомните: hermes setup --portal — для лёгкого пути, hermes config set — для быстрых изменений, и храните секреты в .env. Ваш агент скажет вам спасибо.

Дальше: мы исследуем AI-провайдеров и способы подключения ваших любимых моделей. Оставайтесь с нами!

📖 Официальная документация

Эта статья основана на официальной документации Hermes Agent :Официальные документы › user-guide/configuration