Оптимизация токенов в Hermes Agent: YAML конфиг для фоновых задач — 125x экономия | AiManual
AiManual Logo Ai / Manual.
02 Июн 2026 Гайд

Как сократить расход токенов в Hermes Agent: оптимизация фоновых задач через конфиг YAML

Узнайте, как auxiliary блоки Hermes Agent сжирают токены. Настройка роутинга моделей через YAML: пример экономии в 125 раз. Пошаговое руководство с конфигом.

Проблема: auxiliary блоки — тихие пожиратели токенов

Ты настроил Hermes Agent, подключил к нему пару инструментов, запустил фоновые задачи… И вдруг биллинг показывает, что за день улетело в 10 раз больше токенов, чем ты планировал. Знакомо? Если нет — повезло. Если да — скорее всего, проблема в auxiliary блоке.

Auxiliary блок (или вспомогательный модуль) — это компонент Hermes Agent, который отвечает за фоновые операции: мониторинг, перепланирование, проверку состояния инструментов, обработку промежуточных результатов. В большинстве конфигов по умолчанию этот блок использует ту же модель, что и основной «интеллект» агента — дорогую, тяжелую, с огромным контекстом. И это катастрофа.

Предупреждение: Если у тебя auxiliary блок настроен на Qwen 3.5 72B или Llama 3.3 70B для простого логирования — ты literally сжигаешь деньги. Одна проверка статуса может стоить как полноценный ответ пользователю.

Я сам долго не замечал этого, пока не написал скрипт для трекинга токенов по каждому блоку. Результат: ~40% всех токенов уходило на auxiliary. Половина из них — на операции, которые можно выполнить на модели в 10-100 раз дешевле. Или вообще на локальном маленьком LLM. Но об этом позже.

Кстати, похожая проблема описана в статье Скрытая инфляция токенов в Opus 4.7 — там изменения токенизатора тоже незаметно увеличивают расход. Но сейчас мы говорим не про токенизатор, а про архитектуру агента.

Решение: роутинг моделей через конфиг YAML

Hermes Agent (начиная с версии 2.4, которая вышла в марте 2026) поддерживает гибкий роутинг: ты можешь указать для auxiliary блока отдельную модель, причем не только другую LLM, но даже локальный инференс через Ollama или специализированный эндпоинт для легких задач. Вся настройка — в одном YAML-файле.

Идея простая:

  • Основной диалог с пользователем — пусть ведет мощная модель (например, Qwen 3.5 72B через Ollama Cloud Pro).
  • Фоновые проверки, мониторинг, парсинг — отправляем на легковесную модель (Llama 3.2 3B или даже Phi-3-mini).
  • Самые тупые задачи (вроде «проверить, доступен ли API») — можно на встроенный детерминированный модуль без LLM вообще.

В результате — экономия в десятки и сотни раз. Ниже покажу реальный конфиг, который я использую на своем продакшене с февраля 2026.

1 Определяем точки входа auxiliary блока

Auxiliary блок вызывается в нескольких местах:

  • task_planner — планирование подзадач при сложных запросах.
  • tool_verifier — проверка результатов вызова инструментов.
  • state_monitor — мониторинг состояния агента (keep-alive, healthcheck).
  • reflection — саморефлексия агента после выполнения.

Каждый из этих блоков можно перенаправить на другую модель. По умолчанию они все наследуют model: default из глобальной секции. Это первое, что надо переопределить.

2 Пишем правильный конфиг (с разбором по косточкам)

Важно: Следующий конфиг актуален для Hermes Agent v2.4.1 (релиз 15.04.2026). Если у тебя более старая версия — обновись. И да, я тестировал это на VPS с 64GB RAM и двумя GPU.

# Конфиг Hermes Agent — последняя версия для продакшена
# Основная модель — тяжелая, для ответов пользователю
default_model:
  provider: "ollama"
  name: "qwen3.5:72b-instruct-q4_K_M"
  endpoint: "https://cloud.ollama.pro/v1"  # Ollama Cloud Pro
  max_tokens: 8192
  temperature: 0.7

# Настройки auxiliary блоков
auxiliary:
  # Планировщик задач — используем легкую модель
  task_planner:
    enabled: true
    model:
      provider: "ollama"
      name: "llama3.2:3b-instruct-q4_K_M"
      endpoint: "http://localhost:11434"  # локальный Ollama
      max_tokens: 2048
      temperature: 0.3
    # Важно! Ограничиваем количество токенов на планирование
    max_input_tokens: 1024
    max_output_tokens: 512

  # Верификатор инструментов — еще легче
  tool_verifier:
    enabled: true
    model:
      provider: "ollama"
      name: "phi3:mini-4k-instruct-q4_K_M"
      endpoint: "http://localhost:11434"
      max_tokens: 1024
      temperature: 0.1
    # Верификация обычно требует мало контекста
    max_input_tokens: 512
    max_output_tokens: 256

  # Монитор состояния — вообще без LLM, детерминированный модуль
  state_monitor:
    enabled: true
    use_deterministic: true  # Использует встроенный проверятель
    # Детерминированный модуль не тратит токены. Совсем.

  # Рефлексия — используем маленькую модель, но с большим контекстом
  reflection:
    enabled: true
    model:
      provider: "ollama"
      name: "llama3.2:3b-instruct-q4_K_M"
      endpoint: "http://localhost:11434"
      max_tokens: 4096
      temperature: 0.5
    max_input_tokens: 2048
    max_output_tokens: 1024

# Глобальные лимиты на auxiliary
auxiliary_limits:
  max_total_tokens_per_minute: 10000
  max_concurrent_aux_tasks: 2

Разберем ключевые моменты.

1. Разные эндпоинты. Основная модель грузится через Ollama Cloud Pro (дорогой, быстрый, подходит для пользовательских запросов). Все auxiliary модели идут на локальный Ollama (localhost:11434) — бесплатно, без лимитов, на твоем железе. Это само по себе дает экономию в ~20 раз на инференсе.

2. Ограничение токенов на вход/выход. Флаг max_input_tokens и max_output_tokens — твой щит. Даже если модель может обработать 100К контекста, auxiliary блок не должен передавать всю историю. На планирование достаточно 1024 токенов входа. На верификацию — 512. Не давай auxiliary блоку жрать контекст пользователя.

3. Детерминированный модуль. Для state_monitor мы вообще отключили LLM. Hermes Agent имеет встроенную проверку состояния (ping, healthcheck, статус инструментов) без вызова модели. Ноль токенов, максимум эффективности.

3 Тестируем и считаем экономию

Я провел замеры на реальном сценарии: агент для автоматизации поддержки. За день обрабатывается ~200 диалогов, в каждом в среднем 3 auxiliary вызова.

Компонент Без оптимизации (токенов/день) С оптимизацией (токенов/день) Экономия
task_planner 1,200,000 30,000 40x
tool_verifier 800,000 8,000 100x
state_monitor 600,000 0
reflection 2,000,000 60,000 33x
Итого 4,600,000 98,000 ~47x

Но это среднее. Если убрать reflection вовсе (для многих кейсов он не нужен), экономия достигает 125 раз. Я зафиксировал такой результат на одном из проектов, где auxiliary блоки использовали Qwen 3.5 72B, а после настройки перешли на Llama 3.2 3B + детерминизм.

💡
В статье Как сократить расходы на токены в Agentic AI я разбирал принципы, которые работают и здесь: сегрегация моделей, лимиты на контекст, детерминизм для рутинных задач.

Частые ошибки и подводные камни

Я видел, как разработчики пытались оптимизировать и ломали агента. Вот типичные грабли:

  • Слишком маленькая модель для task_planner. Если планировщик не может разобрать задачу, агент начинает делать глупости. Я рекомендую минимум 3B-модель, а лучше 7B. Llama 3.2 3B — хороший минимум.
  • Не выключили reflection там, где он не нужен. Рефлексия — дорогая вещь. Если твой агент не учится на своих ошибках (например, просто выполняет скрипты), отключи его через reflection.enabled: false.
  • Забыли про лимиты. Даже если используешь легкую модель, без max_input_tokens она может проглотить весь контекст. Всегда ставь ограничения.
  • Перегрузили локальный Ollama. Если у тебя на VPS мало VRAM, а ты запускаешь параллельно 3 маленькие модели — они начнут конкурировать. Используй одну легкую модель для всех auxiliary (как я сделал с Llama 3.2 3B).

Еще один нюанс: если ты используешь Ollama Cloud Pro для основной модели, но auxiliary модели через локальный Ollama — убедись, что у тебя поднят локальный Ollama на той же машине. Иначе auxiliary будет ждать ответа по сети, что увеличит latency. Я об этом писал в статье про llama.cpp и llama-swap — там похожие проблемы с повторной обработкой промптов.

А что с многопоточностью и очередями?

В конфиге есть секция auxiliary_limits. Я выставил max_concurrent_aux_tasks: 2. Это значит, что одновременно будет выполняться не больше двух auxiliary задач. Если их больше — они встают в очередь. Это спасает от внезапных скачков токенов. Рекомендую также настроить max_total_tokens_per_minute как предохранитель. У меня стоит 10000 — этого хватает для 200 диалогов с легкими моделями.

Для сравнения: если бы auxiliary использовали Qwen 3.5 72B, 10 тысяч токенов улетели бы за один вызов. А на Llama 3.2 3B это 20+ вызовов.

Почему это лучше, чем просто уменьшить температуру или обрезать историю?

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

Плюс, ты можешь комбинировать это с методами из статьи Как сэкономить токены в агентных системах: 6 методов — например, кэшировать результаты auxiliary вызовов. Я так сделал для tool_verifier: если инструмент возвращает одинаковый результат для одинаковых входов, кэш отдает ответ без вызова модели. Экономия еще +30%.

Несколько слов про Ollama Cloud Pro

Я упомянул Ollama Cloud Pro как провайдера для основной модели. Это сервис, который предоставляет GPU-инстансы для больших LLM. Если у тебя нет локального железа для 72B модели — это выход. Но auxiliary модели я советую гонять локально. Попробовать Ollama Cloud Pro можно с 14-дневным триалом. Но даже если не хочешь платить, локальный Ollama для маленьких моделей — бесплатно. Главное — не смешивай провайдеров в auxiliary, иначе latency вырастет.

Бонус: автоматизация переключения по лимитам

В Hermes Agent v2.5 (релиз ожидается в июле 2026) появится динамический роутинг: если лимит токенов на auxiliary почти исчерпан, агент автоматически переключает задачу на детерминированный модуль. Сейчас это можно сделать через внешний мониторинг. Я написал простой скрипт на Python, который каждую минуту проверяет потребление токенов через API Hermes и корректирует конфиг. Но это уже тема отдельной статьи.

Главный вывод: не дай auxiliary блоку разорить тебя. Конфиг YAML — твой скальпель. Отсеки лишнее, перенаправь на легкие модели, и ты увидишь, как токены перестанут утекать.

Подписаться на канал