Отдавайте каждую задачу самой дешёвой модели, которая с ней справится
Черновую работу — дешёвой открытой модели, сложное мышление — Claude, автоматически, с одним маленьким локальным роутером.
По материалам: claude-code-router на GitHub.
Результат
К концу у вас будет роутер, который отправляет рутинную объёмную работу дешёвой модели, а сложные рассуждения — сильной, сам решая, что есть что. Вы перестанете переплачивать за простые задачи и экономить на сложных.
- Рабочая настройка OpenRouter из гайда про открытые модели
- Node и npm на вашей машине (чтобы установить один инструмент командной строки)
- Ключ OpenRouter и примерно пятнадцать минут
Направить Claude Code на одну открытую модель — уже большая экономия, но это грубый инструмент: одна и та же модель отвечает и на однострочное переименование, и на запутанный рефакторинг в несколько файлов, так что вы либо переплачиваете за простое, либо недодаёте мощности сложному. Роутер это исправляет. Это маленькая программа, которая работает на вашей машине, стоит между Claude Code и моделями, смотрит на каждый запрос, относит его к одному из уровней (быстрая фоновая задача, повседневная работа, сложное мышление, огромный контекст) и передаёт той модели, которую вы назначили на этот уровень. Это автоматическая версия ручного разделения из гайда про открытые модели: дешёвые модели — для черновой работы, Claude — для мышления, и решение принимается за вас, запрос за запросом.
1. Установите роутер
Роутер — это один маленький инструмент командной строки, устанавливается один раз. Ему нужны Node и npm, которые уже стоят на большинстве машин, настроенных для современной разработки (если npm нет, сначала установите Node с nodejs.org). Установка даёт новую команду ccr, сокращение от Claude Code Router. Claude Code пока никуда направлять не нужно; это произойдёт при запуске на шаге 3.
Устанавливается один раз. Добавляет новую команду ccr. Если npm вам незнаком, он идёт в комплекте с Node с nodejs.org. npm install -g @musistudio/claude-code-router # теперь у вас есть команда `ccr`. Вы запустите её на шаге 3 так: ccr code2. Укажите модели и маршрутизацию
Роутер читает один файл: ~/.claude-code-router/config.json. В нём две части. Providers — откуда берутся модели: придуманное вами имя, адрес, ваш ключ, список id моделей, которые вы будете использовать, и строка transformer, которая приводит запросы к формату провайдера (openrouter для OpenRouter). Router — сама маршрутизация: каждое имя уровня указывает на одну пару provider,model-id. Блок ниже — гибридная настройка: бесплатная модель для одноразовых фоновых вызовов, GLM для повседневной работы, Claude для сложного мышления и модель с большим контекстом для всего, что превышает порог. Замените id на любые другие (точные id копируйте со страницы моделей OpenRouter) и сохраните.
~/.claude-code-router/config.json. Фон идёт на дешёвую модель, сложный уровень остаётся на Claude. Здесь лежат ваши ключи, так что никогда не коммитьте этот файл. { "Providers": [ { "name": "openrouter", "api_base_url": "https://openrouter.ai/api/v1/chat/completions", "api_key": "sk-or-your-openrouter-key", "models": [ "z-ai/glm-5.2", "anthropic/claude-opus-4-8", "openai/gpt-oss-120b:free" ], "transformer": { "use": ["openrouter"] } } ], "Router": { "default": "openrouter,z-ai/glm-5.2", "background": "openrouter,openai/gpt-oss-120b:free", "think": "openrouter,anthropic/claude-opus-4-8", "longContext": "openrouter,z-ai/glm-5.2", "longContextThreshold": 60000 } }Что означает каждый уровень, чтобы настроить разделение под себя
- background: маленькие автоматические вызовы, которые Claude Code делает постоянно (саммари, заголовки, быстрые проверки), плюс черновая работа с низкими ставками. Ставьте сюда самую дешёвую модель; этот уровень работает чаще всех.
- default: ваша повседневная работа, всё, что не попадает в более специфичный уровень. Сюда подходит дешёвая, но способная модель вроде GLM 5.2.
- think: сложные рассуждения и работа в режиме планирования. Этот уровень стоит держать на сильной модели вроде Claude, даже если она дороже: он вызывается реже всего, а важен больше всего.
- longContext: запросы больше longContextThreshold токенов (60000 в примере выше). Направьте его на модель, которая хорошо работает с большим контекстом.
- Любой из уровней можно переопределить для одной сессии командой /model из шага 5.
Маршрут уровня think на anthropic/claude-opus-4-8 всё равно идёт через OpenRouter и несёт его небольшую наценку. Если для этого уровня вы предпочитаете платить Anthropic напрямую, добавьте второго провайдера, указывающего на ваш аккаунт Claude; точный формат есть в репозитории.
3. Запустите Claude Code через роутер
Всё делает одна команда: ccr code запускает роутер (если он ещё не работает) и открывает сессию Claude Code, направленную на него. Роутер работает локально на 127.0.0.1:3456 и должен оставаться запущенным, чтобы маршрутизация работала, так что не выключайте его. Одно спотыкает всех: правки конфига не применяются на лету. После любого изменения файла выполните ccr restart. Остальные команды: ccr start (запуск в фоне), ccr stop, ccr status и ccr ui (небольшая веб-страница для редактирования конфига).
ccr code запускает роутер и открывает Claude Code через него, одним шагом. Claude Code❯ ccr code
Router running on 127.0.0.1:3456
Claude Code · routing by task
# Не выключайте его. Правили конфиг? Выполните ccr restart, сам он изменения не перечитывает.
4. Используйте в VS Code
То же разделение, что и в других гайдах. Во встроенном терминале VS Code выполните ccr code, и маршрутизация работает ровно как в обычном терминале. Чат-сайдбар через ccr не проходит, поэтому чтобы маршрутизировать и его, держите роутер запущенным через ccr start и направьте расширение на локальный роутер: задайте ANTHROPIC_BASE_URL с адресом роутера в claudeCode.environmentVariables и перезагрузите окно. Если это больше возни, чем пользы, просто используйте встроенный терминал, которому ничего из этого не нужно.
Чтобы маршрутизировать и сайдбар VS Code: держите роутер запущенным (ccr start), добавьте это в настройки самого VS Code и перезагрузите окно. // settings.json VS Code (роутер должен быть запущен: ccr start) { "claudeCode.environmentVariables": [ { "name": "ANTHROPIC_BASE_URL", "value": "http://127.0.0.1:3456" } ] }5. Переключайтесь на лету и обратно
Чтобы переопределить маршрут для одной сессии, не трогая конфиг, используйте /model с той же формой provider,model-id: удобно, когда одну задачу хочется отдать модели помощнее. Чтобы совсем отключить маршрутизацию, выполните ccr stop и вернитесь к обычной сессии claude, которая снова говорит с Claude напрямую; обычная сессия через роутер не проходит. Файл конфига остаётся на месте до следующего раза, так что снова включить роутер — это просто ccr code.
Переопределите модель для одной сессии или остановите роутер и вернитесь к обычному Claude. Claude Code❯ /model openrouter,z-ai/glm-5.2
This session now uses z-ai/glm-5.2 for everything.
❯ ccr stop
# Роутер выключен. Запустите claude (не ccr code), и вы снова напрямую на Claude.
Главное
Роутер читает каждый запрос, относит его к уровню и отправляет модели, которую вы туда назначили. Самая дешёвая — на background, способная — на default, Claude — на think. Автоматическая версия разделения вручную.
Предпочитаете учиться на практике?
Интерактивная версия этого плейбука живет в melwyn Class: с анимированными демо терминала, разборами Claude Code и библиотекой, которая сохраняет ваши выводы. Class — на английском.