Как стать автором
Поиск
Написать публикацию
Обновить

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

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров2K

В первой части пытался разобрать внутреннее устройство 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 канал.

Теги:
Хабы:
+2
Комментарии4

Публикации

Ближайшие события