Настройка AI-агентов для кодинга с OpenAI-совместимым LLM-роутером: Cursor, Claude Code, Codex и Zed
Пошаговое руководство по маршрутизации Cursor, Claude Code, OpenAI Codex CLI, Zed и Devin Desktop через OpenAI-совместимый LLM-роутер. Настройка переменных окружения, конфигурационных файлов, маппинга моделей, fallback-цепочек и мониторинга затрат.
Каждый coding-агент поставляется с API endpoint по умолчанию. Для индивидуальной работы этого достаточно, но команде рано или поздно понадобятся лимиты расходов, аудит-логи, fallback между провайдерами и возможность менять модели, не трогая машину каждого разработчика. OpenAI-совместимый LLM-роутер между агентом и провайдером решает все эти задачи в одном месте.
OpenAI-совместимость означает, что провайдер предоставляет endpoint chat-completions, чей контракт запроса и ответа достаточно близок к API OpenAI, чтобы немодифицированный вызов OpenAI SDK работал после замены трёх значений: API key, base URL, название модели. Минимальная поверхность на практике —POST /v1/chat/completions с messages, model и потоковым ответом в форме OpenAI.
В этом руководстве показана конфигурация для пяти инструментов: Cursor, Claude Code, OpenAI Codex CLI, Zed и Devin Desktop. Каждый раздел самостоятелен — переходите сразу к нужному инструменту.
Краткая справочная таблица
| Coding-агент | Способ настройки | Ключевой параметр | Переменная аутентификации |
|---|---|---|---|
| Cursor | GUI Settings | Override OpenAI Base URL | Поле OpenAI API Key |
| Claude Code | Env var / settings.json | ANTHROPIC_BASE_URL | ANTHROPIC_API_KEY или ANTHROPIC_AUTH_TOKEN |
| Codex CLI | config.toml | openai_base_url или блок model_provider | OPENAI_API_KEY или env var провайдера |
| Zed | Agent Settings JSON | language_models → OpenAI-compatible | _API_KEY по Provider ID |
| Devin Desktop | GUI Settings | Http: Proxy | Наследуется от proxy |
Зачем направлять трафик coding-агентов через gateway
Coding-агенты генерируют заметный расход токенов — одна сессия Codex может израсходовать тысячи токенов за задачу. Маршрутизация через gateway даёт несколько практических преимуществ.
- Прозрачность затрат. Расходы по каждому разработчику, модели и проекту видны в одном дашборде. Не нужно проверять пять консолей провайдеров.
- Fallback провайдеров. Когда OpenAI возвращает 429 или 503, роутер автоматически переключается на резервного провайдера. Мы маршрутизируем OpenAI-совместимые запросы через настроенных провайдеров и поддерживаем routing и fallback в рамках работающих продуктовых путей.
- Единый биллинг. Один счёт вместо отдельных аккаунтов OpenAI, Anthropic, DeepSeek и других. Мы предоставляем единые интерфейсы биллинга/учёта в реализованном объёме.
- Governance. Rate limits, allowlists моделей и лимиты расходов применяются на уровне gateway. Разработчики не работают с сырыми ключами провайдеров.
- Аудит. Каждый запрос логируется с идентификацией пользователя, моделью, количеством токенов и латентностью. Это необходимо для SOC 2 и корпоративного compliance.
Cursor
В настройках Cursor есть два поля, которые перенаправляют весь OpenAI-совместимый трафик через ваш роутер.
Пошаговая инструкция
- Откройте Cursor Settings (
Cmd+,на macOS,Ctrl+,на Windows/Linux). - Перейдите в Models → API Keys.
- Введите API Key роутера в поле OpenAI API Key.
- Включите Override OpenAI Base URL.
- Укажите адрес роутера (например,
https://api.therouter.ai/v1). - В разделе Models добавьте model ID, которые предоставляет роутер (например,
gpt-6-astra,claude-sonnet-4,deepseek-v4-pro).
Проверка
Отправьте prompt в чат или Inline Assistant в Cursor. Откройте дашборд роутера и убедитесь, что запрос появился. Если запроса нет:
- Убедитесь, что base URL заканчивается на
/v1. Cursor сам добавляет/chat/completions. - Убедитесь, что API Key принадлежит роутеру, а не OpenAI напрямую.
- Проверьте, что выбранный model ID совпадает с тем, что ожидает роутер.
Нюансы
- Встроенные модели Cursor продолжают использовать инфраструктуру Cursor. Override применяется только к моделям из вашего пользовательского списка. Модели по умолчанию (
cursor-fastи подобные) обходят override. - Поле API Key действует на все пользовательские модели. Через GUI нельзя задать разные ключи для разных моделей. Если нужна раздельная аутентификация, реализуйте её на уровне роутера.
- Streaming обязателен. Cursor ожидает SSE-потоковый ответ. Роутер должен поддерживать
stream: trueна/v1/chat/completions.
Claude Code
Claude Code использует переменные окружения для подключения к gateway. Основная переменная — ANTHROPIC_BASE_URL, которая определяет, куда Claude Code отправляет запросы /v1/messages.
Пошаговая инструкция
Вариант A: переменные окружения (быстрый тест)
export ANTHROPIC_BASE_URL=https://api.therouter.ai/api/anthropic
export ANTHROPIC_API_KEY=sk-your-router-key
claude
Вариант B: файл настроек (постоянная конфигурация, рекомендуется для команд)
Создайте или отредактируйте ~/.claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.therouter.ai/api/anthropic",
"ANTHROPIC_API_KEY": "sk-your-router-key"
}
}
Для развёртывания на уровне организации администратор может распространить managed settings, которые Claude Code подхватит при запуске.
Проверка
- Запустите
claude. - Введите
/statusи проверьте строку Anthropic base URL — она должна показывать адрес вашего роутера. - Отправьте тестовый prompt. Нормальный ответ подтверждает, что routing работает.
Нюансы
ANTHROPIC_BASE_URLдолжен указывать на путь в формате Anthropic, а не на OpenAI-совместимый путь. Если роутер обслуживает Anthropic-формат по/api/anthropic, используйте этот путь. Endpoint должен отвечать на/v1/messages.ANTHROPIC_AUTH_TOKENvsANTHROPIC_API_KEY: используйтеANTHROPIC_AUTH_TOKEN, когда gateway ожидает bearer token в заголовкеAuthorization. ИспользуйтеANTHROPIC_API_KEY, когда gateway ожидаетx-api-key. Если не уверены, начните сANTHROPIC_AUTH_TOKEN.- Фоновые агенты и supervisor могут не наследовать переменные из shell. Используйте файл настроек для надёжной маршрутизации в расширениях VS Code и фоновых сессиях.
- Установка
ANTHROPIC_BASE_URLбез credential не заменяет подписку claude.ai — запросы идут через ваш URL, но биллинг и лимиты подписки остаются в силе.
OpenAI Codex CLI
Codex CLI читает конфигурацию из ~/.codex/config.toml. Самый простой путь — задать openai_base_url для встроенного провайдера OpenAI.
Пошаговая инструкция
Вариант A: перенаправление встроенного провайдера
Отредактируйте ~/.codex/config.toml:
[model]
openai_base_url = "https://api.therouter.ai/v1"
Задайте API Key:
export OPENAI_API_KEY=sk-your-router-key
Вариант B: пользовательский model provider (для не-OpenAI моделей через роутер)
[[model_provider]]
name = "therouter"
base_url = "https://api.therouter.ai/v1"
env_key = "THEROUTER_API_KEY"
wire_format = "openai"
[model_provider.models]
"deepseek-v4-pro" = { max_tokens = 131072 }
"claude-sonnet-4" = { max_tokens = 200000 }
Задайте переменную окружения:
export THEROUTER_API_KEY=sk-your-router-key
Выберите модель при запуске:
codex --model therouter/deepseek-v4-pro
Проверка
Запустите codex и отправьте тестовую задачу. В логах роутера убедитесь, что запрос пришёл. Codex по умолчанию использует Responses API (/v1/responses) — проверьте, что ваш роутер его поддерживает, или настройте Codex на Chat Completions API.
Нюансы
CODEX_HOMEпереопределяет каталог конфигурации. Если эта переменная задана, Codex читает конфигурацию из$CODEX_HOME/config.toml, а не из~/.codex/config.toml.- Codex по умолчанию использует Responses API, а не Chat Completions. Если роутер поддерживает только
/v1/chat/completions, проверьте в документации Codex наличие опцииwire_formatили переключения API-режима. - Имена пользовательских провайдеров должны быть уникальными. Если вы создали провайдер
therouter, в флаге--modelиспользуйтеtherouter/model-name.
Zed
Zed поддерживает OpenAI-совместимых провайдеров через Agent Settings. Конфигурация хранится в файле settings.json.
Пошаговая инструкция
- Откройте Agent Settings: выполните agent: open settings в палитре команд.
- Добавьте OpenAI-совместимый провайдер в
language_models:
{
"language_models": {
"therouter": {
"type": "openai",
"api_url": "https://api.therouter.ai/v1",
"available_models": [
{
"name": "gpt-6-astra",
"display_name": "GPT-6 Astra (via TheRouter)",
"max_tokens": 200000
},
{
"name": "deepseek-v4-pro",
"display_name": "DeepSeek V4 Pro (via TheRouter)",
"max_tokens": 131072
},
{
"name": "claude-sonnet-4",
"display_name": "Claude Sonnet 4 (via TheRouter)",
"max_tokens": 200000
}
]
}
}
}
- Задайте API Key. Zed генерирует имя env var из provider ID: для провайдера
therouterэтоTHEROUTER_API_KEY.
export THEROUTER_API_KEY=sk-your-router-key
Альтернативно можно ввести ключ в Settings → AI → LLM Providers через GUI — Zed сохранит его в системном keychain.
Проверка
Откройте новый thread Zed Agent, выберите одну из пользовательских моделей в model picker и отправьте тестовый prompt. Если модель не появилась, перезапустите Zed после сохранения settings.json.
Нюансы
- Provider ID определяет имя env var. ID
my-gatewayстановитсяMY_GATEWAY_API_KEY. Используйте простые, понятные ID. available_modelsобязателен. OpenAI-совместимые провайдеры не поддерживают автоматическое обнаружение моделей — список нужно задать вручную.- Zed Agent, Inline Assistant и генерация commit-сообщений используют одну конфигурацию LLM-провайдера. Внешние агенты (Claude Code в терминале Zed) настраивают свои endpoint отдельно.
- Пользовательские заголовки добавляются через
custom_headers, если роутер требует дополнительных auth-заголовков помимо API Key.
Devin Desktop
Devin Desktop (ранее Windsurf) маршрутизирует весь LLM-трафик через настройку HTTP-proxy.
Пошаговая инструкция
- Откройте Devin Desktop Settings (
Cmd+,на macOS,Ctrl+,на Windows/Linux). - Найдите Http: Proxy.
- Введите адрес роутера:
https://api.therouter.ai. - Сохраните и перезапустите Devin Desktop.
Проверка
Откройте панель чата Devin Desktop и отправьте тестовое сообщение. Проверьте появление запроса в дашборде роутера.
Нюансы
- Devin Desktop использует proxy-модель, а не override base URL. В зависимости от настроек весь HTTP-трафик редактора (не только LLM-вызовы) может идти через proxy.
- Аутентификация проходит через proxy. Роутер должен корректно обрабатывать auth-заголовки, которые Devin Desktop отправляет upstream-провайдерам.
- Cascade прекращён. Если вы мигрировали с Windsurf, старый агент Cascade больше не работает. Используйте встроенный агент Devin.
Настройка fallback-цепочки
Когда все инструменты подключены к gateway, настройте fallback моделей, чтобы задачи кодинга продолжали работать при сбоях провайдеров.
Основная: deepseek-v4-pro (самая низкая стоимость для задач кодинга)
Fallback 1: claude-sonnet-4 (сильный кодинг, выше стоимость)
Fallback 2: gpt-6-astra (самый широкий охват, максимальная стоимость)
Роутер автоматически переключается при ошибках. Когда основная модель возвращает ошибку, следующая в цепочке обрабатывает запрос. Разработчики видят бесшовный опыт. Мы поддерживаем routing и fallback провайдеров/моделей в рамках работающих продуктовых путей.
Подробности настройки fallback моделей — в документации. Цепочку можно задать в дашборде роутера или в конфигурационном файле.
Мониторинг затрат
Единый gateway даёт одно место для отслеживания расходов coding-агентов.
- Разбивка по разработчикам. Определите, кто расходует больше всего токенов и какие модели использует.
- Сравнение по моделям. Сопоставьте затраты на
deepseek-v4-pro($0.70/M input),claude-sonnet-4($3/M input) иgpt-6-astra, чтобы найти оптимальный баланс цена/качество. - Бюджетные оповещения. Задайте дневные или месячные лимиты по команде или разработчику. При исчерпании бюджета роутер вернёт 429, не позволяя расходам выйти из-под контроля.
Мы предоставляем единые интерфейсы биллинга/учёта в реализованном объёме. Один счёт и один дашборд вместо сверки пяти провайдерских биллингов.
Типичные проблемы и их решения
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Ошибка "Model not found" | Model ID в агенте не совпадает со списком моделей роутера | Проверьте model ID в конфигурации роутера и настройках агента |
| Запросы идут мимо роутера | Агент использует встроенные модели | Выберите пользовательскую модель из списка |
| Auth-ошибки (401/403) | Неверный API Key или формат auth-заголовка | Убедитесь, что ключ от роутера, а не от upstream-провайдера |
| Ошибки streaming | Роутер не поддерживает SSE streaming | Включите поддержку streaming на роутере. Все coding-агенты требуют потоковых ответов |
| Медленный первый ответ | DNS-резолвинг или TLS handshake до роутера | Разместите роутер в регионе, близком к разработчикам |
| Codex: "unsupported API" | Роутер не поддерживает Responses API | Проверьте в документации Codex опцию fallback на Chat Completions |
FAQ
Можно ли использовать разные роутеры для разных coding-агентов?
Да. Каждый инструмент настраивается отдельно. Cursor может идти через один gateway, Claude Code — через другой. Но единый роутер упрощает биллинг и мониторинг.
Добавляет ли gateway задержку?
Обычно 5–20 мс при правильном размещении. Для рабочих нагрузок coding-агентов, где inference модели занимает 500 мс — 5 с, это пренебрежимо мало. Выигрыш от автоматического failover перевешивает эти миллисекунды.
Можно ли одновременно использовать встроенные модели агента и модели через роутер?
В большинстве случаев — да. Встроенные модели Cursor, подписочный доступ Claude Code и hosted-модели Zed работают независимо от конфигурации custom endpoint. Вы можете переключаться между встроенными и маршрутизируемыми моделями на уровне отдельной беседы.
Что произойдёт, если роутер упадёт?
Без резервной конфигурации coding-агент не сможет подключиться. Для снижения рисков настройте запасного провайдера в инструментах, которые это поддерживают (например, несколько блоков model_provider в Codex), или используйте high-availability deployment роутера.
Нужны ли отдельные API Key роутера для каждого разработчика?
Рекомендуется, но не обязательно. Персональные ключи позволяют отслеживать использование и отзывать доступ индивидуально. Некоторые роутеры поддерживают командные ключи с идентификацией пользователя через custom headers.
Работает ли это с self-hosted моделями?
Да. Если вы запускаете модель за OpenAI-совместимым API (vLLM, Ollama, TGI), подключите её к роутеру как провайдер, а coding-агенты направьте на роутер. Агентам не нужно знать, что модель self-hosted.
Связанные материалы
- OpenAI-совместимые API-провайдеры — полный список провайдеров, совместимых с этой схемой
- Руководство по Cursor custom API endpoint — углублённая настройка Cursor
- Сравнение API routing для AI coding-агентов — сравнение подходов к маршрутизации
- Маршрутизация моделей для coding-агентов, осень 2026 — актуальные рекомендации по моделям
- Настройка fallback моделей — подробности конфигурации fallback-цепочек
- Провайдер OpenAI — детали маршрутизации OpenAI
- Провайдер Anthropic — детали маршрутизации Anthropic