Füge Zed einen benutzerdefinierten OpenAI-kompatiblen Provider hinzu.

Updated 2026-07-29

Zed liest benutzerdefinierte Provider direkt aus settings.json. Deklariere einen language_models.openai_compatible-Block mit api_url auf https://api.apisrouter.com/v1, liste die gewünschten Modell-IDs auf, und jede davon erscheint im Modell-Picker des Agent-Panels unter einem einzigen Key.

Kurzantwort: ein Block in settings.json.

Zed unterstützt benutzerdefinierte OpenAI-kompatible Provider nativ. Füge in settings.json unter language_models.openai_compatible einen Provider-Eintrag hinzu, setze api_url auf https://api.apisrouter.com/v1, und deklariere jedes gewünschte Modell unter available_models mit Name und Kontextgröße. Die Modelle erscheinen sofort im Modell-Dropdown des Agent-Panels. Der API-Key gehört bewusst nicht in settings.json. Zed speichert ihn im System-Schlüsselbund, wenn du ihn über die Provider-Einstellungs-UI einträgst, oder liest ihn aus einer Umgebungsvariable, die sich vom Provider-Key ableitet: Ein Provider namens apisrouter liest APISROUTER_API_KEY. Umgebungsvariablen haben Vorrang vor Schlüsselbund-Werten.

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

Wie Zed benutzerdefinierte Provider und Modelle auflöst.

Zed (zed-industries auf GitHub, rund 87K Stars) ist ein Hochleistungs-Editor mit einem Agent-Panel, das plant, Dateien bearbeitet und Tools ausführt. Sein openai_compatible-Providertyp spricht das Standard-/v1/chat/completions-Protokoll — genau das, was ein Multi-Vendor-Gateway liefert, sodass kein Plugin oder keine Extension zwischen Editor und Endpoint sitzt. Der von dir gewählte Provider-Key ("apisrouter" oben) erfüllt eine Doppelfunktion. Er benennt den Provider in den Agent-Panel-Einstellungen, und er erzeugt den Namen der Umgebungsvariable, die Zed für den Key prüft, in Upper-Snake-Case mit dem Suffix _API_KEY. Diese Namensregel solltest du dir einprägen, bevor du irgendetwas debuggst: Benennst du den Provider um, ändert sich auch der erwartete Variablenname mit. available_models ist eine Allowlist. Zed kann einen benutzerdefinierten Endpoint nicht selbst enumerieren, also werden nur die IDs auswählbar, die du deklarierst, jede als exakter String inklusive eventuellem Versions-Suffix. Wenn der Endpoint hinter api_url Claude-, GPT-, Gemini- und Kimi-IDs nebeneinander bedient, macht ein einziger Provider-Block aus dem Agent-Panel-Picker eine Cross-Vendor-Schaltzentrale hinter einem Key. Ein Hinweis zum Umfang: Zeds Edit-Predictions-Feature nutzt eigene, dedizierte Modelle und wird separat konfiguriert; ein benutzerdefinierter Provider versorgt das Agent-Panel und den Inline-Assistenten, nicht die Edit Predictions.

Vollständiges Setup: Modelle, Kontextgrößen und Capabilities.

Jeder available_models-Eintrag braucht mehr als einen Namen. max_tokens deklariert das Kontextfenster des Modells, und max_output_tokens begrenzt die Generierungslänge; Zed nutzt diese Werte, um lange Agent-Threads zu verwalten, sodass ein langkontextfähiges Modell mit zu klein deklariertem max_tokens seinen Spielraum stillschweigend verschenkt. Das capabilities-Objekt teilt Zed mit, was das Modell unterstützt: Setze tools auf true für alles, womit du das Agent-Panel steuern willst, und aktiviere images nur für Modelle, die tatsächlich Bild-Input akzeptieren. Für den Key ist der zuverlässige Weg auf einem Desktop-Editor die Provider-Einstellungs-UI, die den Wert im System-Schlüsselbund speichert. Der Umgebungsvariablen-Weg funktioniert ebenfalls, mit einem im Debugging-Abschnitt behandelten Vorbehalt: GUI-Anwendungen, die aus dem Dock gestartet werden, erben dein Shell-Profil nicht.

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

Modelle für das Agent-Panel wählen.

Weil jedes deklarierte Modell im selben Picker sitzt, ist der praktische Workflow der Vergleich an echter Arbeit statt an Benchmarks: Lass dieselbe Art Aufgabe an unterschiedlichen Tagen durch zwei Kandidaten laufen und lass das Per-Key-Nutzungslog jeden bepreisen. Ein Modellwechsel in Zed ist eine Dropdown-Auswahl, die Kosten des Experiments sind also null Setup.

  • Das Agent-Panel trägt echtes Engineering: Dateien lesen, mehrstufige Edits planen, Tools über lange Threads ausführen. Ein Spitzen-Coding-Modell (claude-sonnet-4-6, claude-opus-4-7, gpt-5.5) gehört in diesen Slot.
  • Coding-optimierte IDs wie kimi-k2.7-code lohnt es sich zu deklarieren, auch wenn sie nicht dein Standard sind; für eine refactoring-lastige Sitzung ist der Wechsel eine Picker-Auswahl, keine Config-Änderung.
  • Long-Context-Modelle wie gemini-3.1-pro-preview verdienen ihren Platz, wenn Threads regelmäßig große Dateien oder ganze Modul-Kontexte in eine einzige Konversation ziehen.
  • Inline Assist ist kurzlebiger als Agent-Threads, daher hält eine schnelle Mid-Tier-ID Single-Shot-Transformationen zügig, ohne Spitzen-Token für Einzeiler-Umschreibungen zu verbrennen.

Nutzungsbasiert · unter offiziellem Preis

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

ModellOffizieller PreisUnser Preis
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

Die Fehlerbilder, die speziell bei Zeds benutzerdefinierten Providern auftreten.

Der Key steht in settings.json und nichts funktioniert. Zed liest API-Keys per Design nicht aus settings.json. Trage den Key in der Provider-Einstellungs-UI ein, oder exportiere die abgeleitete Umgebungsvariable; ein in die JSON eingefügter Key wird ignoriert. Die Umgebungsvariable ist gesetzt, aber Zed fragt trotzdem nach einem Key. Der Variablenname leitet sich vom Provider-Key ab, in Upper-Snake-Case mit angehängtem _API_KEY, sodass ein Provider namens apisrouter APISROUTER_API_KEY braucht, nicht OPENAI_API_KEY. Und unter macOS lädt eine aus dem Dock gestartete App nie dein Shell-Profil, sodass Profil-Exports für sie unsichtbar sind. Starte Zed aus einem Terminal mit dem Befehl zed, oder nutze den Schlüsselbund-Weg und umgehe das Problem ganz. Ein Modell fehlt im Picker. available_models ist eine Allowlist; eine ID, die du angenommen, aber nie deklariert hast, existiert schlicht nicht. IDs sind exakte Strings inklusive Versions-Suffix, und die /v1/models-Liste des Gateways ist die maßgebliche Schreibweise zum Kopieren. Der Agent kann keine Tools nutzen. Wenn der capabilities-Block eines Modells tools auf false setzt, bietet Zed damit keine Tool-Nutzung an. Deklariere capabilities passend zu dem, was das Modell tatsächlich unterstützt. api_url ohne /v1. Der Client hängt Routenpfade wie /chat/completions an die von dir angegebene Basis an, also ist https://api.apisrouter.com/v1 korrekt und der nackte Host nicht. Ein 404-artiger Fehler bei einem ansonsten korrekten Block ist fast immer das.

Wer Zed über ein Gateway routet.

  • Entwickler, die im Editor leben und Claude, GPT und Kimi in einem Agent-Panel-Picker wollen, statt separate Provider-Credentials pro Anbieter zu pflegen.
  • Engineers, die Coding-Modelle an echten Edits vergleichen. Jeder Kandidat ist ein deklarierter Eintrag und eine Dropdown-Auswahl; keine neuen Accounts pro Experiment.
  • Teams, die ein einziges Secret standardisieren. Ein einzelner APISROUTER_API_KEY in den Onboarding-Docs ersetzt eine Pro-Vendor-Key-Checkliste, und die Per-Key-Nutzung zeigt, was jeder Platz ausgibt.
  • Nutzer, die ein Spitzen-Agent-Modell mit einem schnellen Inline-Assist-Modell eines anderen Anbieters kombinieren — etwas, das Single-Vendor-Configs nicht abbilden können.
  • Entwickler ohne Zugang zur Abrechnung eines bestimmten Anbieters. Guthabenbasierter Zugang ohne Kartenpflicht entfernt die Sign-up-Abhängigkeit pro Provider.

Den Endpoint verifizieren und den ersten Thread debuggen.

Bevor du einen Agent-Thread startest, liste auf, was das Gateway bereitstellt. Die von /v1/models zurückgegebenen IDs sind exakt die Strings, die deine available_models-Einträge verwenden müssen. Fehler beim ersten Thread sind konsistent. Ein 401 bedeutet, dass der von Zed aufgelöste Key falsch oder nicht vorhanden ist: Prüfe den Schlüsselbund-Eintrag in den Provider-Einstellungen, oder bestätige, dass die abgeleitete Umgebungsvariable für den Zed-Prozess sichtbar ist, nicht nur für dein Terminal. Ein „Model not found"-Fehler vom Gateway bedeutet, dass ein deklarierter Name nicht zu einer bereitgestellten ID passt, Versions-Suffix eingeschlossen. Erscheint der Provider-Block in den Einstellungen gar nicht, validiere die JSON; settings.json toleriert Kommentare, aber keine strukturellen Fehler. Sobald Anfragen fließen, zeigt die APIsRouter-Konsole Modell, Token-Zahlen und Ausgaben pro Anfrage. Agent-Threads sind Workloads mit langem Kontext und vielen Turns, und zu sehen, welche Threads und welche Modelle die Token verbrauchen, verrät dir, ob dein Standardmodell seinen Platz verdient.

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

Häufige Fragen

Kann Zed Claude-, GPT- und Kimi-Modelle über einen benutzerdefinierten Provider nutzen?

Ja. Ein benutzerdefinierter Provider besteht aus einer api_url plus einer available_models-Allowlist. Bedient der Endpoint mehrere Anbieter, deklariere einen Eintrag pro ID, und jedes deklarierte Modell erscheint im Agent-Panel-Picker unter demselben Provider und Key, pro Thread wechselbar.

Wo trage ich den API-Key für einen benutzerdefinierten Zed-Provider ein?

Nicht in settings.json. Trage ihn in der Provider-Einstellungs-UI ein, die ihn im System-Schlüsselbund speichert, oder exportiere die vom Provider-Key abgeleitete Umgebungsvariable: Ein Provider namens apisrouter liest APISROUTER_API_KEY. Umgebungsvariablen haben Vorrang vor Schlüsselbund-Werten.

Warum ignoriert Zed den API-Key, den ich in meinem Shell-Profil exportiert habe?

GUI-Apps, die aus dem Dock gestartet werden, laden dein Shell-Profil nie, sodass der Export für sie unsichtbar ist. Starte Zed aus einem Terminal mit dem Befehl zed, damit es die Variable erbt, oder nutze die Einstellungs-UI und lass den Schlüsselbund den Key halten.

Warum fehlt mein Modell im Agent-Panel-Picker?

Modelle benutzerdefinierter Provider müssen explizit deklariert werden; Zed kann einen benutzerdefinierten Endpoint nicht enumerieren. Prüfe, dass available_models den exakten ID-String enthält, inklusive Versions-Suffix, und kopiere IDs aus der /v1/models-Antwort des Gateways statt sie aus dem Gedächtnis zu tippen.

Was steuern max_tokens und max_output_tokens in available_models?

max_tokens deklariert das Kontextfenster des Modells, und max_output_tokens begrenzt die Generierungslänge. Zed nutzt diese Werte, um lange Agent-Threads zu verwalten, setze max_tokens also auf das, was das Modell tatsächlich unterstützt; ein zu niedriger Wert verschenkt Kontext, den das Modell eigentlich hat.

Ändert ein benutzerdefinierter Provider Zeds Edit Predictions?

Nein. Edit Predictions laufen auf Zeds eigenen, dedizierten Modellen und werden separat konfiguriert. Ein benutzerdefinierter OpenAI-kompatibler Provider versorgt das Agent-Panel und den Inline-Assistenten, wohin auch der /v1/chat/completions-Traffic geht.