Додайте кастомного 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, коли ви вводите його через інтерфейс налаштувань провайдера, або зчитує зі змінної середовища, похідної від ключа вашого провайдера: провайдер із назвою 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, приблизно 87 тис. зірок) — високопродуктивний редактор з панеллю агента, яка планує, редагує файли і запускає інструменти. Його тип провайдера 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 лише для моделей, які справді приймають зображення на вхід. Для ключа надійний шлях у десктопному редакторі — інтерфейс налаштувань провайдера, який зберігає значення в системному keychain. Шлях через змінну середовища теж працює, з одним застереженням, розглянутим у розділі налагодження: GUI-застосунки, запущені з dock, не успадковують ваш профіль shell.
{
"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 виправдовують своє місце, коли нитки регулярно затягують великі файли чи контекст цілого модуля в одну розмову.
- Inline assist живе коротше, ніж нитки агента, тож швидкий 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. Введіть ключ через інтерфейс налаштувань провайдера або експортуйте похідну змінну середовища; ключ, вставлений у JSON, ігнорується. Змінну середовища встановлено, але Zed все одно запитує ключ. Назва змінної походить від ключа провайдера, у верхньому регістрі через підкреслення з доданим _API_KEY, тож провайдеру з назвою apisrouter потрібен APISROUTER_API_KEY, а не OPENAI_API_KEY. І на macOS застосунок, запущений з dock, ніколи не завантажує ваш профіль shell, тож експорти профілю для нього невидимі. Запустіть 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 в документації онбордингу замінює чек-лист ключів для кожного постачальника, а використання за ключем показує, скільки витрачає кожне місце.
- Користувачі, що поєднують передову модель агента зі швидкою моделлю inline-assist від іншого постачальника — те, що не можуть виразити конфігурації одного постачальника.
- Розробники без доступу до білінгу певного постачальника. Доступ на основі поповнення без вимоги картки прибирає залежність від реєстрації в кожного провайдера.
Перевірте ендпоінт і налагодьте першу нитку.
Перед початком нитки агента перегляньте, що обслуговує шлюз. ID, повернуті /v1/models, — це точно ті рядки, які мають використовувати ваші записи available_models. Збої першої нитки послідовні. 401 означає, що ключ, який розв'язав Zed, неправильний чи відсутній: перевірте запис у keychain у налаштуваннях провайдера або підтвердьте, що похідна змінна середовища видима процесу Zed, а не лише вашому терміналу. Помилка «модель не знайдено» від шлюзу означає, що оголошена назва не збігається з обслуговуваним 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. Введіть його через інтерфейс налаштувань провайдера, який зберігає його в системному keychain, або експортуйте змінну середовища, похідну від ключа вашого провайдера: провайдер із назвою apisrouter зчитує APISROUTER_API_KEY. Змінні середовища мають пріоритет над значеннями keychain.
Чому Zed ігнорує API-ключ, який я експортував у профілі shell?
GUI-застосунки, запущені з dock, ніколи не завантажують ваш профіль shell, тож експорт для них невидимий. Запустіть Zed з термінала командою zed, щоб він успадкував змінну, або скористайтесь інтерфейсом налаштувань і дозвольте 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.