Зафиксируйте модель агентов — планирование на одной, исполнение на другой
Нейтрализуйте выбор модели на клиенте, затем разделите режим планирования и исполнение, чтобы сильная модель планировала, а дешёвая исполняла.
На что на самом деле жалуется сообщество
«Наши разработчики переключают Claude Code на Opus, чтобы суммаризировать changelog», «у всех в настройках разные модели, и мы не видим, кто сколько потратил», «мы пробовали клиентскую политику, но любой может просто вернуть настройку обратно».
Выбор модели — это решение о затратах, а не предпочтение разработчика, — его нужно принудительно применять на шлюзе, куда запрос действительно приходит.
Как это делает GateLLM
Три слоя, ни один нельзя пропустить: белый список моделей группы ключей (входной шлюз) отклоняет неразрешённые имена моделей с 403; сквозное сопоставление по from «*» переписывает то, что запрашивает клиент, в санкционированную модель; а скрипт в слоте before оставляет режим планирования на сильной модели и переключается на модель исполнения при выходе.
Обходные запросы — вроде генерации заголовков диалога в Claude Code — не несут маркера планирования, поэтому попадают на дешёвую модель исполнения. Это ровно то поведение «не запускайте Opus на резюме», которого вы хотели.
5 рычагов, которые действительно работают
- Входной шлюз: белый список моделей группы ключей отклоняет любое неразрешённое имя модели до маршрутизации
- Сквозное сопоставление: from «*» → санкционированная модель нормализует каждое запрошенное имя к одной модели
- Разделение plan/exec: скрипт в слоте before читает маркеры режима планирования и переключает маршрутизацию только после выхода из плана
- Наблюдаемость: переключённые запросы получают метку SW в логах, поэтому реальная модель каждого запроса аудируема
- Горячая перезагрузка: сопоставления и правила вступают в силу немедленно — без перезапуска и без раскатки на каждого разработчика