Добавьте кастомного OpenAI-совместимого провайдера в Zed.
Updated 2026-07-29
Zed читает кастомных провайдеров прямо из settings.json. Объявите блок language_models.openai_compatible с api_url, установленным в https://api.apisrouter.com/v1, перечислите нужные ID моделей, и каждая из них появится в пикере моделей панели агента под одним ключом.
Короткий ответ: один блок в settings.json.
Zed нативно поддерживает кастомных OpenAI-совместимых провайдеров. Добавьте запись провайдера под language_models.openai_compatible в settings.json, установите api_url в https://api.apisrouter.com/v1 и объявите каждую нужную модель под available_models с её именем и размером контекста. Модели сразу появятся в выпадающем списке моделей панели агента. API-ключ намеренно не помещается в settings.json. Zed хранит его в системном keychain, когда вы вводите его через UI настроек провайдера, либо читает его из переменной окружения, производной от имени вашего провайдера: провайдер по имени apisrouter читает APISROUTER_API_KEY. Переменные окружения имеют приоритет над значениями keychain.
{
"language_models": {
"openai_compatible": {
"apisrouter": {
"api_url": "https://api.apisrouter.com/v1",
"available_models": [
{
"name": "claude-sonnet-4-6",
"display_name": "Claude Sonnet 4.6",
"max_tokens": 200000
}
]
}
}
}
}Как Zed резолвит кастомных провайдеров и модели.
Zed (zed-industries на GitHub, около 87K звёзд) — высокопроизводительный редактор с панелью агента, которая планирует, редактирует файлы и запускает инструменты. Тип провайдера openai_compatible говорит по стандартному протоколу /v1/chat/completions — именно тому, что обслуживает мультивендорный шлюз, так что между редактором и эндпоинтом не стоит ни плагин, ни расширение. Выбранный вами ключ провайдера («apisrouter» выше) выполняет двойную роль. Он именует провайдера в настройках панели агента, и он же генерирует имя переменной окружения, которую проверяет Zed для ключа, — верхний регистр со змеиной нотацией и суффиксом _API_KEY. Это правило именования стоит усвоить прежде, чем что-либо отлаживать: переименуйте провайдера, и ожидаемое имя переменной изменится вместе с ним. available_models — это allowlist. Zed не может самостоятельно перечислить кастомный эндпоинт, так что доступны только те ID, что вы объявили, — каждый как точная строка, включая любой версионный суффикс. Когда эндпоинт за api_url обслуживает ID Claude, GPT, Gemini и Kimi бок о бок, один блок провайдера превращает пикер панели агента в кросс-вендорный коммутатор за одним ключом. Одна оговорка по охвату: функция edit predictions в Zed использует собственные выделенные модели и настраивается отдельно; кастомный провайдер питает панель агента и инлайн-ассистента, а не edit predictions.
Полная настройка: модели, размеры контекста и возможности.
Каждая запись available_models принимает больше, чем просто имя. max_tokens объявляет контекстное окно модели, а max_output_tokens ограничивает длину генерации; Zed использует эти цифры для управления длинными агентными тредами, так что объявление модели с длинным контекстом с маленьким max_tokens незаметно тратит впустую запас модели. Объект capabilities говорит Zed, что модель поддерживает: установите tools в true для всего, чем планируете управлять через панель агента, и включайте images только для моделей, которые действительно принимают ввод изображений. Для ключа надёжный путь на десктопном редакторе — UI настроек провайдера, который хранит значение в системном keychain. Путь через переменную окружения тоже работает, с одной оговоркой, разобранной в разделе отладки: GUI-приложения, запущенные из дока, не наследуют профиль вашей оболочки.
{
"language_models": {
"openai_compatible": {
"apisrouter": {
"api_url": "https://api.apisrouter.com/v1",
"available_models": [
{
"name": "claude-sonnet-4-6",
"display_name": "Claude Sonnet 4.6",
"max_tokens": 200000,
"max_output_tokens": 64000,
"capabilities": { "tools": true, "images": false }
},
{
"name": "claude-opus-4-7",
"display_name": "Claude Opus 4.7",
"max_tokens": 200000,
"capabilities": { "tools": true }
},
{ "name": "gpt-5.5", "display_name": "GPT-5.5", "max_tokens": 200000 },
{ "name": "kimi-k2.7-code", "display_name": "Kimi K2.7 Code", "max_tokens": 200000 }
]
}
}
}
}Выбор моделей для панели агента.
Поскольку каждая объявленная модель сидит в одном пикере, практический рабочий процесс — сравнение на реальной работе, а не на бенчмарках: проведите один и тот же тип задачи через двух кандидатов в разные дни и позвольте логу использования по ключу оценить каждого. Смена модели в Zed — это выбор в выпадающем списке, так что стоимость эксперимента равна нулю настроек.
- Панель агента несёт реальную инженерную работу: чтение файлов, планирование многошаговых правок, запуск инструментов на длинных тредах. Флагманская модель для кода (claude-sonnet-4-6, claude-opus-4-7, gpt-5.5) принадлежит этому слоту.
- ID, настроенные под код, вроде kimi-k2.7-code, стоит объявить, даже если они не ваш дефолт; переключение ради насыщенной рефакторингом сессии — это один выбор в пикере, а не правка конфига.
- Модели с длинным контекстом вроде gemini-3.1-pro-preview заслуживают своего места, когда треды регулярно затягивают большие файлы или контекст целого модуля в один разговор.
- Инлайн-ассист живёт короче, чем треды агента, так что быстрый ID среднего уровня держит одноразовые трансформации отзывчивыми, не сжигая флагманские токены на однострочные переписывания.
Оплата по факту · дешевле официальных цен
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| Модель | Официальная цена | Наша цена |
|---|---|---|
| Claude Sonnet 4.6 | $3.00 / $15.00 per M | $2.40 / $12.00 per M |
| Claude Opus 4.7 | $5.00 / $25.00 per M | $4.00 / $20.00 per M |
| GPT-5.5 | $5.00 / $30.00 per M | $4.00 / $24.00 per M |
| Kimi K2.7 Code | $0.95 / $4.00 per M | $1.00 / $4.00 per M |
| Gemini 3.1 Pro Preview | $2.00 / $12.00 per M | $1.60 / $9.60 per M |
Сбои, специфичные именно для кастомных провайдеров Zed.
Ключ в settings.json, и ничего не работает. Zed намеренно не читает API-ключи из settings.json. Введите ключ в UI настроек провайдера или экспортируйте производную переменную окружения; ключ, вставленный в JSON, игнорируется. Переменная окружения задана, а Zed всё равно просит ключ. Имя переменной выводится из ключа провайдера в верхнем регистре со змеиной нотацией и суффиксом _API_KEY, так что провайдеру с именем apisrouter нужен APISROUTER_API_KEY, а не OPENAI_API_KEY. И на macOS приложение, запущенное из дока, никогда не подгружает профиль вашей оболочки, так что экспорты из профиля для него невидимы. Запускайте Zed из терминала командой zed, либо используйте путь через keychain и вовсе обойдите проблему. Модель отсутствует в пикере. available_models — это allowlist; ID, который вы предполагали, но так и не объявили, просто не существует. ID — это точные строки, включая версионные суффиксы, а листинг /v1/models шлюза — авторитетное написание, откуда их копировать. Агент не может использовать инструменты. Если в блоке capabilities модели указано tools: false, Zed не предложит с ней использование инструментов. Объявляйте capabilities в соответствии с тем, что модель реально поддерживает. api_url без /v1. Клиент дописывает пути маршрутов вроде /chat/completions к тому base, который вы дали, так что https://api.apisrouter.com/v1 верен, а голый хост — нет. Сбой в форме 404 при в остальном корректном блоке почти всегда именно это.
Кто направляет Zed через шлюз.
- Разработчики, живущие в редакторе и желающие видеть Claude, GPT и Kimi в одном пикере панели агента вместо поддержания отдельных учётных данных провайдера на каждого вендора.
- Инженеры, сравнивающие модели для кода на реальных правках. Каждый кандидат — это одна объявленная запись и один выбор в выпадающем списке; ни одного нового аккаунта на эксперимент.
- Команды, стандартизирующие один секрет. Единый APISROUTER_API_KEY в документации онбординга заменяет чек-лист вендорских ключей, а использование по ключу показывает расходы каждого места.
- Пользователи, комбинирующие флагманскую модель агента с быстрой моделью инлайн-ассиста от другого вендора — то, что однопровайдерные конфиги выразить не могут.
- Разработчики без доступа к биллингу конкретного вендора. Доступ на основе пополнения без требования карты убирает зависимость от регистрации у каждого провайдера.
Проверьте эндпоинт и отладьте первый тред.
Перед началом треда агента посмотрите, что обслуживает шлюз. ID, возвращаемые /v1/models, — это ровно те строки, которые должны использовать ваши записи available_models. Сбои первого треда постоянны. 401 означает, что ключ, который резолвил Zed, неверен или отсутствует: проверьте запись в keychain в настройках провайдера, либо подтвердите, что производная переменная окружения видна процессу Zed, а не только вашему терминалу. Ошибка model-not-found от шлюза означает, что объявленное имя не совпадает с обслуживаемым ID, включая версионный суффикс. Если блок провайдера вообще не появляется в настройках, проверьте JSON; settings.json допускает комментарии, но не структурные ошибки. Как только запросы пойдут, консоль APIsRouter покажет модель на запрос, счётчики токенов и расходы. Треды агента — это долгоконтекстные, многоходовые нагрузки, и наблюдение за тем, какие треды и какие модели потребляют токены, — это способ решить, оправдывает ли ваша модель по умолчанию своё место.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50Частые вопросы
Может ли Zed использовать модели Claude, GPT и Kimi через одного кастомного провайдера?
Да. Кастомный провайдер — это api_url плюс allowlist available_models. Когда эндпоинт обслуживает несколько вендоров, объявите по одной записи на ID, и каждая объявленная модель появится в пикере панели агента под тем же провайдером и ключом, переключаемая для каждого треда.
Куда вставлять API-ключ для кастомного провайдера Zed?
Не в settings.json. Введите его в UI настроек провайдера, который хранит его в системном keychain, либо экспортируйте переменную окружения, производную от ключа вашего провайдера: провайдер по имени apisrouter читает APISROUTER_API_KEY. Переменные окружения имеют приоритет над значениями keychain.
Почему Zed игнорирует API-ключ, который я экспортировал в профиле оболочки?
GUI-приложения, запущенные из дока, никогда не подгружают профиль вашей оболочки, так что экспорт для них невидим. Запускайте Zed из терминала командой zed, чтобы он унаследовал переменную, либо используйте UI настроек и позвольте keychain хранить ключ.
Почему моя модель отсутствует в пикере панели агента?
Модели кастомного провайдера должны быть объявлены явно; Zed не может перечислить кастомный эндпоинт. Проверьте, что available_models содержит точную строку ID, включая версионные суффиксы, и копируйте ID из ответа /v1/models шлюза, а не набирайте по памяти.
Что контролируют max_tokens и max_output_tokens в available_models?
max_tokens объявляет контекстное окно модели, а max_output_tokens ограничивает длину генерации. Zed использует их для управления длинными агентными тредами, так что задайте max_tokens равным тому, что модель реально поддерживает; занижение тратит впустую контекст, который у модели реально есть.
Меняет ли кастомный провайдер edit predictions в Zed?
Нет. Edit predictions работают на собственных выделенных моделях Zed и настраиваются отдельно. Кастомный OpenAI-совместимый провайдер питает панель агента и инлайн-ассистента — туда и идёт трафик /v1/chat/completions.