Vibe Coding: Заглянем под капот Claude Code. Часть 2

от автора

В первой части пытался разобрать внутреннее устройство Claude Code: его архитектуру, инструменты и системные промпты. И удалось это сделать, запустив Claude Code с моделью от OpenAI, что дало доступ ко всем логам. В этой статье мы разберем какими средствами можно это сделать.

Claude Code Router (CCR)

Для того, чтобы запустить Claude Code с другими моделями, я использовал Claude Code Router — это прокси-сервер, который перехватывает запросы от Claude Code, преобразует и перенаправляет их к выбранным нами моделям.

Как это возможно?
Claude Code позволяет переопределить адрес API через переменную окружения ANTHROPIC_BASE_URL  и CCR использует этот механизм

Переопределенный ANTHROPIC_BASE_URL

Переопределенный ANTHROPIC_BASE_URL

Принцип работы:

  1. Claude Code Router запускает локальный сервер (по умолчанию на порту 3456).

  2. При запуске Claude Code через CCR он автоматически подставляет  ANTHROPIC_BASE_URL=http://127.0.0.1:3456.

  3. Claude Code отправляет запрос в формате Anthropic.

  4. CCR на этом адресе принимает запрос, анализирует и, согласно правилам, выбирает нужную модель (например, DeepSeek, Gemini или OpenAI ).

  5. Он преобразует запрос в формат, понятный целевому API (например, DeepSeek, OpenAI или Gemini ).

  6. Отправляет преобразованный запрос, получает ответ и конвертирует его обратно в формат 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/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *