Перейти к основному содержанию

OpenAI-модели в Claude Code через CLIProxyAPI

Claude Code даёт готовый coding agent с доступом к файлам и терминалу, Plan Mode, subagents, hooks, skills, MCP и системой permissions. Клиент читает инструкции проекта из CLAUDE.md, поэтому накопленные правила не приходится переносить в новый формат.

CLIProxyAPI1 позволяет оставить этот интерфейс и отправлять запросы в модели OpenAI. Claude Code обращается к локальному Anthropic-совместимому endpoint, прокси переводит запрос в протокол провайдера и возвращает ответ в понятном клиенту формате.

Я проверял настройку 15 июля 2026 года на macOS с CLIProxyAPI 7.2.75 и Claude Code 2.1.210. В списке моделей были gpt-5.6-sol, gpt-5.6-terra и gpt-5.6-luna. Имена моделей и доступность через OAuth меняются, поэтому перед настройкой стоит запросить /v1/models у своего экземпляра прокси.

Что остаётся от Claude Code

При такой схеме Claude Code продолжает управлять рабочим процессом:

  • находит файлы и передаёт модели нужный контекст;
  • запускает команды, тесты и другие tools;
  • применяет permissions, hooks, skills, MCP и настройки из .claude/;
  • загружает CLAUDE.md, CLAUDE.local.md и .claude/rules/.

Модель OpenAI получает уже собранный prompt и описания tools. CLIProxyAPI отвечает за аутентификацию, преобразование форматов и выбор upstream:

Claude Code
    │ Anthropic Messages API
    ▼
CLIProxyAPI на 127.0.0.1:8317
    │ перевод запроса и ответа
    ├── OpenAI Codex OAuth
    ├── Anthropic OAuth или API key
    ├── Gemini API
    └── OpenAI-совместимый provider, например OpenRouter

CLAUDE.md обрабатывает сам клиент, поэтому смена модели не отключает инструкции проекта. Claude Code загружает файлы от корня файловой системы до текущего каталога, а вложенные инструкции добавляет, когда читает файлы в соответствующем подкаталоге2. Команда /memory показывает, какие инструкции попали в текущую сессию.

CLAUDE.md попадает в контекст как сообщение пользователя, поэтому модель может нарушить инструкции. Для запретов и обязательных действий Anthropic рекомендует permissions и hooks2. Качество соблюдения правил также зависит от выбранной модели.

Зачем сочетать Claude Code и OpenAI

Такая схема упрощает миграцию. Если проект уже хранит команды сборки, архитектурные решения и правила review в CLAUDE.md, они продолжат работать. Не нужно заводить второй набор инструкций ради другой модели.

Ещё один плюс даёт выбор модели под задачу. В Claude Code есть логические уровни opus, sonnet и haiku. Их можно сопоставить с тремя моделями OpenAI: дорогой для планирования, средней для основной работы и быстрой для фоновых операций. Режим opusplan использует opus в Plan Mode и переключается на sonnet при реализации3.

CLIProxyAPI также даёт единую точку настройки. Он хранит несколько учётных записей, подключает API keys, назначает моделям aliases и направляет запросы по префиксу. Клиент остаётся прежним, даже если upstream меняется.

Установка на macOS

Claude Code и CLIProxyAPI доступны в Homebrew:

brew install --cask claude-code
brew install cliproxyapi

Anthropic предлагает и native installer, который обновляет Claude Code автоматически. Homebrew-версию нужно обновлять командой brew upgrade claude-code4. CLIProxyAPI устанавливает конфигурацию в:

echo "$(brew --prefix)/etc/cliproxyapi.conf"

На Apple Silicon это обычно /opt/homebrew/etc/cliproxyapi.conf; на Intel Mac используется /usr/local/etc/cliproxyapi.conf5.

Сначала создадим локальный token, которым Claude Code будет авторизоваться в прокси:

openssl rand -hex 32

Скопируйте результат и откройте конфигурацию:

nano "$(brew --prefix)/etc/cliproxyapi.conf"

Для локального запуска достаточно следующего файла:

host: "127.0.0.1"
port: 8317
auth-dir: "~/.cli-proxy-api"

api-keys:
  - "ВСТАВЬТЕ_СЮДА_СЛУЧАЙНЫЙ_TOKEN"

routing:
  strategy: "fill-first"
  session-affinity: true
  session-affinity-ttl: "1h"

request-retry: 3
max-retry-interval: 30

remote-management:
  allow-remote: false
  secret-key: ""
  disable-control-panel: true

Параметр host: "127.0.0.1" закрывает порт от других машин. Значение по умолчанию пустое и заставляет CLIProxyAPI слушать все IPv4- и IPv6-интерфейсы6. Для локального coding agent это лишний риск.

Вход в OpenAI

CLIProxyAPI получает доступ к моделям OpenAI через Codex OAuth:

cliproxyapi -codex-login

Команда откроет браузер и сохранит OAuth credentials в auth-dir. Если браузер нужно открыть на другой машине, добавьте --no-browser. Для локального callback Codex CLIProxyAPI по умолчанию открывает port 14557. Доступные модели и quotas зависят от учётной записи OpenAI.

После входа запустите сервис:

brew services start cliproxyapi

Проверим service и список доступных моделей двумя командами:

brew services list | grep cliproxyapi

curl -sS \
  -H "Authorization: Bearer ВАШ_ЛОКАЛЬНЫЙ_TOKEN" \
  http://127.0.0.1:8317/v1/models

Первая команда подтверждает работу процесса, вторая показывает модели, доступные именно вашей учётной записи. Если модель отсутствует в этом ответе, не добавляйте её в Claude Code по примеру из статьи.

Настройка Claude Code

Claude Code можно настроить через переменные окружения или ~/.claude/settings.json. Второй вариант действует и в CLI, и в расширении VS Code8. Откройте файл:

nano ~/.claude/settings.json

Добавьте локальный endpoint и сопоставление моделей:

{
  "model": "opusplan",
  "env": {
    "ANTHROPIC_BASE_URL": "http://127.0.0.1:8317",
    "ANTHROPIC_AUTH_TOKEN": "ВСТАВЬТЕ_ТОТ_ЖЕ_ЛОКАЛЬНЫЙ_TOKEN",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "gpt-5.6-sol(xhigh)",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "gpt-5.6-terra(high)",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "gpt-5.6-luna(low)"
  }
}

OpenAI описывает sol как модель с максимальными возможностями, terra как более экономичный вариант, а luna как модель для быстрых массовых запросов9. Это даёт понятное соответствие уровням Claude Code:

Alias Claude CodeМодель OpenAIЗадачи
opusgpt-5.6-sol(xhigh)Plan Mode, сложный анализ и review
sonnetgpt-5.6-terra(high)реализация и обычная работа с кодом
haikugpt-5.6-luna(low)быстрые и фоновые запросы

Суффиксы в скобках обрабатывает CLIProxyAPI. Для OpenAI и Codex прокси удаляет суффикс из имени модели и записывает уровень в reasoning.effort. Поддерживаются minimal, low, medium, high, xhigh, auto и none10. Если provider отвергает уровень, запрос вернёт HTTP 400. Начните с high, а xhigh оставьте для задач, где дополнительное время и расход tokens дают заметный результат.

Запустите Claude Code из проекта:

cd ~/src/my-project
claude

Команда /model покажет логические модели Claude Code. При конфигурации выше opus, sonnet и haiku отправятся в разные модели OpenAI. /model opusplan закрепляет разделение: sol для плана, terra для реализации.

Для разовой проверки можно не менять settings.json:

ANTHROPIC_BASE_URL=http://127.0.0.1:8317 \
ANTHROPIC_AUTH_TOKEN=ВАШ_ЛОКАЛЬНЫЙ_TOKEN \
ANTHROPIC_MODEL='gpt-5.6-sol(high)' \
claude

Несколько провайдеров и явный роутинг

CLIProxyAPI выбирает upstream по имени модели. Для OpenAI-совместимых сервисов можно задать prefix, который исключает неоднозначность. Например, добавим OpenRouter в cliproxyapi.conf:

openai-compatibility:
  - name: "openrouter"
    prefix: "openrouter"
    base-url: "https://openrouter.ai/api/v1"
    api-key-entries:
      - api-key: "sk-or-v1-..."
    models:
      - name: "moonshotai/kimi-k2:free"
        alias: "kimi-k2"

Теперь имя openrouter/kimi-k2 направляет запрос в OpenRouter. Документация CLIProxyAPI использует тот же upstream и alias в примере конфигурации11. Перед назначением сторонней модели уровню haiku проверьте поддержку tools: Claude Code зависит от корректного function calling.

Можно направить разные уровни Claude Code в разные провайдеры:

{
  "env": {
    "ANTHROPIC_BASE_URL": "http://127.0.0.1:8317",
    "ANTHROPIC_AUTH_TOKEN": "ВАШ_ЛОКАЛЬНЫЙ_TOKEN",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "gpt-5.6-sol(xhigh)",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "gpt-5.6-terra(high)",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "openrouter/kimi-k2"
  }
}

CLIProxyAPI отслеживает изменения cliproxyapi.conf и auth-dir и применяет большинство из них без перезапуска12. После правки повторите запрос к /v1/models, чтобы обнаружить опечатку в alias или недоступный провайдер.

Несколько credentials одного провайдера

Параметр routing.strategy выбирает credential, когда одной модели соответствуют несколько учётных записей:

  • round-robin чередует доступные credentials;
  • fill-first использует первую до исчерпания quota, затем переходит к следующей.

session-affinity: true сохраняет выбранную credential для сессии. CLIProxyAPI извлекает session ID из поля metadata.user_id, которое передаёт Claude Code. При недоступности credential прокси выполняет failover, а session-affinity-ttl задаёт срок привязки6.

Для явного разделения маршрутов используйте prefix и включите force-model-prefix: true. Если для учётной записи обязателен prefix, прокси не направит через неё запрос без префикса. Поля excluded-models позволяют закрыть отдельные модели или wildcard-группы для конкретного provider.

Возможные проблемы

Протоколы совпадают не полностью

Claude Code отправляет Anthropic Messages API, а CLIProxyAPI переводит его в OpenAI Responses или другой upstream-протокол. Streaming и tools поддерживаются, но сложные tool calls, extended thinking, prompt caching и подсчёт tokens могут вести себя иначе. После обновления клиента, прокси или модели полезно прогнать один и тот же небольшой coding task и проверить diff.

Функции OpenAI, которых нет в протоколе Claude Code, клиент не сможет использовать напрямую. Например, выбор модели через Claude Code не превращает его в Codex CLI и не добавляет элементы Responses API, для которых у Claude Code нет интерфейса.

System prompt рассчитан на Claude

Claude Code формирует prompt и tool schemas под модели Claude. GPT обычно справляется с ними, но может иначе планировать работу, чаще запрашивать подтверждение или хуже соблюдать часть инструкций. Модель реже отклоняется от коротких проверяемых правил в CLAUDE.md.

Дополнительная точка отказа

Рабочая цепочка теперь зависит от Claude Code, локального процесса CLIProxyAPI и upstream provider. Сессия прервётся, если прокси ошибётся при переводе протокола или получит устаревший model ID. Версии клиента и прокси лучше обновлять вместе и проверять через короткий smoke test.

OAuth и API могут измениться

CLIProxyAPI развивает сторонняя команда. Anthropic и OpenAI не заявляют официальную поддержку связки Claude Code с Codex OAuth. Provider может изменить OAuth flow, quotas или допустимые способы использования. Перед рабочим применением проверьте условия своей подписки и не стройте критичный CI только на интерактивном OAuth.

Secrets хранятся локально

OAuth credentials лежат в ~/.cli-proxy-api, API ключи могут находиться в cliproxyapi.conf, а локальный токен записан в ~/.claude/settings.json. Ограничьте права на файлы:

chmod 700 ~/.cli-proxy-api ~/.claude
chmod 600 "$(brew --prefix)/etc/cliproxyapi.conf" ~/.claude/settings.json

Не коммитьте эти файлы. Если прокси нужен на нескольких компьютерах, настройте TLS, firewall и отдельные client tokens. Недостаточно открыть port 8317 в локальной сети.

Часть корпоративных функций отключается

Claude Code считает нестандартный ANTHROPIC_BASE_URL сторонним provider. Server-managed настройки Anthropic при такой схеме недоступны13. Локальные и проектные настройки, permissions и hooks продолжают работать, но централизованные политики нужно развернуть другим способом.

Диагностика

Проверять цепочку удобнее по уровням.

Сначала убедитесь, что сервис запущен:

brew services list | grep cliproxyapi
lsof -nP -iTCP:8317 -sTCP:LISTEN

Затем запросите модели с тем же token, который указан в Claude Code:

curl -sS \
  -H "Authorization: Bearer ВАШ_ЛОКАЛЬНЫЙ_TOKEN" \
  http://127.0.0.1:8317/v1/models

Если endpoint отвечает, запустите claude и выполните /doctor. Команда /memory подтвердит загрузку CLAUDE.md, а /model покажет выбранный alias.

Ошибки самого прокси удобнее смотреть при foreground-запуске. Остановите service, запустите тот же binary с явным config path, а после диагностики снова запустите service:

brew services stop cliproxyapi
cliproxyapi -config "$(brew --prefix)/etc/cliproxyapi.conf"

# После Ctrl+C
brew services start cliproxyapi

После смены провайдеров начните новую сессию. Так старый context и prompt cache не будут влиять на сравнение.

Итоговая конфигурация

Для локальной работы я бы начал с Codex OAuth и трёх OpenAI-моделей:

  • gpt-5.6-sol(xhigh) для планирования и сложного review;
  • gpt-5.6-terra(high) для реализации;
  • gpt-5.6-luna(low) для быстрых операций.

Claude Code продолжает использовать tools coding agent и инструкции проекта из CLAUDE.md. Через CLIProxyAPI можно менять provider, не переписывая workflow. При этом вам придётся поддерживать дополнительный процесс, проверять преобразование протоколов и тестировать совместимость после обновлений.

Источники