Dodaj niestandardowego providera kompatybilnego z OpenAI do Zed.

Updated 2026-07-29

Zed odczytuje niestandardowych providerów bezpośrednio z settings.json. Zadeklaruj blok language_models.openai_compatible z api_url ustawionym na https://api.apisrouter.com/v1, wylistuj identyfikatory modeli, których chcesz, a każdy z nich pojawi się w pickerze modeli panelu agenta pod jednym kluczem.

Szybka odpowiedź: jeden blok w settings.json.

Zed natywnie obsługuje niestandardowych providerów kompatybilnych z OpenAI. Dodaj wpis providera pod language_models.openai_compatible w settings.json, ustaw api_url na https://api.apisrouter.com/v1 i zadeklaruj każdy model, którego chcesz, pod available_models z jego nazwą i rozmiarem kontekstu. Modele pojawiają się natychmiast w rozwijanej liście modeli panelu agenta. Klucz API celowo nie trafia do settings.json. Zed przechowuje go w systemowym keychainie, gdy wpiszesz go przez UI ustawień providera, albo odczytuje go ze zmiennej środowiskowej wyprowadzonej z klucza Twojego providera: provider o nazwie apisrouter odczytuje APISROUTER_API_KEY. Zmienne środowiskowe mają pierwszeństwo przed wartościami z keychaina.

{
  "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
          }
        ]
      }
    }
  }
}

Jak Zed rozwiązuje niestandardowych providerów i modele.

Zed (zed-industries na GitHubie, ok. 87 tys. gwiazdek) to wysokowydajny edytor z panelem agenta, który planuje, edytuje pliki i uruchamia narzędzia. Jego typ providera openai_compatible mówi standardowym protokołem /v1/chat/completions, dokładnie tym, który obsługuje wielodostawcza bramka, więc między edytorem a endpointem nie siedzi żaden plugin ani rozszerzenie. Klucz providera, który wybierzesz („apisrouter" powyżej), pełni podwójną rolę. Nazywa providera w ustawieniach panelu agenta i generuje nazwę zmiennej środowiskowej, której Zed szuka dla klucza, w formacie UPPER_SNAKE_CASE z sufiksem _API_KEY. Tę zasadę nazewnictwa warto przyswoić, zanim zaczniesz cokolwiek debugować: zmiana nazwy providera zmienia wraz z nią oczekiwaną nazwę zmiennej. available_models to lista dozwolonych. Zed nie potrafi samodzielnie wyliczyć niestandardowego endpointu, więc wybieralne są tylko zadeklarowane identyfikatory, każdy jako dokładny string łącznie z ewentualnym sufiksem wersji. Gdy endpoint za api_url obsługuje obok siebie identyfikatory Claude, GPT, Gemini i Kimi, jeden blok providera zamienia picker panelu agenta w międzydostawcową centralę pod jednym kluczem. Jedna uwaga co do zakresu: funkcja edit predictions w Zed używa własnych, dedykowanych modeli i jest konfigurowana osobno; niestandardowy provider zasila panel agenta i inline assistant, a nie edit predictions.

Pełna konfiguracja: modele, rozmiary kontekstu i możliwości.

Każdy wpis available_models przyjmuje więcej niż nazwę. max_tokens deklaruje okno kontekstu modelu, a max_output_tokens ogranicza długość generacji; Zed używa tych wartości do zarządzania długimi wątkami agenta, więc zadeklarowanie modelu z długim kontekstem z małym max_tokens po cichu marnuje zapas modelu. Obiekt capabilities mówi Zed, co obsługuje model: ustaw tools na true dla wszystkiego, czym planujesz napędzać panel agenta, i włączaj images tylko dla modeli, które faktycznie akceptują wejście obrazowe. Jeśli chodzi o klucz, pewną ścieżką w edytorze desktopowym jest UI ustawień providera, które przechowuje wartość w systemowym keychainie. Ścieżka ze zmienną środowiskową też działa, z jednym zastrzeżeniem opisanym w sekcji debugowania: aplikacje GUI uruchamiane z docka nie dziedziczą profilu Twojej powłoki.

{
  "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 }
        ]
      }
    }
  }
}

Dobór modeli do panelu agenta.

Ponieważ każdy zadeklarowany model siedzi w tym samym pickerze, praktyczny workflow to porównywanie na prawdziwej pracy zamiast na benchmarkach: uruchom ten sam rodzaj zadania na dwóch kandydatach w różne dni i pozwól, żeby log użycia per klucz wycenił każdy z nich. Zmiana modelu w Zed to wybór z rozwijanej listy, więc koszt eksperymentu to zero konfiguracji.

  • Panel agenta dźwiga prawdziwy inżynieryjny wysiłek: czytanie plików, planowanie wieloetapowych edycji, uruchamianie narzędzi w długich wątkach. Do tego slotu należy flagowy model do kodowania (claude-sonnet-4-6, claude-opus-4-7, gpt-5.5).
  • Identyfikatory dostrojone pod kodowanie, takie jak kimi-k2.7-code, warto zadeklarować, nawet gdy nie są Twoim domyślnym wyborem; przełączenie się na nie przy sesji z dużą ilością refaktoryzacji to jeden wybór w pickerze, a nie edycja konfiguracji.
  • Modele z długim kontekstem, takie jak gemini-3.1-pro-preview, zarabiają na swoje miejsce, gdy wątki regularnie wciągają duże pliki albo kontekst całego modułu do jednej konwersacji.
  • Inline assist jest krótkotrwałe w porównaniu z wątkami agenta, więc szybki identyfikator średniego poziomu utrzymuje jednorazowe transformacje żwawymi, bez spalania flagowych tokenów na jednolinijkowe przepisania.

Płatność za użycie · poniżej cen oficjalnych

Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.

ModelCena oficjalnaNasza cena
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

Tryby awarii charakterystyczne dla niestandardowych providerów w Zed.

Klucz jest w settings.json i nic nie działa. Zed celowo nie odczytuje kluczy API z settings.json. Wpisz klucz w UI ustawień providera albo wyeksportuj wyprowadzoną zmienną środowiskową; klucz wklejony do JSON jest ignorowany. Zmienna środowiskowa jest ustawiona, ale Zed wciąż prosi o klucz. Nazwa zmiennej jest wyprowadzona z klucza providera, w formacie UPPER_SNAKE_CASE z dopisanym _API_KEY, więc provider o nazwie apisrouter potrzebuje APISROUTER_API_KEY, a nie OPENAI_API_KEY. A na macOS aplikacja uruchomiona z docka nigdy nie wczytuje profilu Twojej powłoki, więc eksporty z profilu są dla niej niewidoczne. Uruchom Zed z terminala poleceniem zed, albo skorzystaj ze ścieżki keychaina i całkowicie omiń problem. Model brakuje w pickerze. available_models to lista dozwolonych; identyfikator, który zakładałeś, ale nigdy nie zadeklarowałeś, po prostu nie istnieje. Identyfikatory to dokładne stringi łącznie z sufiksami wersji, a lista /v1/models bramki to autorytatywna pisownia, z której warto kopiować. Agent nie może używać narzędzi. Jeśli blok capabilities modelu mówi, że tools ma wartość false, Zed nie zaoferuje użycia narzędzi z nim. Zadeklaruj capabilities zgodnie z tym, co model faktycznie obsługuje. api_url bez /v1. Klient dokleja ścieżki tras, takie jak /chat/completions, do podanej przez Ciebie bazy, więc https://api.apisrouter.com/v1 jest poprawne, a sam host już nie. Awaria w kształcie 404 przy poza tym poprawnym bloku to prawie zawsze to.

Kto kieruje Zed przez bramkę.

  • Deweloperzy, którzy żyją w edytorze i chcą mieć Claude, GPT i Kimi w jednym pickerze panelu agenta, zamiast utrzymywać osobne poświadczenia providera dla każdego dostawcy.
  • Inżynierowie porównujący modele do kodowania na prawdziwych edycjach. Każdy kandydat to jeden zadeklarowany wpis i jeden wybór z rozwijanej listy; żadnych nowych kont na eksperyment.
  • Zespoły standaryzujące jeden sekret. Pojedynczy APISROUTER_API_KEY w dokumentacji wdrożeniowej zastępuje listę kontrolną kluczy per dostawca, a użycie per klucz pokazuje, ile wydaje każde stanowisko.
  • Użytkownicy łączący flagowy model agenta z szybkim modelem do inline-assist od innego dostawcy, czego nie da się wyrazić konfiguracją jednego dostawcy.
  • Deweloperzy bez dostępu do rozliczeń danego dostawcy. Dostęp oparty na doładowaniu, bez wymogu karty, usuwa zależność od rejestracji u każdego providera.

Zweryfikuj endpoint i debuguj pierwszy wątek.

Przed rozpoczęciem wątku agenta wylistuj, co obsługuje bramka. Identyfikatory zwracane przez /v1/models to dokładnie te stringi, których muszą używać Twoje wpisy available_models. Awarie pierwszego wątku są spójne. 401 oznacza, że klucz rozwiązany przez Zed jest błędny albo nieobecny: sprawdź wpis w keychainie w ustawieniach providera, albo potwierdź, że wyprowadzona zmienna środowiskowa jest widoczna dla procesu Zed, a nie tylko dla Twojego terminala. Błąd model-not-found z bramki oznacza, że zadeklarowana nazwa nie odpowiada obsługiwanemu identyfikatorowi, łącznie z sufiksem wersji. Jeśli blok providera w ogóle nie pojawia się w ustawieniach, zwaliduj JSON; settings.json toleruje komentarze, ale nie błędy strukturalne. Gdy żądania już płyną, konsola APIsRouter pokazuje model per żądanie, liczbę tokenów i wydatki. Wątki agenta to obciążenia z długim kontekstem i wieloma turami, a zobaczenie, które wątki i które modele zużywają tokeny, to sposób, żeby zdecydować, czy Twój domyślny model zarabia na swój slot.

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $APISROUTER_API_KEY" | head -50

Częste pytania

Czy Zed może używać modeli Claude, GPT i Kimi przez jednego niestandardowego providera?

Tak. Niestandardowy provider to api_url plus lista dozwolonych available_models. Gdy endpoint obsługuje wielu dostawców, zadeklaruj jeden wpis na identyfikator, a każdy zadeklarowany model pojawi się w pickerze panelu agenta pod tym samym providerem i kluczem, przełączalny per wątek.

Gdzie trafia klucz API dla niestandardowego providera w Zed?

Nie do settings.json. Wpisz go w UI ustawień providera, które przechowuje go w systemowym keychainie, albo wyeksportuj zmienną środowiskową wyprowadzoną z klucza Twojego providera: provider o nazwie apisrouter odczytuje APISROUTER_API_KEY. Zmienne środowiskowe mają pierwszeństwo przed wartościami z keychaina.

Dlaczego Zed ignoruje klucz API, który wyeksportowałem w profilu powłoki?

Aplikacje GUI uruchamiane z docka nigdy nie wczytują profilu Twojej powłoki, więc export jest dla nich niewidoczny. Uruchom Zed z terminala poleceniem zed, żeby odziedziczył zmienną, albo skorzystaj z UI ustawień i pozwól, żeby klucz trzymał keychain.

Dlaczego mój model brakuje w pickerze panelu agenta?

Modele niestandardowego providera muszą być zadeklarowane jawnie; Zed nie potrafi wyliczyć niestandardowego endpointu. Sprawdź, czy available_models zawiera dokładny string identyfikatora, łącznie z sufiksami wersji, i kopiuj identyfikatory z odpowiedzi /v1/models bramki, zamiast wpisywać je z pamięci.

Co kontrolują max_tokens i max_output_tokens w available_models?

max_tokens deklaruje okno kontekstu modelu, a max_output_tokens ogranicza długość generacji. Zed używa ich do zarządzania długimi wątkami agenta, więc ustaw max_tokens na to, co model naprawdę obsługuje; zaniżenie marnuje kontekst, który model faktycznie posiada.

Czy niestandardowy provider zmienia edit predictions w Zed?

Nie. Edit predictions działają na własnych, dedykowanych modelach Zed i są konfigurowane osobno. Niestandardowy provider kompatybilny z OpenAI zasila panel agenta i inline assistant, gdzie trafia ruch /v1/chat/completions.