Резервные провайдеры

Агент Гермес имеет три уровня отказоустойчивости, которые применяются на вашей сессии в рабочем состоянии при решении проблем у провайдеров:

  1. Пулы учётных данных — ротация между последовательностями API-ключами для одного и того же провайдера (проверяется в первую очередь)
  2. Резервная базовая модель — автоматически переключается на другого провайдера:модель, когда ваша базовая модель выходит из строя.
  3. Резервная вспомогательная задача — независимо от разрешения провайдера для решения задач, таких как видение, сжатие и извлечение из веба.

Пулы учётных данных обрабатывают ротацию в рамках одного провайдера (например, несколько ключей OpenRouter). На этой странице говорится о переключении между провайдерами. Оба механизма опциональны и работают независимо.

Резервная базовая модель

Когда ваш основной LLM-провайдер сталкивается с ошибками — ограничениями скорости, перегрузкой сервера, аутентификацией, обрывами соединений — Hermes может автоматически переключаться на резервную пару провайдер:модель в середине сессии без потери вашего разговора.

Конфигурация

Самый простой путь — интерактивный менеджер:

hermes fallback

«Резервный вариант Гермеса» повторно использует выбор провайдера из «модели Гермеса» — тот же список провайдеров, с тем же запросом учётных данных и той же проверкой. Используйте подкоманды «добавить», «список» (псевдоним «ls»), «удалить» (псевдоним «rm») и «очистить» для управления цепочкой. Изменения представлены в списке верхних уровней fallback_providers: в config.yaml.

Если вы предпочитаете сохранять YAML напрямую, используйте раздел fallback_model в ~/.hermes/config.yaml:

fallback_model:
  provider: openrouter
  model: anthropic/claude-sonnet-4

Оба поля провайдер и модель обязательны. Если что-либо из них отсутствует, резервный механизм отключается.::: обратите внимание на fallback_model и fallback_providers fallback_model (единственное число) — это постоянный ключ одного резерва — Гермес ещё поддерживает его для обратной совместимости. fallback_providers (множественное число, список) поддерживает несколько резервов, пробуждаемых по порядку; Hermes Fallback записывается в этот ключ. При установке обоих Hermes решает их, причём fallback_providers имеет приоритет.

Поддерживаемые провайдеры

Провайдер Значение Требования
AI-шлюз ай-шлюз AI_GATEWAY_API_KEY
OpenRouter openrouter OPENROUTER_API_KEY
Ноус Портал нус hermes auth (OAuth)
Кодекс OpenAI openai-кодекс модель Гермеса (ChatGPT OAuth)
Второй пилот GitHub второй пилот COPILOT_GITHUB_TOKEN, GH_TOKEN или GITHUB_TOKEN
GitHub Copilot ACP второй пилот-acp Внешний процесс (интеграция с редактором)
Антропный антропный ANTHROPIC_API_KEY или учётные данные Claude Code
z.ai / ГЛМ зай GLM_API_KEY
Кими / Муншот кими-кодирование KIMI_API_KEY
МиниМакс минимакс MINIMAX_API_KEY
МиниМакс (Китай) минимакс-сп MINIMAX_CN_API_KEY
ДипСик глубокий поиск DEEPSEEK_API_KEY
NVIDIA НИМ нвидиа NVIDIA_API_KEY (опционально: NVIDIA_BASE_URL)
Облако GMI гми GMI_API_KEY (опционально: GMI_BASE_URL)
СтепФун степное развлечение STEPFUN_API_KEY (опционально: STEPFUN_BASE_URL)
Оллама Облако оллама-облако OLLAMA_API_KEY
Google Близнецы (OAuth) google-gemini-cli модель Гермеса (Google OAuth; опционально: HERMES_GEMINI_PROJECT_ID)
Google AI Studio близнецы GOOGLE_API_KEY (псевдоним: GEMINI_API_KEY)
xAI (Грок) xai (псевдоним grok) XAI_API_KEY (опционально: XAI_BASE_URL)
Основа AWS основа Стандартная аутентификация boto3 (AWS_REGION + AWS_PROFILE или AWS_ACCESS_KEY_ID)
Портал Квен (OAuth) qwen-oauth модель Гермеса (Qwen Portal OAuth; опционально: HERMES_QWEN_BASE_URL)
МиниМакс (OAuth) минимакс-oauth модель Гермеса (портал MiniMax OAuth)
OpenCode Дзен opencode-zen OPENCODE_ZEN_API_KEY
OpenCode Go opencode-go OPENCODE_GO_API_KEY
Код килограмма килокод KILOCODE_API_KEY
Сяоми МиМо сяоми XIAOMI_API_KEY
Арси AI арси ARCEEAI_API_KEY
Облако GMI гми GMI_API_KEY
Алибаба / DashScope алибаба DASHSCOPE_API_KEY
План кодирования Alibaba алибаба-план-кодирования ALIBABA_CODING_PLAN_API_KEY (возвращается к DASHSCOPE_API_KEY)
Кими / Moonshot (Китай) кими-кодирование-cn KIMI_CN_API_KEY
СтепФун степное развлечение STEPFUN_API_KEY
Tencent TokenHub tencent-tokenhub TOKENHUB_API_KEY
Лаборатория искусственного интеллекта Azure лазурь-литейная AZURE_FOUNDRY_API_KEY + AZURE_FOUNDRY_BASE_URL
LM Студия (локальный) lmstudio LM_API_KEY (или ничего для локального) + LM_BASE_URL
Обнимающее лицо обнимающее HF_TOKEN
Пользовательская конечная точка обычай base_url + key_env (см. ниже)

Резервная пользовательская конечная точка

Для пользовательской конечной точки, совместимой с OpenAI, тегами base_url и опционально key_env:

fallback_model:
  provider: custom
  model: my-local-model
  base_url: http://localhost:8000/v1
  key_env: MY_LOCAL_KEY              # имя переменной окружения, содержащей API-ключ

Когда выполняется резерв

Резервный механизм активируется автоматически, когда базовая модель выходит из строя:

При внедрении Гермес:

  1. Разрешает учётные данные для резервного провайдера.
  2. Строить новый API-клиент
  3. Заменяет модель, провайдера и клиента на месте.
  4. Сбрасывает счётчик повторных измерений и продолжает разговор.

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

ℹ️ Info

Пошагово, а не по сессии Резервный механизм применяется на этом этапе: каждое новое сообщение пользователя начинается с восстановления основной модели. Если базовая модель выходит из строя на среднем этапе, резерв активируется только для этого этапа. На следующее утро Hermes снова пробует основную модель. В пределах одного шага резерв активируется не более одного раза — если резерв также выходит из строя, вступает в силу обычная обработка ошибок (повторные попытки, а затем сообщение об ошибках). Это наши каскадные циклы переключения в этом шаге, которые предоставляют основные модели для каждого шага.

Примеры

OpenRouter как резерв для нативного Anthropic:

model:
  provider: anthropic
  default: claude-sonnet-4-6

fallback_model:
  provider: openrouter
  model: anthropic/claude-sonnet-4

Nous Portal как резерв для OpenRouter:

model:
  provider: openrouter
  default: anthropic/claude-opus-4

fallback_model:
  provider: nous
  model: nous-hermes-3

Локальная модель как резерв для облачной:

fallback_model:
  provider: custom
  model: llama-3.1-70b
  base_url: http://localhost:8000/v1
  key_env: LOCAL_API_KEY

Codex OAuth как резерв:

fallback_model:
  provider: openai-codex
  model: gpt-5.3-codex

Где работает резерв

Контекст Резервные параметры
CLI-сессии
Шлюз обмена сообщениями (Telegram, Discord и т.д.)
Делегирование подагентам ✘ (подагенты не имеют резервной конфигурации)
Cron-задачи ✘ (работают со стационарным провайдером)
Вспомогательные задачи (зрение, сжатие) ✘ (используют свою собственную цепочку провайдеров — см. ниже)
Для fallback_model нет ограничения окружения — это делается исключительно через config.yaml. Это сделано намеренно: включение резерва — это осознанный выбор, а не то, что следует переопределять условия соблюдения экспортных мер.
---

Резерв вспомогательных задач

Гермес использует легкие модели для решения задач. Каждая задача имеет свою собственную цепочку разрешения провайдера, которая действует как встроенная резервная система.

Задачи с независимым развитым провайдером

Задача Что делает Ключ конфигурации
Видение Анализ изображений, скриншоты браузера вспомогательное.видение
Веб-извлечение Суммирование веб-страниц auxiliary.web_extract
Сжатие Сводки сжатия контекста вспомогательное.сжатие
Поиск сеанса Подведение итогов прошедших сессий auxiliary.session_search
Центр навыков Поиск и обнаружение навыков auxiliary.skills_hub
МКП Вспомогательные операции MCP вспомогательный.mcp
Одобрение Умная классификация одобрения команды вспомогательное.утверждение
Генерация заголовков Сводки заголовков сессий auxiliary.title_генерация
Спецификатор сортировки hermes kanban укажите / кнопка ✨ в панели — превращает однострочную задачу триажа в индивидуальную спецификацию auxiliary.triage_specifier

Цепочка автообнаружения

Когда задача провайдера установлена в режиме "авто" (по умолчанию), Hermes пробует провайдеров по порядку, пока один не сработает:

Для текстовых задач (сжатие, извлечение из веба и т.д.):

OpenRouter → Nous Portal → Пользовательская конечная точка → Codex OAuth →
API-ключевые провайдеры (z.ai, Kimi, MiniMax, Xiaomi MiMo, Hugging Face, Anthropic) → сдаться

Для видения задачи:

Основной провайдер (если поддерживает vision) → OpenRouter → Nous Portal →
Codex OAuth → Anthropic → Пользовательская конечная точка → сдаться

Если разрешённый провайдер выходит из строя во время вызова, Hermes также имеет внутреннюю повторную точку: если провайдер не OpenRouter и не установлен явный base_url, он пробует OpenRouter как резерв в любой очереди.

Настройка вспомогательных провайдеров

Каждая задача может быть настроена независимо в config.yaml:

auxiliary:
  vision:
    provider: "auto"              # auto | openrouter | nous | codex | main | anthropic
    model: ""                     # например, "openai/gpt-4o"
    base_url: ""                  # прямая конечная точка (имеет приоритет над provider)
    api_key: ""                   # API-ключ для base_url

  web_extract:
    provider: "auto"
    model: ""

  compression:
    provider: "auto"
    model: ""

  session_search:
    provider: "auto"
    model: ""
    timeout: 30
    max_concurrency: 3
    extra_body: {}

  skills_hub:
    provider: "auto"
    model: ""

  mcp:
    provider: "auto"
    model: ""

Каждая задача выше следует такому же шаблону provider/model/base_url. Сжатие контекста вреда в разделе auxiliary.compression:

auxiliary:
  compression:
    provider: main                                    # Те же опции провайдера, что и для других вспомогательных задач
    model: google/gemini-3-flash-preview
    base_url: null                                    # Пользовательская конечная точка, совместимая с OpenAI

Резервная модель использует:

fallback_model:
  provider: openrouter
  model: anthropic/claude-sonnet-4
  # base_url: http://localhost:8000/v1               # Опциональная пользовательская конечная точка

Для auxiliary.session_search Hermes также поддерживает:

Пример:

auxiliary:
  session_search:
    provider: main
    model: glm-4.5-air
    max_concurrency: 2
    extra_body:
      enable_thinking: false

Если ваш провайдер не поддерживает нативное поле управления рассуждением, совместимое с OpenAI, extra_body не поможет в этой части; в данном случае max_concurrency всё ещё использовалось для главного всплесков запроса 429.

Все три — вспомогательные, сжатие, резерв — работают одинаково: установите «провайдер», чтобы выбрать, кто обрабатывает запрос, «модель», чтобы выбрать модель, и «base_url», чтобы указать пользовательскую конечную точку (переопределяет провайдера).

Опции провайдера для вспомогательных задач

Эти варианты применяются только к настройкам auxiliary:, compression: и fallback_model:"main" не является допустимым значением для вашего model.provider верхнего уровня. Для конечных точек используйте provider: custom в вашем разделе model: (см. AI-провайдеры).

Провайдер Описание Требования
"авто" Пробовать провайдеров по порядку, пока один не сработает (по умолчанию) Хотя бы один провайдер настроения
"openrouter" Принудительно OpenRouter OPENROUTER_API_KEY
"нус" Принудительно наш портал гермес авт
"кодекс" Принудительно Кодекс OAuth модель Гермеса → Кодекс
"главный" Используйте того же провайдера, что и основной агент (только для вспомогательных задач) Активный основной провайдер настроения
"антропный" Принудительный антропный ANTHROPIC_API_KEY или учётные данные Claude Code

Прямое переопределение конечной точки

Для любой вспомогательной задачи установка base_url обходит разрешение провайдера и отправляет запрос напрямую на эту конечную точку:

auxiliary:
  vision:
    base_url: "http://localhost:1234/v1"
    api_key: "local-key"
    model: "qwen2.5-vl"

base_url имеет приоритет над provider. Гермес использует настроенный api_key для аутентификации, возвращаясь к OPENAI_API_KEY, если он не установлен. Он не повторно использует OPENROUTER_API_KEY для конечных конечных точек.


Резервное сжатие контекста

Сжатие контекста использует блок-конфигурацию auxiliary.compression для управления темой, какая модель и провайдер обрабатывают суммирование:

auxiliary:
  compression:
    provider: "auto"                              # auto | openrouter | nous | main
    model: "google/gemini-3-flash-preview"
```<div class="admonition admonition-info"><p class="admonition-title">ℹ️ Info</p> Миграция конфиденциальных настроек
Старые конфигурации с `compression.summary_model` / `compression.summary_provider` / `compression.summary_base_url` автоматически переносятся в `auxiliary.compression.*` при первом компоненте (версия конфигурации 17).</div>
Если для снижения недоступен ни один из провайдеров, Гермес отбрасывает промежуточные шаги разговора без создания сводки, и не завершает сессию с ошибкой.

---

## Переопределение провайдера делегирования

Подагенты, порождённые `delegate_task`, **не** используют резервную базовую модель. Однако они могут быть направлены на другого провайдера: модель для оптимизации затрат:
```yaml
delegation:
  provider: "openrouter"                      # переопределить провайдера для всех подагентов
  model: "google/gemini-3-flash-preview"      # переопределить модель
  # base_url: "http://localhost:1234/v1"      # или использовать прямую конечную точку
  # api_key: "local-key"

См. Делегирование подагентам для получения полной информации о конфигурации.


Провайдеры cron-задачи

Cron-задачи выполняются с тем провайдером, который настроен на данный момент. Они не используют резервную модель. Чтобы использовать другого провайдера для задачи cron, настройте переопределение provider и model для самой cron-задачи:

cronjob(
    action="create",
    schedule="every 2h",
    prompt="Проверить статус сервера",
    provider="openrouter",
    model="google/gemini-3-flash-preview"
)

См. Планировщик задач (Cron) для получения полной информации о конфигурации.


Сводка

функция Механизм резерва Расположение конфигурации
Основная модель агента fallback_model в config.yaml — пошаговое переключение при ошибках (основная модель восстанавливается на каждом шаге) fallback_model: (верхний уровень)
Видение Цепочка автообнаружения + внутренняя повторная попытка OpenRouter вспомогательное.видение
Извлечение из веба Цепочка автообнаружения + внутренняя повторная попытка OpenRouter auxiliary.web_extract
Сжатие контекста Цепочка автообнаружения, деградирует до состояния сводки, если недоступно вспомогательное.сжатие
Поиск сессий Цепочка автообнаружения auxiliary.session_search
Хаб навыки Цепочка автообнаружения auxiliary.skills_hub
Помощники MCP Цепочка автообнаружения вспомогательный.mcp
Классификация одобрения Цепочка автообнаружения вспомогательное.утверждение
Генерация заголовков Цепочка автообнаружения auxiliary.title_генерация
Спецификатор триажа Цепочка автообнаружения auxiliary.triage_specifier
Делегирование Только переопределение провайдера (без резерва) делегирование.провайдер / делегирование.модель
Cron-задачи Только переопределение провайдера на задачу (без автоматического резерва) поставщик / модель на задачу