Обложка: routing моделей в Hermes Agent
Обложка: routing моделей в Hermes Agent

На днях я заметил, что квота Ollama Cloud Pro тратится быстрее обычного. Значительно быстрее. За семь дней я сжёг 603 миллиона токенов и не понимал, куда они уходили.

Я открыл логи Hermes Agent и нашёл то, о чём не знал: блок auxiliary: с двенадцатью фоновыми задачами. Сжатие контекста, извлечение из веба, vision, поиск по сессиям, подбор навыков — всё это молча запускалось при каждом моём сообщении. Каждая задача стояла на provider: auto. И поскольку у меня не было ключей для цепочки fallback, каждая молча откатывалась на kimi-k2.6, мою основную модель на триллион параметров.

Я понятия не имел, что это происходит. Пока я печатал одно сообщение, агент отправлял одиннадцать других в фоне — через ту же модель, из той же квоты, не показывая мне промпты. Только сжатие контекста срабатывало 10–20 раз за длинную сессию, каждый раз отправляя всю историю.


Решение

Вот что я изменил в блоке auxiliary: файла ~/.hermes/config.yaml. Полный YAML — в разделе Полный конфиг ниже.

Применяется через /reset или перезапуск Hermes. Изменения вступают в силу только для новых сессий.

Как работает роутинг

До и после: provider auto vs explicit routing
До и после: provider auto vs explicit routing

Двенадцать задач раньше сваливались в одну модель на триллион параметров. Теперь распределены по шести моделям — от 8B до 1T.

Как работает provider: auto

Я прочитал десятки гайдов по Hermes — ни в одном не упоминается блок auxiliary. Официальная документация описывает структуру YAML, но нет предупреждения, что provider: auto молча откатывается на основную модель. Нашёл только одно видео от AI Garage на эту тему — больше ничего. Цепочка такая: openrouter → new portal → codex → gemini flash. Если ни у одного бэкенда нет настроенного ключа, система возвращается к основной модели чата.

Мой каталог Ollama Cloud Pro

У меня подписка Ollama Cloud Pro. Вот модели из каталога, которые имеют значение для роутинга:

Модель

Размер

Сильная сторона

Лучше всего для

kimi-k2.6

~1T параметров, 256K контекст

Рассуждения, архитектура, отладка

Только основной чат

kimi-k2.5

~1T параметров

То же семейство, оптимизирована под длинный контекст

Суммаризация, сжатие

qwen3-vl:235b-instruct

235B параметров

Мультимодальная (vision + текст)

Скриншоты, анализ изображений

deepseek-v4-flash

~20B параметров

Быстрая, хороша на структурированный вывод

Проверки безопасности, классификация

gemma3:12b

12B параметров

Лёгкая, быстрая

Триаж, профиль

rnj-1:8b

8B параметров

Самая дешевая в каталоге

Заголовки, поиск, навыки

gemma4:e2b

2B параметров

Самая маленькая

Не используется — слишком слабая

Я использовал доступные модели из каталога и настроил их для двенадцати вспомогательных задач. Результат тестирования — ниже.

Двенадцать фоновых задач

#

Задача

Что делает

Почему дорого

1

compression

Сжимает переполненный контекст

10–20 раз за сессию. Вся история каждый раз.

2

web_extract

Очищает HTML после web_search

На каждый поиск.

3

vision

Обрабатывает скриншоты

Мультимодальные токены дороже.

4

flush_memories

Записывает факты в память при /new или /exit

При каждом завершении сессии.

5

kanban_decomposer

Разбивает Kanban-задачи на шаги

Средняя сложность.

6

curator

Анализирует качество и дубли навыков

Тяжёлый анализ.

7

session_search

Ищет по прошлым сессиям

При поиске по истории.

8

skills_hub

Подбирает навык под запрос

На почти каждый вопрос.

9

triage_specifier

Классифицирует входящие сообщения

Бинарная классификация.

10

approval

Проверка перед терминалом

Простое да/нет.

11

profile_describer

Генерирует биографию профиля

Редкая, лёгкая.

12

title_generation

Автоматически именует сессии

Тривиальная, постоянно.

Как я распределил модели по задачам

Логика: поставить на задачу самую лёгкую модель, которая не ломается, и оставить k2.6 только для настоящих разговоров.

Задача

Модель

Почему именно она

Основной чат

kimi-k2.6

Архитектура, отладка, обсуждение. Единственная задача, которая реально нуждается в триллионе параметров.

Сжатие, web_extract, kanban, curator

kimi-k2.5

То же семейство Kimi, оптимизировано под длинный контекст. Качество сводок остаётся высоким.

Vision

qwen3-vl:235b-instruct

Единственная мультимодальная модель в каталоге. Альтернатив нет.

Классификация, профиль

gemma3:12b

12 млрд против триллиона. Классификация и генерация био не требуют глубины рассуждений.

Проверка безопасности

deepseek-v4-flash (~20B)

Бинарная проверка. Важнее скорость ответа.

Заголовки, поиск, навыки, MCP

rnj-1:8b

8 млрд параметров. В 125 раз легче k2.6. Основная экономия здесь — они запускаются постоянно.

Первая попытка: локальные модели

Я работаю на ноутбуке RTX 5070 Ti, 8 ГБ VRAM. Одна модель на 6 млрд параметров помещается. Две — на грани. Каждый раз, когда Hermes переключался с сжатия на проверку безопасности, Ollama выгружал одну модель и загружал другую. Пять–десять секунд простоя, а это неприятно, потому что у меня настроены агенты и к концу дня это может привести к неприятным последствиям. Вдобавок вентилятор гудел. В результате от локальных моделей в auxiliary отказался в тот же день, я хотел ставить на них незначительные процессы, но даже это повлекло за собой проблемы, если характеристики вашего железа лучше, думаю, этот вариант будет более разумным

Цифры

Задача

До (по умолчанию)

После (роутинг)

Уменьшение

Заголовки, поиск, навыки, MCP

kimi-k2.6 (~1T)

rnj-1:8b (8B)

В 125 раз легче

Классификация, профиль

kimi-k2.6 (~1T)

gemma3:12b (12B)

В 83 раза легче

Проверка безопасности

kimi-k2.6 (~1T)

deepseek-v4-flash (~20B)

В 50 раз легче

Сжатие, web_extract

kimi-k2.6 (~1T)

kimi-k2.5 (~1T)

Освобождает k2.6 для чата

Vision

kimi-k2.6 (~1T)

qwen3-vl (235B)

Специализированная мультимодальная

В видео AI Garage автор замерил стоимость сжатия: Claude Opus при контексте 50K = 13 центов за проход. Kimi K2 для той же задачи = 1.9 цента. Снижение на 85% за один проход. Для активных пользователей сжатие срабатывает 10–20 раз в день. По оценке автора: со стандартными настройками только сжатие может стоить $60 в месяц на Claude Opus. Перенаправленное на более дешёвую модель — $9 в месяц.

К сожалению точную экономию в долларах для Ollama Cloud я подтвердить не могу — они не выдают цену за вызов. Но разница в масштабе однозначна.

Что изменилось

Компонент

Статус

Примечания

Тяжёлые задачи на k2.5

Работает

Сжатие и web_extract больше не блокируют основную модель

Vision на qwen3-vl

Работает

Единственная доступная мультимодальная опция

Средние задачи на gemma3:12b

Работает

Классификация и профиль

Проверка safety на deepseek-v4-flash

Работает

Быстрые бинарные решения

Лёгкие задачи на rnj-1:8b

Работает

Заголовки, поиск, навыки, MCP

provider: auto убран

Готово

Явный провайдер на каждой задаче

Локальные модели в auxiliary

Отказано

Конфликт VRAM на 8 ГБ ноутбуке

Подсчёт стоимости по задачам

Невозможен

Ollama Cloud не выдаёт цену за вызов

Сессии больше не останавливаются и счётчик токенов перестал монополизировать k2.6.

Полный конфиг

Вот полный блок auxiliary: из моего ~/.hermes/config.yaml:

auxiliary:
  compression:
    provider: ollama-cloud
    model: kimi-k2.5
    timeout: 120
  web_extract:
    provider: ollama-cloud
    model: kimi-k2.5
    timeout: 360
  kanban_decomposer:
    provider: ollama-cloud
    model: kimi-k2.5
    timeout: 180
  curator:
    provider: ollama-cloud
    model: kimi-k2.5
    timeout: 600
  vision:
    provider: ollama-cloud
    model: qwen3-vl:235b-instruct
    timeout: 120
    download_timeout: 30
  triage_specifier:
    provider: ollama-cloud
    model: gemma3:12b
    timeout: 120
  profile_describer:
    provider: ollama-cloud
    model: gemma3:12b
    timeout: 60
  approval:
    provider: ollama-cloud
    model: deepseek-v4-flash
    timeout: 30
  title_generation:
    provider: ollama-cloud
    model: rnj-1:8b
    timeout: 30
  session_search:
    provider: ollama-cloud
    model: rnj-1:8b
    timeout: 30
    max_concurrency: 3
  skills_hub:
    provider: ollama-cloud
    model: rnj-1:8b
    timeout: 30
  mcp:
    provider: ollama-cloud
    model: rnj-1:8b
    timeout: 30

Как проверить у себя

Если вы используете Hermes Agent и никогда не трогали блок auxiliary::

hermes config edit

Найдите auxiliary:. Поставьте конкретный provider и model для каждой задачи — ту, которая справляется, но не тянет за собой лишние параметры. Сохраните. /reset. Основная модель перестанет съедать весь токен-бюджет. Если ваша основная модель — Claude или другая frontier-модель, настройка auxiliary ещё важнее. По умолчанию каждая фоновая задача наследует её, и вы платите premium-цену за сжатие контекста и генерацию заголовков.

Какой роутинг используете вы? Пишите в комментариях.


Если интересуетесь AI-агентами, автоматизацией рабочих процессов и конфигурации LLM — подписывайтесь на канал. Там регулярно: сырые заметки по архитектуре агентов и доработки под себя

? Telegram-канал — @azamat_dasein

Комментарии (0)