В первой части пытался разобрать внутреннее устройство Claude Code: его архитектуру, инструменты и системные промпты. И удалось это сделать, запустив Claude Code с моделью от OpenAI, что дало доступ ко всем логам. В этой статье мы разберем какими средствами можно это сделать.
Claude Code Router (CCR)
Для того, чтобы запустить Claude Code с другими моделями, я использовал Claude Code Router - это прокси-сервер, который перехватывает запросы от Claude Code, преобразует и перенаправляет их к выбранным нами моделям.
Как это возможно?
Claude Code позволяет переопределить адрес API через переменную окружения ANTHROPIC_BASE_URL и CCR использует этот механизм

Принцип работы:
Claude Code Router запускает локальный сервер (по умолчанию на порту 3456).
При запуске Claude Code через CCR он автоматически подставляет ANTHROPIC_BASE_URL=http://127.0.0.1:3456.
Claude Code отправляет запрос в формате Anthropic.
CCR на этом адресе принимает запрос, анализирует и, согласно правилам, выбирает нужную модель (например, DeepSeek, Gemini или OpenAI ).
Он преобразует запрос в формат, понятный целевому API (например, DeepSeek, OpenAI или Gemini ).
Отправляет преобразованный запрос, получает ответ и конвертирует его обратно в формат Anthropic.
Основные возможности:
Маршрутизация по задачам: Разные типы задач можно отправлять разным моделям
Поддержка множества провайдеров: OpenRouter, DeepSeek, Ollama, Gemini, и другие
Трансформация запросов: Адаптация под особенности API каждого провайдера
Установка Claude Code Router
Убедитесь, что у вас уже установлен Claude Code:
npm install -g @anthropic-ai/claude-code
Затем установите сам Router:
npm install -g @musistudio/claude-code-router
Разбор конфигурационного файла
Основные настройки Claude Code Router находятся в файле ~/.claude-code-router/config.json
. Если его нет, создайте его.
Пример:
{
"LOG": true,
"Providers": [
{
"name": "local",
"api_base_url": "http://10.12.12.123/v1/chat/completions",
"api_key": "",
"models": [
"Qwen2.5-70B"
]
},
{
"name": "openai",
"api_base_url": "https://api.openai.com/v1/chat/completions",
"api_key":"sk-proj-....",
"models": [
"gpt-4.1-nano",
"gpt-4.1"
]
},
],
"Router": {
"default": "local,Qwen2.5-70B"
}
}
Секция Providers
Здесь вы объявляете всех поставщиков моделей. Это может быть как облачный сервис, так и локальный сервер. Каждый объект в Providers - это один поставщик.
name: Уникальное имя для провайдера (например, "deepseek", "openrouter", "ollama"). Оно будет использоваться в секции Router.
api_base_url: Полный URL-адрес эндпоинта API включая
chat/completions
.api_key: Ключ провайдера.
models: Список моделей, которые вы хотите использовать от этого провайдера
transformer (необязательно): Используется для преобразования формата запросов и ответов из Anthropic под формат конкретного провайдера (deepseek, gemini, groq, openai).
Пример настройки провайдера OpenRouter (с указанным трансформером) :
{
"name": "openrouter",
"api_base_url": "https://openrouter.ai/api/v1/chat/completions",
"api_key": "sk-xxx",
"models": [
"google/gemini-2.5-pro-preview",
"anthropic/claude-sonnet-4"
],
"transformer": {"use": ["openrouter"]}
}
Секция Router
Router позволяет направлять запросы к разным моделям в зависимости от типа задачи: фоновая работа, размышления, обработка длинного контекста и т. д.
"Router": {
"default": "deepseek,deepseek-chat",
"background": "ollama,qwen2.5-coder:latest",
"think": "deepseek,deepseek-reasoner",
"longContext": "openrouter,google/gemini-2.5-pro-preview",
}
Формат записи: "провайдер,модель"
.
Теперь разберем каждый тип задач, который поддерживается CCR:
default: Модель по умолчанию.
Это основная рабочая лошадка. Она используется для всех задач, если не сработали другие, более специфичные правила.background: Модель для фоновых задач.
Когда срабатывает? Claude Code иногда выполняет небольшие фоновые задачи, например, генерацию кратких описаний или форматирование. Для этого он запрашивает легковесную модель claude-3-5-haiku. Роутер перехватывает запросы к этой модели и перенаправляет их на ту, что указана у вас в "background".think: Модель для режима планирования и размышлений.
Когда срабатывает? Когда вы активируете "Plan Mode" или когда Claude Code входит в режим глубоких размышлений, в его запросе к API появляется специальный флаг thinking. Роутер обнаруживает этот флаг и направляет запрос на модель, указанную в "think".longContext: Модель для обработки длинного контекста.
Когда срабатывает? Перед каждым запросом роутер с помощью tiktoken подсчитывает общее количество токенов в истории диалога. Если оно превышает порог в 60,000 токенов, запрос автоматически перенаправляется на модель из поля "longContext".
Запуск Claude Code через Router
После настройки запустите Claude Code Router:
ccr code
Теперь запросы из Claude Code будут автоматически направляться через Router согласно вашим настройкам.
Практические сценарии использования CCR
Когда CCR действительно полезен?
Корпоративные ограничения: CCR - это выход, если в организации запрещено использовать сторонние облачные модели, но у вас есть локальные модели или модели от проверенного корпоративного провайдера. В этом случае вы получите мощный агентский движок Claude Code, работающий в рамках ваших политик безопасности.
UPD: Спасибо propell-ant за комментарий - как оказалось, у Claude Code целых 5 адресов, который он использует, однако CCR подменяет только один, ANTHROPIC_BASE_URL, поэтому всё таки есть ограничения для корпоративного использования.Исследовательские цели: лично я использую CCR для изучения внутренних механизмов Claude Code и работы его субагентов. Это позволяет глубже понимать тонкие места, которые можно улучшить. Например, переопределить некоторые стандартные tools собственными реализациями.
Экономический вопрос: Подписка vs API
Стоит ли использовать Claude Code с моделью от OpenAI или другого провайдера, оплачивая токены по API? Скорее всего, нет.
Основная причина - стоимость. Claude Code генерирует большое количество токенов для планирования, размышлений и анализа кода. Использование его по подписке от Anthropic за ~$20 в месяц почти всегда будет выгоднее, чем оплата того же объема работы через API любого провайдера.
Таким образом, CCR - это в первую очередь инструмент для гибкости, безопасности и экспериментов, а не для прямой экономии на API популярных облачных сервисов.
В следующей статье попробуем разобрать, как происходит планирование и взаимодействие субагентов в Claude Code. Это поможет понять, как декомпозировать задачи и использовать чуть больше потенциала для кодинга.
Пишите в комментариях, работали ли с Claude Code, с какими проблемами сталкиваетесь?
И не забывайте заглядывать в мой Telegram канал.