Русский

Подключение внешних моделей к Codex

Локальные клиенты Codex не ограничены моделями, размещёнными OpenAI. С помощью CC Switch или пользовательского model provider Codex можно подключить к стороннему поставщику моделей, сервису агрегации API или внутреннему шлюзу компании.

В этом руководстве рассматриваются два способа интеграции размещённых сторонних моделей:

Способ интеграции Лучше всего подходит для / Преобразование протокола
CC Switch Поставщиков, предоставляющих Chat Completions или Anthropic Messages, а также пользователей, желающих переключать поставщиков через графический интерфейс

Преобразование протокола: CC Switch выполняет преобразование в соответствии с вышестоящим протоколом
Пользовательский model provider Сервисов, которые полностью и нативно реализуют OpenAI Responses API

Преобразование протокола: Не требуется

Прежде всего необходимо учитывать одно важное ограничение:

Это руководство применимо к локально запущенным клиентам Codex, включая Codex CLI, расширение Codex для IDE и настольные клиенты, считывающие тот же config.toml. В настоящее время в облачных чатах Codex нельзя переключиться на пользовательскую модель с помощью этой конфигурации.

Перед началом работы

Установка или обновление Codex CLI

npm install -g @openai/codex@latest
codex --version

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

codex

Это инициализирует каталог пользовательской конфигурации.

Расположение файлов конфигурации Codex

macOS и Linux:

~/.codex/config.toml

Windows:

%USERPROFILE%\.codex\config.toml

Перед внесением изменений создайте резервную копию файла.

macOS / Linux:

mkdir -p ~/.codex/backup
cp ~/.codex/config.toml \
  ~/.codex/backup/config.toml.$(date +%Y%m%d-%H%M%S) \
  2>/dev/null || true

PowerShell:

$codexDir = Join-Path $HOME ".codex"
$backupDir = Join-Path $codexDir "backup"
New-Item -ItemType Directory -Force -Path $backupDir | Out-Null

$configFile = Join-Path $codexDir "config.toml"
if (Test-Path $configFile) {
  $timestamp = Get-Date -Format "yyyyMMdd-HHmmss"
  Copy-Item $configFile (Join-Path $backupDir "config.toml.$timestamp")
}

Поставщики, MCP и шлюзы моделей — разные понятия

Они решают разные задачи:

  • model_provider определяет, куда Codex отправляет запросы к модели;
  • MCP добавляет инструменты и контекст, например GitHub, браузеры или базы данных;
  • шлюз модели обеспечивает преобразование протоколов, аутентификацию, маршрутизацию, журналирование или ограничение частоты запросов между Codex и вышестоящей моделью.

Чтобы изменить базовую модель, настройте поставщика, а не MCP.

Защита API key

Не добавляйте настоящие API key в репозиторий Git и не показывайте их полностью на снимках экрана, в журналах или обращениях в службу поддержки.

Для поставщиков, настраиваемых вручную, предпочтительно использовать переменные окружения:

[model_providers.example]
env_key = "EXAMPLE_API_KEY"

CC Switch хранит конфигурацию поставщика локально и изменяет локальную конфигурацию Codex при переключении поставщиков. Это сторонний инструмент с открытым исходным кодом, а не продукт OpenAI. Устанавливайте его только с официального сайта CC Switch или из репозитория GitHub и защищайте его локальную базу данных, конфигурацию и резервные копии.


1. Подключение сторонних моделей с помощью CC Switch

CC Switch — более простой вариант для большинства сторонних моделей. Он управляет поставщиками, API key, списками моделей и локальной маршрутизацией, а также может преобразовывать несовместимые вышестоящие протоколы.

1.1 Какие задачи решает CC Switch

Современные клиенты Codex отправляют запросы Responses API, тогда как многие сторонние сервисы предоставляют одно из следующего:

  • OpenAI Chat Completions;
  • Anthropic Messages;
  • идентификаторы моделей, отсутствующие в стандартном списке Codex;
  • специфичные для поставщика параметры рассуждений или форматы потоковых событий.

CC Switch может преобразовывать путь запроса следующим образом:

Codex
  │  Responses API

CC Switch local route
  │  Converts the protocol and model name when required

Third-party model API


CC Switch converts JSON, SSE, reasoning data, and tool calls back to Responses


Codex

Поставщику с нативной поддержкой Responses преобразование протокола Chat не требуется. Поставщику Chat Completions или Anthropic Messages необходима локальная маршрутизация.

1.2 Установка CC Switch

Используйте только официальные каналы распространения:

В macOS рекомендуется Homebrew:

brew install --cask cc-switch

Для обновления:

brew upgrade --cask cc-switch

В Windows загрузите установщик .msi или переносимый архив со страницы Releases.

В Linux загрузите пакет .deb, .rpm или AppImage со страницы Releases. Названия могут немного меняться между версиями, поэтому используйте последний стабильный выпуск и считайте параметры, отображаемые в приложении, приоритетными.

1.3 Предварительные условия

Подготовьте следующее:

  1. Codex установлен и был запущен хотя бы один раз;
  2. CC Switch установлен и запускается корректно;
  3. у вас есть API key целевого сервиса моделей;
  4. вы проверили Base URL, идентификатор модели и вышестоящий протокол в документации поставщика;
  5. если вам нужны официальные функции учётной записи Codex, сначала выполните один официальный вход.

Проверьте текущее состояние входа в Codex:

codex login status

При необходимости войдите:

codex login

Также доступен вход с помощью кода устройства:

codex login --device-auth

1.4 Необязательно: сохранение официального входа при использовании стороннего поставщика

Это особенно полезно, если требуется сохранить функции настольного приложения, официальные плагины или возможности удалённого управления, отправляя при этом запросы к модели стороннему поставщику. Пользователи только CLI, не зависящие от официальных функций учётной записи, могут пропустить этот раздел.

Рекомендуемый порядок:

  1. выберите OpenAI Official на панели Codex в CC Switch;
  2. запустите Codex и войдите с официальной учётной записью;
  3. откройте Settings → General → Codex App Enhancements в CC Switch;
  4. включите Keep official login when switching third-party providers;
  5. добавьте стороннего поставщика или переключитесь на него.

При включённом параметре CC Switch пытается сохранить:

  • ~/.codex/auth.json для состояния официального входа;
  • ~/.codex/config.toml для активного стороннего поставщика, модели, конечной точки и конфигурации аутентификации.

auth.json содержит конфиденциальные данные входа. Не передавайте его другим и не добавляйте в систему контроля версий.

1.5 Добавление стороннего поставщика

Откройте CC Switch, перейдите на верхнеуровневую панель Codex и нажмите кнопку добавления в правом верхнем углу.

Предпочитайте встроенные предустановки

Если предустановка существует, используйте её и введите только API key и необходимые значения конкретной учётной записи. Обычно предустановка настраивает:

  • Base URL;
  • модель по умолчанию;
  • вышестоящий протокол;
  • необходимость локальной маршрутизации;
  • сопоставления моделей;
  • выбранные параметры рассуждений.

Список предустановок меняется по мере развития CC Switch. В долгосрочной документации не следует жёстко закреплять текущий идентификатор модели поставщика; используйте список в приложении и официальную документацию поставщика.

Создание пользовательского поставщика

Если предустановка отсутствует, выберите пользовательскую конфигурацию и укажите:

Поле Описание
Provider Name Локальное отображаемое имя
API Key Ключ стороннего сервиса
Base URL Корневой адрес API из документации поставщика
Model ID Точный идентификатор вышестоящей модели
Upstream Format Протокол, фактически предоставляемый вышестоящим сервисом
Model Mapping Модели, отображаемые и используемые Codex

Наиболее важный параметр — Upstream Format:

Вышестоящий формат Когда использовать Локальная маршрутизация
Responses (native) Вышестоящий сервис нативно реализует Responses Обычно преобразование протокола не требуется
Chat Completions (routing required) Вышестоящий сервис предоставляет /chat/completions Требуется
Anthropic Messages (routing required) Вышестоящий сервис предоставляет протокол Anthropic Messages Требуется

Не выбирайте Responses только потому, что поставщик заявляет об «OpenAI-совместимости». Многие OpenAI-совместимые API реализуют лишь Chat Completions.

1.6 Правильный ввод Base URL

По умолчанию CC Switch добавляет к Base URL соответствующий путь API. В большинстве случаев вводите корневой адрес API из документации поставщика, не добавляя самостоятельно повторно /chat/completions или /responses.

Например, если поставщик документирует:

POST https://api.example.com/v1/chat/completions

может потребоваться ввести:

https://api.example.com

или, в зависимости от предустановки и документации поставщика:

https://api.example.com/v1

Необходимость включения /v1 в Base URL зависит от поставщика и предустановки CC Switch. Используйте встроенную проверку подключения или журналы маршрутизации, чтобы подтвердить итоговый URL запроса.

Используйте Full URL Mode только в том случае, если поставщику требуется нестандартный полный путь конечной точки.

1.7 Настройка Needs Local Routing и сопоставления моделей

Включите Needs Local Routing, если поставщик использует Chat Completions, Anthropic Messages или имена моделей, которые Codex не распознаёт по умолчанию.

Предустановки для Chat обычно включают этот параметр автоматически. Для пользовательских поставщиков проверьте его вручную.

После включения становится доступна таблица сопоставления моделей. Обычно она содержит следующие поля:

Поле Описание
Model ID Точное имя модели, принимаемое вышестоящим API
Display Name Необязательное имя, отображаемое в меню /model Codex
Context Window Необязательная фактическая длина контекстного окна модели

Важные моменты:

  • используйте точный идентификатор модели из документации поставщика;
  • не угадывайте размер контекстного окна;
  • перезапускайте Codex после изменения списка моделей;
  • CC Switch создаёт каталог моделей Codex на основе этих сопоставлений;
  • если ретранслятор изменяет домен или имя модели, автоматическое определение возможностей рассуждения может оказаться неверным — проверьте его в дополнительных настройках.

1.8 Включение локальной маршрутизации и перехвата Codex

В CC Switch откройте:

Settings → Routing → Local Routing

Затем:

  1. включите главный переключатель локальной маршрутизации;
  2. включите Codex в разделе Routing Enabled;
  3. проверьте параметр поставщика Needs Local Routing;
  4. не закрывайте CC Switch, пока поставщик используется.

Обычно локальный маршрут по умолчанию выглядит так:

http://127.0.0.1:15721

После перехвата активная конфигурация Codex указывает на локальный маршрут CC Switch. Затем CC Switch перенаправляет запросы текущему выбранному вышестоящему поставщику.

Для вышестоящего сервиса Chat Completions поток обычно выглядит так:

Codex POST /responses
  → CC Switch converts it to POST /chat/completions
  → the provider returns JSON or SSE
  → CC Switch rebuilds Responses JSON or SSE
  → Codex continues the tool-call loop

1.9 Переключение поставщиков и перезапуск Codex

Вернитесь к списку поставщиков Codex в CC Switch, выберите настроенного поставщика и включите его.

Полностью перезапустите Codex после переключения, поскольку:

  • Codex считывает config.toml при запуске;
  • меню /model обычно загружает каталог при запуске;
  • расширение IDE или настольный клиент может кэшировать предыдущего поставщика;
  • существующие сеансы могут сохранять прежние метаданные модели.

Пользователи CLI могут просто запустить новый процесс:

codex

1.10 Проверка интеграции

В Codex выполните:

/status

Проверьте активную модель, поставщика, разрешения и сведения о контексте.

Откройте средство выбора модели:

/model

Проверьте слои конфигурации:

/debug-config

Также проверьте:

  • активного поставщика Codex в CC Switch;
  • журналы или статистику локальной маршрутизации CC Switch;
  • историю запросов и изменение баланса на панели поставщика;
  • указывает ли ~/.codex/config.toml сейчас на локальный маршрут.

Не ограничивайтесь простым приветствием при проверке настройки. Выполните хотя бы один тест возможностей агента:

  1. попросите Codex вывести список файлов текущего проекта;
  2. попросите его прочитать и кратко описать один файл;
  3. попросите его изменить небольшой файл;
  4. попросите его запустить тесты;
  5. намеренно оставьте простую ошибку и убедитесь, что он может использовать результат теста, чтобы продолжить исправление проекта.

Успешная генерация текста не доказывает совместимость вызова инструментов и многошаговых агентных процессов.

1.11 Возврат к официальному поставщику OpenAI

Выберите OpenAI Official в CC Switch и перезапустите Codex.

Проверьте состояние входа:

codex login status

При необходимости войдите снова:

codex login

Если вам одновременно нужны состояние официального входа и запросы к сторонней модели, убедитесь, что параметр Keep official login when switching third-party providers по-прежнему включён.

1.12 Ограничения и особенности эксплуатации

CC Switch упрощает настройку, но не устраняет ограничения вышестоящего сервиса:

  • CC Switch должен оставаться запущенным для преобразования Chat или Messages;
  • преобразование протокола не может воспроизвести все специфичные для поставщика функции;
  • некоторые модели поддерживают чат, но ненадёжно вызывают инструменты;
  • Web Search, ввод изображений, WebSockets или хранение ответов могут быть недоступны;
  • ограничения частоты запросов, тарификация и правила хранения данных вышестоящего поставщика продолжают действовать;
  • ретранслятор API может дополнительно изменять запросы и ответы;
  • после обновления CC Switch, Codex или поставщика конфигурации следует тестировать заново.

CC Switch лучше всего подходит для локальной разработки на настольных компьютерах. Для серверов, CI или длительной автоматизации без графического интерфейса предпочтительнее нативный поставщик Responses либо самостоятельно размещённый шлюз.


2. Подключение размещённого API через пользовательского поставщика моделей

Настраивайте поставщика напрямую только тогда, когда сервис нативно поддерживает необходимый Codex Responses API.

Если сервис предоставляет только /chat/completions или Anthropic Messages, используйте процесс CC Switch из раздела 1. Не пытайтесь устранить несовместимость с помощью wire_api = "chat".

2.1 Необходимые возможности API

Поставщик, подходящий для прямой интеграции с Codex, должен поддерживать как минимум:

  • POST /responses;
  • объекты JSON формата Responses;
  • потоковые события Responses SSE;
  • вызов функций или инструментов;
  • параметры инструментов в формате JSON Schema;
  • продолжение после возврата результатов инструментов;
  • многошаговые запросы или эквивалент previous_response_id;
  • достаточное контекстное окно и стабильные длительные запросы;
  • документированные аутентификацию, ограничения частоты запросов и ответы с ошибками.

Одной лишь генерации обычного текста недостаточно для надёжной работы агента Codex.

2.2 Универсальная конфигурация

Измените пользовательскую конфигурацию:

~/.codex/config.toml

Добавьте:

model_provider = "third_party"
model = "provider-model-id"

# Set this only when the model explicitly supports it.
model_reasoning_effort = "high"

# Optional: use the real value published by the provider when no catalog exists.
# model_context_window = 131072

[model_providers.third_party]
name = "My Responses-compatible Provider"
base_url = "https://provider.example.com/v1"
env_key = "THIRD_PARTY_API_KEY"
wire_api = "responses"
request_max_retries = 4
stream_max_retries = 5
stream_idle_timeout_ms = 300000

Не используйте следующие зарезервированные идентификаторы поставщиков:

openai
ollama
lmstudio

Вместо них используйте пользовательский идентификатор, например third_party или company_gateway.

2.3 Поля конфигурации

Поле Назначение
model_provider Выбирает поставщика, объявленного в [model_providers.<id>]
model Точный идентификатор модели, принимаемый сторонним сервисом
name Понятное человеку имя поставщика
base_url Корневой URL для Responses API поставщика
env_key Имя переменной окружения, содержащей API key
wire_api Поддерживается только responses; это также значение по умолчанию, если поле опущено
request_max_retries Повторные попытки при обычных сбоях HTTP-запросов
stream_max_retries Повторные попытки после прерывания потоковой передачи
stream_idle_timeout_ms Время без событий SSE, после которого поток считается бездействующим
model_context_window Необязательный фактический размер контекстного окна
model_reasoning_effort Необязательный уровень рассуждений, поддерживаемый моделью

Наличие /v1 в base_url зависит от документации поставщика. Распространённый итоговый адрес конечной точки:

https://provider.example.com/v1/responses

2.4 Настройка API key

Текущий сеанс bash / zsh:

export THIRD_PARTY_API_KEY="your API key"

fish:

set -gx THIRD_PARTY_API_KEY "your API key"

Текущий сеанс PowerShell:

$env:THIRD_PARTY_API_KEY = "your API key"

Сохранение для текущего пользователя Windows:

[Environment]::SetEnvironmentVariable(
  "THIRD_PARTY_API_KEY",
  "your API key",
  [EnvironmentVariableTarget]::User
)

После настройки постоянной переменной окружения перезапустите терминал, IDE или настольный клиент.

2.5 Предварительное тестирование конечной точки Responses

Перед запуском Codex обратитесь к поставщику напрямую:

export PROVIDER_BASE_URL="https://provider.example.com/v1"

curl "$PROVIDER_BASE_URL/responses" \
  -H "Authorization: Bearer $THIRD_PARTY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "provider-model-id",
    "input": "Reply with exactly: PROVIDER_OK",
    "stream": false
  }'

Убедитесь, что:

  • конечная точка не возвращает 404;
  • ответ имеет структуру Responses, а не только массив choices формата Chat Completions;
  • идентификатор модели принимается;
  • аутентификация настроена правильно;
  • ошибки содержат полезные диагностические сведения.

Затем отдельно протестируйте:

  • stream: true;
  • вызовы инструментов;
  • продолжение после получения результатов инструментов;
  • несколько ходов;
  • длинный контекст;
  • параллельность и ограничения частоты запросов.

2.6 Проверка конфигурации Codex

Запустите в строгом режиме:

codex --strict-config

--strict-config считает неизвестные ключи конфигурации ошибками, что помогает выявить поля, скопированные из устаревших руководств.

В Codex выполните:

/status

Чтобы проверить источники конфигурации, выполните:

/debug-config

Переопределите поставщика и модель для одного запуска, не изменяя конфигурацию по умолчанию:

codex \
  -c 'model_provider="third_party"' \
  -m 'provider-model-id'

2.7 Каталоги моделей и Unknown model

Каталог моделей Codex может описывать:

  • размер контекстного окна;
  • поддерживаемые уровни рассуждений;
  • входные модальности;
  • возможности вызова инструментов;
  • поведение при усечении;
  • минимальные версии клиента.

Если поставщик предоставляет совместимый с Codex каталог моделей, сохраните его локально и настройте:

model_catalog_json = "~/.codex/provider-models.json"

Если каталог отсутствует, задавайте контекстное окно только после подтверждения фактического значения:

model_context_window = 131072

Не копируйте метаданные несвязанной модели только для устранения предупреждения. Неверные сведения о возможностях или контексте могут вызвать преждевременное усечение, ошибки ограничений вышестоящего сервиса или сбои вызова инструментов.

2.8 Полный перечень проверок совместимости

Перед использованием в рабочей среде протестируйте:

  • непотоковый текст /responses;
  • потоковую передачу Responses SSE;
  • один вызов инструмента;
  • несколько последовательных или параллельных вызовов инструментов;
  • параметры JSON Schema;
  • продолжение после получения результата инструмента;
  • длинный контекст и автоматическое сжатие;
  • параметры рассуждений;
  • изображения или другие входные модальности;
  • ограничения частоты запросов и повторные попытки;
  • буферизует ли прокси SSE;
  • удаляет или переписывает ли поставщик поля инструментов;
  • политики хранения данных, журналирования и конфиденциальности.

2.9 Где должна находиться конфигурация поставщика

Размещайте model_provider, model_providers и параметры аутентификации поставщика в пользовательском файле:

~/.codex/config.toml

Не размещайте их в файле уровня репозитория:

<project>/.codex/config.toml

Codex игнорирует локальные поля проекта, способные перенаправлять запросы к модели или изменять аутентификацию поставщика. Это не позволяет ненадёжному клонированному репозиторию незаметно перенаправлять запросы на другой сервер.


3. Управление несколькими сторонними поставщиками с помощью профилей

Пользователи CC Switch обычно могут переключать поставщиков в приложении, и профили Codex им не нужны.

Профили полезны при ручной настройке нескольких нативных поставщиков Responses. Храните определения поставщиков в базовой конфигурации, а поставщика и модель выбирайте в отдельных файлах профилей.

Базовый ~/.codex/config.toml:

[model_providers.provider_a]
name = "Provider A"
base_url = "https://api.provider-a.example/v1"
env_key = "PROVIDER_A_API_KEY"
wire_api = "responses"

[model_providers.provider_b]
name = "Provider B"
base_url = "https://api.provider-b.example/v1"
env_key = "PROVIDER_B_API_KEY"
wire_api = "responses"

Создайте:

~/.codex/fast.config.toml
model_provider = "provider_a"
model = "provider-a-fast-model"
model_reasoning_effort = "medium"

Создайте другой профиль:

~/.codex/quality.config.toml
model_provider = "provider_b"
model = "provider-b-quality-model"
model_reasoning_effort = "high"

Выберите профиль при запуске Codex:

codex --profile fast
codex --profile quality

Неинтерактивный режим:

codex exec --profile quality "Review the current changes"

Файлы профилей находятся по адресу:

$CODEX_HOME/<profile-name>.config.toml

Значение CODEX_HOME по умолчанию — ~/.codex.

В последних версиях Codex используются отдельные файлы профилей, а устаревшие таблицы [profiles.<name>] больше не считываются. Перенесите каждый устаревший профиль в отдельный файл <name>.config.toml.


4. Пользовательские заголовки и расширенная аутентификация

4.1 Стандартные токены Bearer

Большинство сторонних сервисов работают с:

[model_providers.third_party]
env_key = "THIRD_PARTY_API_KEY"

Codex считывает ключ из окружения и применяет аутентификацию Bearer поставщика.

4.2 Пользовательские заголовки API key

Некоторые сервисы требуют:

x-api-key: <key>

Используйте env_http_headers:

model_provider = "custom_header_provider"
model = "provider-model-id"

[model_providers.custom_header_provider]
name = "Custom Header Provider"
base_url = "https://provider.example.com/v1"
wire_api = "responses"
env_http_headers = { "x-api-key" = "VENDOR_API_KEY" }

Значение VENDOR_API_KEY — это имя переменной окружения, а не сам секрет.

export VENDOR_API_KEY="your API key"

4.3 Статические заголовки и параметры запроса

Добавьте неконфиденциальные статические заголовки:

http_headers = { "X-Client-Name" = "codex", "X-Environment" = "development" }

Добавьте параметры запроса:

query_params = { "api-version" = "2026-08-01" }

Не помещайте настоящие секреты в http_headers.

4.4 Аутентификация с помощью команды

В корпоративной среде краткосрочные токены могут получаться из связки ключей, вспомогательной программы облачных учётных данных или внутренней команды:

[model_providers.corporate]
name = "Corporate Gateway"
base_url = "https://gateway.example.com/v1"
wire_api = "responses"

[model_providers.corporate.auth]
command = "/usr/local/bin/fetch-codex-token"
args = ["--audience", "codex"]
timeout_ms = 5000
refresh_interval_ms = 300000

Команда должна выводить в стандартный поток вывода только токен.

Не сочетайте следующие методы аутентификации:

  • [model_providers.<id>.auth];
  • env_key;
  • experimental_bearer_token;
  • requires_openai_auth.

4.5 Повторное использование аутентификации OpenAI через прокси

Устанавливайте следующий параметр только в том случае, если прокси по-прежнему обращается к моделям OpenAI и Codex должен использовать официальную аутентификацию OpenAI:

requires_openai_auth = true

Для обычного API key сторонней модели это неверная настройка. Когда она включена, Codex игнорирует env_key поставщика.


5. Устранение неполадок

5.1 CC Switch переключает поставщика, но Codex продолжает использовать прежнюю модель

Проверьте каждый пункт:

  1. нужный поставщик Codex включён в CC Switch;
  2. главный переключатель локальной маршрутизации включён;
  3. Codex включён в разделе Routing Enabled;
  4. для поставщиков Chat или Messages включён параметр Needs Local Routing;
  5. CC Switch по-прежнему работает;
  6. Codex, IDE или настольный клиент полностью перезапущен;
  7. /debug-config показывает ожидаемый источник конфигурации.

После изменения сопоставлений моделей перезапустите Codex, чтобы меню /model повторно загрузило каталог.

5.2 404, 400 или отсутствие конечной точки /responses

Распространённые причины:

  • поставщик Chat Completions ошибочно считается нативным поставщиком Responses;
  • /v1 неправильно добавлен или удалён;
  • /chat/completions добавлен дважды;
  • Full URL Mode не включён для нестандартной конечной точки;
  • локальная маршрутизация не перехватила Codex;
  • неполная реализация Responses в стороннем шлюзе.

Пользователям CC Switch следует проверить Upstream Format и журналы маршрутизации. Пользователям прямого поставщика следует вызвать <base_url>/responses с curl.

5.3 401 Unauthorized или 403 Forbidden

Проверьте:

  • действителен ли API key;
  • относится ли он к нужному региону, проекту или тарифу;
  • достаточно ли у учётной записи средств и разрешений;
  • ожидает ли сервис токен Bearer или x-api-key;
  • точно ли имя переменной окружения совпадает с env_key;
  • сохранил ли CC Switch правильный ключ;
  • не удалил ли прокси заголовок аутентификации.

Не выводите полный ключ в общие журналы.

bash / zsh:

printenv THIRD_PARTY_API_KEY

PowerShell:

$env:THIRD_PARTY_API_KEY

5.4 Модель отсутствует в /model

Проверьте:

  • содержит ли Model Mapping в CC Switch точный идентификатор вышестоящей модели;
  • сохранён и включён ли поставщик;
  • перезапущен ли Codex;
  • задан ли у поставщика, настроенного вручную, корректный model_catalog_json;
  • корректен ли JSON каталога;
  • не переименовал ли поставщик модель и не прекратил ли её поддержку.

5.5 Текст работает, но Codex не может читать файлы, редактировать код или выполнять команды

Возможные причины:

  • модель плохо вызывает инструменты;
  • вышестоящий сервис не реализует вызов функций;
  • ретранслятор удаляет идентификаторы вызовов инструментов;
  • потоковые фрагменты вызовов инструментов собираются неправильно;
  • JSON Schema переписывается;
  • результаты инструментов не возвращаются в следующем ходе;
  • контекст модели слишком короткий;
  • каталог моделей неправильно заявляет возможности.

Проверяйте настоящий цикл «чтение → редактирование → запуск тестов → анализ ошибки → исправление», а не простой запрос в чате.

5.6 Частые разрывы потоковой передачи

Пользователям CC Switch сначала следует проверить журналы локальной маршрутизации и ответы вышестоящего сервиса. Распространённые причины:

  • очередь на вышестоящем сервисе или длительное рассуждение;
  • шлюз не отправляет SSE своевременно;
  • буферизация в CDN, обратном прокси или корпоративной сети;
  • нестандартные события вышестоящего сервиса;
  • проблемы совместимости в определённой версии CC Switch или поставщика.

Для прямого поставщика можно увеличить:

request_max_retries = 4
stream_max_retries = 5
stream_idle_timeout_ms = 600000

Более длительные тайм-ауты могут смягчить проблемы сети или медленного вывода, но не исправят неверную реализацию протокола.

5.7 wire_api = "chat" не позволяет запустить Codex

Это значение встречается в старых руководствах. Текущая конфигурация Codex поддерживает только:

wire_api = "responses"

Если вышестоящий сервис предоставляет только Chat Completions, используйте CC Switch.

Проверьте наличие других устаревших полей с помощью:

codex --strict-config

5.8 Изменение конфигурации проекта не меняет поставщика

Параметры поставщика должны находиться в:

~/.codex/config.toml

.codex/config.toml уровня проекта не может переопределять поля, перенаправляющие запросы или изменяющие аутентификацию поставщика, включая model_provider и model_providers.

5.9 В терминале всё работает, но расширение IDE не находит API key

Приложения с графическим интерфейсом часто не наследуют переменные, временно экспортированные в уже открытом терминале.

Возможные решения:

  • запустите IDE из терминала, где установлена переменная;
  • сохраните переменную в пользовательском окружении операционной системы;
  • полностью закройте и снова откройте IDE;
  • используйте CC Switch для управления конфигурацией локального поставщика.

5.10 После переключения перестаёт работать официальный вход или официальные функции

Проверьте:

  • снова ли выбран OpenAI Official;
  • включён ли параметр Keep official login when switching third-party providers;
  • не перезаписал ли устаревший процесс ~/.codex/auth.json;
  • успешно ли выполняется codex login status.

При необходимости войдите снова:

codex login

Не передавайте другим и не редактируйте вручную файл auth.json, содержащий токены доступа.

5.11 Web Search, изображения или другие расширенные возможности не работают

Поставщик, поддерживающий текст и вызовы инструментов, не обязательно реализует все возможности Codex.

По умолчанию пользовательские поставщики не заявляют об отдельной поддержке Web Search. Устанавливайте следующий параметр только тогда, когда поставщик, модель и конечная точка действительно её поддерживают:

supports_standalone_web_search = true

Неправильное включение лишь заставит Codex отправлять запросы, которые вышестоящий сервис не сможет обработать. Проверяйте ввод изображений, WebSockets, хранение ответов и другие расширенные функции отдельно.


6. Выбор способа интеграции

Требование Рекомендуемый способ
Поставщик предоставляет только Chat Completions CC Switch
Поставщик предоставляет только Anthropic Messages CC Switch
Вы часто переключаетесь между несколькими сторонними моделями CC Switch
Вам нужен графический интерфейс для ключей и моделей CC Switch
Поставщик полностью и нативно поддерживает Responses Пользовательский model provider
Вы работаете на сервере, в CI или без настольного интерфейса Нативный поставщик Responses или самостоятельно размещённый шлюз
Вашей компании нужны централизованная аутентификация, аудит и ограничения частоты запросов Корпоративный шлюз и пользовательский поставщик
Модель поддерживает только чат и не умеет вызывать инструменты Не подходит в качестве полноценного поставщика агента Codex

Проверяйте каждую интеграцию на трёх уровнях:

  1. Подключение: надёжно возвращает текст;
  2. Использование инструментов: может читать файлы, выполнять команды и продолжать работу с результатами инструментов;
  3. Выполнение задачи: может завершить цикл редактирования, тестирования и исправления.

Также изучите:

  • цены стороннего поставщика;
  • ограничения частоты запросов;
  • журналируются ли исходный код и запросы;
  • регионы хранения данных;
  • требования команды или организации к соответствию нормам;
  • необходимость регрессионного тестирования после обновления моделей.

При использовании стороннего API key потребление оплачивается этому поставщику или ретранслятору. Оно не расходует автоматически и не разделяет лимиты, включённые в ChatGPT Plus, Pro или подписку Codex.

Ссылки