В первой части пытался разобрать внутреннее устройство 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 канал.
ссылка на оригинал статьи https://habr.com/ru/articles/929758/
Добавить комментарий