Подключение DeepSeek и сторонних моделей
📚 Навигация по серии: Предыдущая статья 04 · Тарифы и биллинг объяснила финансовую сторону Codex — разницу между подпиской и оплатой по факту использования. В этой статье мы продолжим тему оптимизации расходов и разберем нестандартное решение: как переключить Codex на работу со сторонними моделями (например, DeepSeek).
⚠️ Важное предупреждение (экспериментальная функция, поведение может меняться): Codex является внутренним продуктом OpenAI, и официальная документация не содержит руководств по интеграции со сторонними провайдерами вроде DeepSeek. Использование альтернативных моделей — это решение сообщества, построенное на стандартном механизме добавления пользовательских провайдеров (
model_providers). Работоспособность и стабильность этой схемы напрямую зависят от поддержки протоколов API сторонней моделью, что является наиболее частой причиной сбоев (подробнее в Разделе 03). Все документированные параметры и поведение по умолчанию приведены со ссылкой на официальные источники; часть, касающаяся настройки DeepSeek, базируется на практических тестах сообщества. Адреса хостов, имена моделей и поддерживаемые протоколы могут меняться со стороны провайдеров.
Друзья, для начала перескажу реальный диалог, который произошел у меня недавно с коллегой.
Коллега: «Ты же настроил интеграцию Claude Code с DeepSeek для экономии денег? Сделай то же самое для Codex». Я: «Я тоже думал, что перенос настроек сработает... В итоге потратил два часа: параметры указаны верно, но при первом запросе сервер возвращает ошибку 400». Коллега: «Почему? Разве дело не в банальном изменении адреса base_url?» Я: «Схемы работы Codex и Claude Code различаются. При внешнем сходстве их архитектурные основы не имеют ничего общего».
Признаюсь честно: эта глава — предостережение для тех, кто планирует использовать сторонние модели. В сети опубликовано множество инструкций по подключению DeepSeek к Codex, но большинство из них умалчивают о критически важной детали: архитектура вызова внешних провайдеров в Codex и Claude Code построена на совершенно различных принципах. Попытки настроить Codex по аналогии с Claude Code приводят к ошибкам несовместимости протоколов. В этом разделе мы разберем эти различия.
После прочтения этой статьи вы получите:
- Краткое объяснение принципиальных различий в интеграции сторонних моделей в Codex и Claude Code (что сэкономит вам время)
- Таблицу сравнения для оценки целесообразности настройки альтернативных моделей
- Анализ двух способов подключения (ручное изменение файла
config.tomlили использование локального прокси-клиента) - Справочный каркас конфигурации
model_providers, методики проверки работоспособности и таблицы устранения ошибок
01 Принципиальное различие в механизмах смены моделей
Ключевой вывод: если в Claude Code для смены модели достаточно переопределить переменные окружения, то в Codex требуется прописать параметры провайдера в файле конфигурации. Более того, Codex предъявляет жесткие требования к API-протоколам сторонних сервисов — не любой совместимый интерфейс будет работать.
Разберем это детально.
Интерфейс CLI Codex является лишь клиентом: он сканирует кодовую базу, вызывает утилиты и управляет контекстом сессии, но не генерирует ответы самостоятельно. Каждый шаг логики требует обращения к языковой модели. По умолчанию запросы направляются к моделям GPT от OpenAI (рекомендуемая на данный момент версия — gpt-5.5 согласно спецификации).
Настройка внешних моделей переопределяет этот целевой адрес. Разработчики предусмотрели такую возможность в документации:
«Вы также можете перенаправить вызовы Codex к любым провайдерам и моделям, поддерживающим Chat Completions или Responses API, в соответствии с требованиями ваших проектов». (из раздела по моделям)
Аналогия: стандарты розеток. Утилита Claude Code похожа на универсальный адаптер питания: если сторонний провайдер предоставляет API, совместимое с Anthropic, подключение проходит успешно. Codex же распознает строго определенные типы подключений — он поддерживает только спецификации OpenAI Chat Completions и Responses API. Модели вроде DeepSeek обычно предоставляют API, совместимое с OpenAI, то есть теоретически совместимы с Codex. Однако существует нюанс:
编Codex 官方明确写了——Chat Completions API 的支持「已弃用,未来版本会移除」(来源:《Models》文档)。 Это означает, что клиент переходит на стандарт Responses API. Этот протокол является относительно новым внутренним стандартом OpenAI, и большинство сторонних платформ API еще не реализовали его поддержку в полном объеме.
Это и послужило причиной двухчасовых сбоев при моих первых тестах: совместимость с OpenAI Chat Completions не гарантирует поддержку нового формата Responses API со стороны DeepSeek.
💡 Краткий вывод: Смена модели в Claude Code выполняется через переменные окружения по протоколу Anthropic; в Codex же требуется прописать провайдера в файле
config.tomlпо новым протоколам OpenAI (в приоритете Responses API). Не пытайтесь слепо переносить опыт настройки одного инструмента на другой.
02 Оценка целесообразности использования сторонних моделей
Специфика Codex делает использование сторонних моделей менее целесообразным по сравнению с Claude Code:
Основные причины:
- Низкая вероятность успешного сопряжения по сравнению с Claude Code из-за строгих требований к поддержке протоколов.
- Высокое качество моделей GPT-5.5 в экосистеме Codex. Для сложных задач рефакторинга возможности сторонних моделей могут оказаться недостаточными, что приведет к снижению качества генерации кодовой базы.
- Лимиты уже включены в ваши подписки ChatGPT Plus/Pro (см. Статью 04). Если вы оплачиваете подписку, подключение сторонних моделей через платные API-ключи приведет к двойным расходам.
Сравнительный анализ вариантов использования:
| Параметр | Модели GPT от OpenAI (по умолчанию) | Сторонние API (например, DeepSeek) |
|---|---|---|
| Ценообразование | Дороже при оплате через API по факту использования | ✅ Дешевле (стоимость токена значительно ниже) |
| Доступность сети | Требуется VPN | ✅ Доступны сетевые адреса без прокси |
| Сложность настройки | Доступны из коробки после авторизации | ⚠️ Требуют настройки конфигурации и проверки совместимости |
| Качество генерации кода | ✅ Лидеры индустрии (GPT-5.5), точное следование контексту | Подходят для рутинных задач, сбои при сложной логике |
| Официальная поддержка | ✅ Базовый функционал | ❌ Экспериментальные функции без гарантии стабильности |
| Стабильность конфигурации | Гарантируется обновлениями клиента | ⚠️ Сбрасывается при изменении имен моделей провайдером |
Разница очевидна. В отличие от Claude Code, где подключение сторонней модели является надежным решением для оптимизации расходов, в Codex вы сталкиваетесь с неопределенностью на уровне совместимости протоколов API.
Кому имеет смысл пробовать интеграцию:
- ✅ Рекомендуется к тестированию: пользователям с высокими затратами на API при выполнении рутинных задач CRUD; разработчикам, испытывающим постоянные проблемы с подключением по VPN; энтузиастам для изучения работы протоколов.
- ❌ Не рекомендуется к тестированию: владельцам активных подписок ChatGPT Plus/Pro; разработчикам сложной системной логики и архитектурных решений; новичкам, желающим получить готовое стабильное решение из коробки.
Мой опыт показывает: в Claude Code использование DeepSeek для рутинных задач полностью оправдано, но в Codex стабильнее использовать штатные модели GPT. Проблемы несовместимости спецификаций Codex сводят на нет экономическую выгоду.
💡 Краткий вывод: Настройка сторонней модели в Codex сопряжена с рисками несовместимости протоколов. Подписчикам ChatGPT, системным архитекторам и пользователям, предпочитающим стабильность из коробки, рекомендуется использовать штатные настройки.
03 Два пути настройки: файлы конфигурации или прокси-клиенты
Приняв решение о настройке, выберите одно из двух направлений:

Оба пути решают одну задачу, но в основе обоих лежит обеспечение совместимости с протоколом Responses API на стороне клиента.
Способ 1: Ручное редактирование config.toml
Все настройки Codex хранятся в пользовательском файле ~/.codex/config.toml (согласно спецификации). Вы можете прописать параметры альтернативного провайдера непосредственно в нем.
Аналогия: добавление нового контакта в телефонную книгу. По умолчанию в книге записан только контакт OpenAI. Для вызова DeepSeek добавьте запись: имя, адрес хоста (base_url) и имя переменной для считывания пароля (API Key). Затем укажите клиенту использовать этот новый контакт.
Ключевые параметры конфигурации провайдеров:
| Параметр | Назначение в документации |
|---|---|
model_providers.<id>.name | Отображаемое имя провайдера |
model_providers.<id>.base_url | Адрес API-хоста провайдера |
model_providers.<id>.env_key | Переменная окружения для чтения API-ключа |
model_providers.<id>.wire_api | Используемый протокол; единственное поддерживаемое значение — responses |
model_provider (глобальный) | Идентификатор активного провайдера (по умолчанию openai) |
model (глобальный) | Имя вызываемой модели |
Параметр wire_api является критически важным — официальная спецификация прямо указывает, что Responses API является единственной поддерживаемой схемой передачи сообщений. Если сторонний сервис предоставляет стандартный Chat Completions и не поддерживает Responses API, нативный вызов через файлы конфигурации выдаст ошибку.
⚠️ API-сервис DeepSeek совместим с OpenAI по протоколу Chat Completions. Возможность его работы с Responses API зависит от текущего состояния разработки на обеих сторонах. Всегда проверяйте совместимость экспериментальным путем. Отсутствие подключения при корректной конфигурации является ожидаемым поведением.
Способ 2: Использование транслирующих прокси-клиентов
Для обхода ограничений протоколов сообщество использует прокси-серверы, запускаемые локально. Они транслируют вызовы Responses API от клиента Codex в понятные для сторонних моделей запросы Chat Completions и возвращают ответы обратно. Для Codex процесс выглядит как стандартное обращение к серверам OpenAI.
Приложение CC Switch (бесплатный инструмент с открытым исходным кодом, репозиторий github.com/farion1231/cc-switch) запускает локальный прокси-сервер и автоматически перенаправляет трафик Codex на выбранные внешние хосты, предоставляя готовые пресеты для DeepSeek.

Запустите CC Switch и нажмите кнопку Add Provider для настройки параметров подключения.

Выберите Codex в списке слева, укажите целевого провайдера (например, DeepSeek) в правой части и вставьте ваш API-ключ. Приложение будет пересылать запросы автоматически.

Список содержит предустановленные настройки для популярных платформ (DeepSeek, OpenRouter и др.), избавляя от ручного ввода хостов.
Аналогия: переводчик в диалоге. Вы (клиент Codex) общаетесь только по протоколу Responses API, а целевая модель понимает только Chat Completions. Первый способ требует поддержки Responses API со стороны сервера. Второй способ ставит локального переводчика (прокси-сервер) между клиентом и сервером.
Сравнение способов подключения сторонних моделей:
| Параметр | Способ 1: Редактирование config.toml | Способ 2: Локальный прокси (CC Switch) |
|---|---|---|
| Статус метода | ✅ Штатный механизм настройки | ❌ Утилита от сообщества |
| Совместимость API | ⚠️ Зависит от поддержки Responses API сервером | ✅ Трансляция выполняется прокси-сервером |
| Сложность настройки | Требует ручной правки разметки TOML | Простой графический интерфейс |
| Контроль процессов | Полная прозрачность конфигурации | Дополнительный дочерний процесс в системе |
| Переключение моделей | Требует ручной корректировки файлов | Выбор провайдера в один клик |
| Целевая аудитория | Разработчики для понимания архитектуры | Пользователи, желающие получить быстрый результат |
Рекомендация: для изучения архитектуры вызова провайдеров используйте первый способ (редактирование файлов конфигурации). Для быстрого получения рабочего результата используйте локальный прокси-клиент.
💡 Краткий вывод: Первый способ нативен, но критичен к поддержке протоколов на стороне сервера. Второй способ использует сторонний прокси-транслятор, обеспечивающий стабильность подключения. Выберите подходящий путь на основе ваших задач.
04 Практика: Структура конфигурации в config.toml
Ниже приведена базовая структура настроек провайдера для ручного добавления. Параметры конфигурации соответствуют спецификации, но фактическая работоспособность зависит от поддержки Responses API на стороне провайдера.
Расположение файлов: ~/.codex/config.toml в macOS/Linux и C:\Users\Имя_Пользователя\.codex\config.toml в Windows. Создайте файл вручную при его отсутствии.
Шаг 1: Получите API-ключ DeepSeek
- Авторизуйтесь на платформе разработчиков DeepSeek.
- Создайте и скопируйте новый API-ключ.
🔑 Важно: Сохраняйте ключ в безопасности. Не прописывайте его значение в файлах конфигурации в открытом виде. Мы настроим его вызов через переменные окружения.
Шаг 2: Добавьте API-ключ в переменные окружения
Объявите переменную с именем DEEPSEEK_API_KEY для считывания ключа клиентом:
macOS и Linux:
export DEEPSEEK_API_KEY=<你的 DeepSeek API Key>Windows (PowerShell):
$env:DEEPSEEK_API_KEY="<你的 DeepSeek API Key>"Для постоянной регистрации путей прописали эти команды в конфигурационных файлах вашего терминала (.zshrc или .bashrc) или в свойствах системы Windows.
Шаг 3: Пропишите параметры в config.toml
Добавьте следующие параметры в файл config.toml:
# 顶层:告诉 Codex 这次用我们自定义的提供商和模型
model_provider = "deepseek"
model = "<DeepSeek 的模型名,以官方文档为准>"
# 自定义一个名为 deepseek 的模型提供商
[model_providers.deepseek]
name = "DeepSeek"
base_url = "<DeepSeek 的 API base_url,以官方文档为准>"
env_key = "DEEPSEEK_API_KEY" # 引用上一步的环境变量名
# wire_api 不写则默认为 responses(官方唯一支持的值)Описание структуры параметров:
model_provider = "deepseek": указывает Codex использовать добавленного ниже провайдераdeepseekвместоopenaiпо умолчанию.model = "...": имя целевой модели (уточняйте актуальные имена моделей в документации DeepSeek).[model_providers.deepseek]: объявление нового провайдера с идентификаторомdeepseek(должен совпадать с глобальнымmodel_provider).base_url: адрес API-хоста провайдера.env_key = "DEEPSEEK_API_KEY": имя переменной окружения для считывания токена авторизации.
⚠️ Значения
modelиbase_urlуказаны в виде псевдопеременных, так как они регулярно обновляются со стороны провайдеров API. Нативная работоспособность зависит исключительно от поддержки протокола Responses API со стороны DeepSeek.
Примечание: стандартные идентификаторы провайдеров (
openai,ollama,lmstudio) зарезервированы клиентом (согласно спецификации). Не используйте эти имена для пользовательских подключений.
💡 Краткий вывод: Ручной способ: объявление переменной с ключом → добавление блока провайдера
model_providersвconfig.toml→ переопределение глобальныхmodel_providerиmodel. Конфигурация стандартизирована, но требует проверки совместимости протоколов.
05 Проверка работоспособности подключения
Перед запуском рабочих задач выполните тестирование соединения.
Процесс состоит из двух шагов:
Шаг 1: Проверка активной модели
Запустите Codex и вызовите команду /model, которая показывает список доступных моделей (согласно спецификации). Убедитесь, что клиент переключился на добавленный профиль:
codexВведите команду в консоли:
/modelВы также можете принудительно указать модель при старте CLI с помощью флага:
codex -m <имя_модели>.
Шаг 2: Тестовый запрос
Отправьте простейший запрос для проверки ответа сервера:
你好,用一句话回复确认你能正常工作。Результаты теста:
| Симптом | Возможная причина | Решение |
|---|---|---|
| Успешный текстовый ответ | ✅ Подключение настроено | Настройки верны, интеграция работает |
| Ошибка 401 (Auth Error) | Неверный API-ключ или переменная окружения не считывается | Проверьте имя env_key и перезапустите консоль |
| Ошибка 400 (Bad Request) | Несовместимость протокола Responses API | Данная модель не поддерживает этот формат. Используйте прокси-клиент (Способ 2) |
| Ошибка отсутствия модели | Имя модели указано неверно | Сверьтесь с актуальной документацией провайдера |
Обратите внимание на ошибку 400. Если вы столкнулись с ней при корректной конфигурации, это подтверждает проблему несовместимости с Responses API со стороны провайдера. При ее возникновении переключайтесь на использование локального прокси (Способ 2).
💡 Краткий вывод: Сначала проверьте модель через
/model, затем отправьте тестовый запрос. Ошибка 401 указывает на неверный ключ, ошибка 400 — на несовместимость протоколов. При ошибке 400 используйте транслятор прокси.
06 Тонкая настройка: Инерция рассуждений (reasoning_effort)
При успешном подключении настройте глубину рассуждений модели для оптимизации расхода токенов:
Параметр model_reasoning_effort поддерживает значения minimal, low, medium, high и xhigh (в зависимости от возможностей конкретной модели согласно спецификации). Пропишите его в config.toml:
model_reasoning_effort = "medium"Аналогия: стратегия решения задач на экзамене. Режим low экономит время — быстрый поверхностный ответ. Режимы high/xhigh требуют дополнительных вычислений для поиска сложных взаимосвязей, но расходуют значительно больше токенов. Постоянная работа на максимальных настройках приводит к быстрому расходу бюджета.
Рекомендация: для повседневной разработки установите режим medium. При необходимости глубокого анализа архитектурных взаимосвязей временно переключайтесь на high. Использование максимальных настроек для простых задач лишает смысла экономию от подключения сторонних моделей.
Учитывайте, что при работе со сторонними моделями некоторые встроенные функции Codex могут работать некорректно или быть недоступны. Например, поиск в веб-интерфейсах, использующий индексацию OpenAI. Это часть ограничений неофициального режима.
💡 Краткий вывод: Настройте параметр
model_reasoning_effort:mediumдля повседневных задач иhighдля сложного рефакторинга. Помните о потенциальной недоступности некоторых облачных функций OpenAI.
07 Резюме
Подключение DeepSeek к Codex снижает затраты, но является экспериментальным методом из-за различий в протоколах API:
| Этап | Рекомендация / Действие |
|---|---|
| Различения архитектур | Codex ориентирован на Responses API от OpenAI. Не копируйте настройки Claude Code напрямую |
| Целесообразность | Не рекомендуется владельцам платных подписок и при необходимости сложного системного анализа |
| Выбор метода | Редактирование config.toml для изучения логики, локальный прокси (CC Switch) для быстрого запуска |
| Конфигурация | Объявление model_providers, глобальные model_provider и model, считывание ключа по env_key |
| Тестирование | Проверка переключения в /model и отправка тестового запроса (ошибка 400 указывает на конфликт API) |
| Оптимизация | Регулируйте параметр model_reasoning_effort для контроля баланса скорости и качества |
Теперь вы понимаете архитектурные особенности подключения сторонних моделей, умеете конфигурировать провайдеров в файлах настроек и локализовать сбои протоколов API.
Главное правило: ключевым условием сопряжения является поддержка протоколов на стороне сервера провайдера, а не синтаксис ваших настроек. Понимание этого факта убережет вас от бесполезной траты времени.
В следующей статье 06 · Выполнение первой задачи мы завершим блок настроек и перейдем к практической работе. Мы запустим Codex для решения реальной задачи в кодовой базе проекта.