Dokumentation
opencode
opencode baut seine Provider auf dem Vercel AI SDK auf. Daher genügt ein Block mit dem Namen eines npm-Pakets und einer baseURL, um auf einen neuen Endpunkt zu verweisen. Welches Paket Sie angeben, bestimmt, welches der beiden Wire-Formate verwendet wird.
Ein Anbieterblock in opencode.json — @ai-sdk/openai-compatible für Chat Completions, @ai-sdk/openai für die /v1/responses-Oberfläche.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"kunavo": {
"npm": "@ai-sdk/openai-compatible",
"name": "Kunavo",
"options": {
"baseURL": "https://api.kunavo.com/v1",
"apiKey": "{env:KUNAVO_API_KEY}"
},
"models": {
"claude-sonnet-5": {
"name": "Claude Sonnet 5",
"limit": { "context": 200000, "output": 64000 }
},
"claude-haiku-4-5": { "name": "Claude Haiku 4.5" }
}
}
}
}npm legt das Wire-Format fest. @ai-sdk/openai-compatible verwendet /v1/chat/completions, @ai-sdk/openai verwendet /v1/responses. Kunavo unterstützt beides; beides funktioniert. Verwenden Sie das Responses-Paket, wenn Reasoning-Elemente bei der GPT-Modellfamilie erhalten bleiben sollen, und das Chat-Completions-Paket für alle anderen Fälle."apiKey": "{env:KUNAVO_API_KEY}" liest den Schlüssel beim Laden aus der Umgebung ein. opencode.json ist eine Datei, die in Repositories landet. Ein darin wörtlich eingetragener Schlüssel bleibt nicht geheim.limit.context und limit.output für jedes Modell fest. opencode verfolgt anhand dieser Zahlen den verbleibenden Kontext. Fehlen sie bei einem Modell, wird dessen Kontextbudget anhand eines Standardwerts berechnet, der nicht seinem eigenen entspricht.sk-kn-) und füge ab $10 Guthaben hinzu – Aufrufe werden aus diesem Guthaben bezahlt, fehlgeschlagene Aufrufe werden nicht berechnet. Das Dashboard öffnet anschließend die opencode-Einrichtung.Schritt für Schritt
- Erstellen Sie unter
/app/keyseinen Schlüssel und kopieren Sie ihn — er wird nur einmal angezeigt. - Exportieren Sie ihn:
export KUNAVO_API_KEY=sk-kn-... - Fügen Sie den Provider-Block zu
opencode.jsonhinzu — entweder zur globalen Datei unter~/.config/opencode/opencode.jsonfür alle Projekte oder zur Datei im Projektstammverzeichnis, wenn er nur für dieses Repository gelten soll. - Starten Sie
opencodeund wählen Sie das Modell aus der Modellliste aus. Der Provider erscheint unter dem von Ihnen angegebenenname. - Um später ein Modell hinzuzufügen, ergänzen Sie einen weiteren Schlüssel unter
models— die ID wird über das Wire übertragen,nameist lediglich eine Bezeichnung.
Abgeglichen mit Die Provider-Dokumentation von opencode am 6. September 2026. Einstellungen von Drittanbietern können sich ändern; wenn ein Feldname hier nicht mehr mit deiner Ansicht übereinstimmt, ist diese Seite maßgeblich, nicht diese hier.
Vor dem Debugging des Clients prüfen
Eine Anfrage klärt, ob der Fehler am Endpunkt, am Schlüssel oder an der Konfigurationsdatei liegt. Wenn diese Anfrage JSON zurückgibt, funktionieren dieselbe Basis-URL und derselbe Schlüssel in opencode.
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."Welche Modell-ID in das Feld gehört
Jedes Textmodell ist über eine Modell-ID erreichbar – die aktuelle Liste findest du unter GET /v1/models, den Katalog mit Preisen auf der Modellseite. Die Tarife sind USD pro 1 Mio. Token, Eingabe / Ausgabe.
| Modell-ID | Kunavo: Ein- und Ausgabe | Wo es in opencode hineinpasst |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | das Standardmodell für Builds |
claude-opus-5 | $3.50 / $17.50 | der Planungsmodus, in dem der Plan alles Weitere bestimmt |
claude-haiku-4-5 | $0.70 / $3.50 | Arbeit mit Subagenten und Suche, bei der die Anzahl der Anfragen hoch ist |
gpt-5-6-sol | $2.00 / $12.00 | Verwenden Sie es mit @ai-sdk/openai, damit Reasoning-Elemente den Hin- und Rückweg überstehen |
Häufig gestellte Fragen
Wie füge ich opencode einen benutzerdefinierten Provider hinzu?
Fügen Sie unter „provider“ in opencode.json einen Block hinzu, in dem ein npm-Paket, ein Anzeigename, options.baseURL, options.apiKey und eine models-Zuordnung angegeben sind. Verwenden Sie @ai-sdk/openai-compatible für einen Endpunkt, der /v1/chat/completions bereitstellt, und @ai-sdk/openai für einen Endpunkt mit /v1/responses. Der Provider erscheint anschließend unter dem von Ihnen angegebenen Namen in der Modellliste von opencode.
Wie halte ich den API-Schlüssel aus opencode.json heraus?
Verwenden Sie in options.apiKey die Interpolationssyntax {env:VAR_NAME}, zum Beispiel "apiKey": "{env:KUNAVO_API_KEY}", und exportieren Sie die Variable in Ihrer Shell. opencode löst sie beim Laden der Konfiguration auf. So kann die Datei zusammen mit dem konfigurierten Projekt sicher eingecheckt werden.
Was ist in opencode der Unterschied zwischen @ai-sdk/openai und @ai-sdk/openai-compatible?
Sie wählen unterschiedliche Endpunkte derselben Basis-URL aus. @ai-sdk/openai-compatible ruft /chat/completions auf, das von fast jedem Gateway implementiert wird; @ai-sdk/openai ruft /responses auf, die neuere OpenAI-Oberfläche. Wählen Sie das Paket, das Ihr Endpunkt tatsächlich bereitstellt. Mit dem falschen Paket erhalten Sie einen 404-Fehler, obwohl die Basis-URL ansonsten korrekt ist.
Warum geht opencode früher als erwartet der Kontext aus?
Dem Modellelement fehlt ein Limit-Block, daher berechnet opencode das Kontextbudget anhand eines Standardwerts statt des tatsächlichen Kontextfensters des Modells. Fügen Sie diesem Modell in opencode.json "limit": { "context": <window>, "output": <max output> } mit den Werten aus dem Provider-Katalog hinzu. Dann stimmen die Kontextanzeige und die Kompaktierungspunkte mit der Realität überein.