Роутер моделей слабее модели. Отдайте выбор ей

Почему эвристика роутера проигрывает сильной модели, и как в Replit Agent выбор субагента делает сам core loop.

· 2 мин чтения

Если под разные задачи у вас несколько моделей, хочется поставить между ними роутер: маленькую модель или эвристику, которая на каждом шаге решает, кого звать. Это интуитивно понятный ход, но у него есть фундаментальное ограничение.

В Replit пишут: какую бы продвинутую эвристику или маленькую модель вы ни поставили, роутер всегда будет слабее модели, для которой он выбирает.

Что сделали в Replit Agent

В Replit Agent выбор, какого субагента звать и с каким уровнем усилия, делает сам главный агент, его называют core loop. Он же по ходу задачи меняет и свой режим работы.

В качестве иллюстрации: GPT-6 Astra в этом режиме передаёт рутинную реализацию более дешёвым субагентам, а сама решает, куда тратить свои токены. На бенчмарках DeepSWE и Terminal-Bench Replit Agent оказался Pareto-эффективен относительно Astra самой по себе: ни один опубликованный базовый вариант Astra не был одновременно дешевле и сильнее. Та же схема, но с одним долгоживущим воркером вместо выбора субагентов, проиграла 11 и 16 пунктов.

Почему это работает

Жёстко зашитые эвристики ломаются на каждом релизе модели. В Replit заметили, что модели становятся сильнее в длинных задачах и всё меньше нуждаются в обвязке. Они сами тяготеют к делегированию: используют субагентов ради управления контекстом и параллелизма. Свежие результаты, включая задачу Навье–Стокса, во многом стали результатом координации роёв агентов на передовых моделях.

Но передний край неровный: лучшая модель для кода не обязательно лучшая для интерфейсов или писем. Поэтому в Replit проектируют обвязку так, чтобы каждая модель работала по-своему, с нужными ей ограничителями и целью «качество при минимальной цене».

Как применить

  1. Найдите в своём агенте место, где сейчас работает роутер: эвристика по длине запроса, по типу задачи, по ключевым словам. Выпишите его правила одной строкой и посмотрите, насколько они грубые.
  2. Сделайте у субагентов явные уровни: дешёвый для рутины, средний для большинства задач, дорогой для сложных. Опишите каждый уровень и его цену так, чтобы это прочитала модель, а не только человек.
  3. Дайте core loop инструмент, которым он сам выбирает уровень субагента. Никакой внешней логики сверху: модель сама решает, кого звать.
  4. Запустите один и тот же сценарий дважды: с роутером-эвристикой и с выбором от core loop. Сравните цену и качество, держите ту же модель на верхнем уровне в обоих вариантах.
  5. Если модель тратит токены на слишком дорогих субагентов, оставьте это и посмотрите логи. Если расход неоправдан, скорректируйте описания уровней, а не возвращайте роутер.