Суть решения: ИИ-маршрутизатор вместо ручного выбора
Разработчик davila7 представил мод jev-model-router для Claude Code, который решает проблему неэффективного использования токенов. Вместо того чтобы пользователь вручную выбирал модель (например, Opus или Sonnet) для каждой задачи, мод использует System One от TypeSafe (модель Jev) для анализа промпта перед отправкой.
Система работает по принципу «вход — неструктурированное состояние, выход — типизированный выбор с распределением вероятностей». Модификатор анализирует задачу на три параметра:
- Tier (Уровень сложности): Механическая работа, обычная инженерия или сложные/высокостакые задачи.
- Effort (Уровень рассуждений): Оценка от 1 до 4, определяющая, сколько шагов логического вывода нужно.
- Risky (Рискованность): Флаг, указывающий на работу с продакшеном, деньгами или неизменяемым состоянием.
Технические детали и бэкенды
Мод поддерживает два внешних бэкенда для классификации, а также встроенный классификатор. Выбор бэкенда зависит от наличия API-ключей. Ключевое отличие TypeSafe — предоставление калиброванной уверенности (confidence), что критично для принятия решений.
| Параметр | TypeSafe API | Vercel AI Gateway | Built-in (Встроенный) |
|---|---|---|---|
| Endpoint | POST api.typesafe.ai/v1/systemone | POST ai-gateway.vercel.sh/v4/ai/evaluation-model | Локальный классификатор |
| Модель | jev-latest | typesafe-ai/jev | $.model.classify |
| Confidence | Отчетливая уверенность (calibrated) | Макс. вероятность из распределения (опционально) | Отсутствует |
| Приоритет | Высокий (если есть ключ) | Средний (если есть ключ) | Фолбэк (если нет ключей) |
Логика принятия решений и пороги
Система не просто выбирает модель, она взвешивает риски ошибки. Ошибка в сторону «переплаты» (слишком мощная модель) и «недоплаты» (слишком слабая модель) оценивается по-разному:
- minUpgradeConfidence (по умолчанию 0.3): Порог для перехода на более дорогую/мощную модель. Если уверенность классификатора ниже этого значения, система оставляет текущую модель, чтобы не тратить лишние токены на сомнительные задачи.
- minDowngradeConfidence (по умолчанию 0.6): Порог для перехода на более дешевую модель. Требуется высокая уверенность, чтобы снизить затраты, так как ошибка здесь может привести к некачественному ответу.
- Risky > 0.7: Задачи с высоким риском автоматически направляются в «глубокий» уровень с полным рассуждением, игнорируя стандартные пороги экономии.
Влияние на производительность и кэш
Мод использует хуки Claude Code для перехвата запросов:
- prompt.submit: Классификация происходит до начала хода. Решение применяется к первому запросу модели и переиспользуется в рамках хода.
- agent.spawn: Позволяет маршрутизировать модели для субагентов (по умолчанию включено). Это безопасно, так как субагенты имеют свой контекст.
- turn.step: Позволяет менять модель/усилие в основном цикле. Важно: Это действие инвалидирует prompt cache. На длинных контекстах перекэширование может стоить дороже, чем экономия на модели. Рекомендуется включать только после замера собственных сессий.
Практическое применение и логирование
Мод интегрируется через папку .claude/skills/ или флаг --mod. Для работы требуется Claude Code версии 2.1.259+ и включенный флаг CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1.
При включенном logDecisions (по умолчанию) в консоль выводятся детальные логи, например:
[jev-model-router] jev: tier fast (0.87) · effort 0.4 → low (0.71) · risky 0.02 · 249ms
[jev-model-router] main loop → effort low: fast (confidence 0.87)
Если уверенность низкая (как во втором примере в исходнике, где confidence 0.41), мод может отказаться от изменения модели, оставив текущую (например, opus/medium), чтобы избежать риска ошибки. Это позволяет балансировать между стоимостью и качеством, не требуя постоянного ручного контроля.
Источник: Github ↗
