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.
| Model | Cena oficjalna | Nasza 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 -50Czę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.