Додайте кастомного 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.