TL;DR
Konfigurieren Sie CometAPI einmal in OpenCode und wählen Sie dann Claude, GPT oder DeepSeek für Ihre Programmieraufgabe. Dieser Leitfaden erweitert den offiziellen Leitfaden zur CometAPI-OpenCode-Integration (https://apidoc.cometapi.com/integrations/opencode#use-opencode-with-cometapi) zu einem vollständigen Projektsetup: ein CometAPI-API-Schlüssel, eine Konfigurationsdatei mit drei Modellbeispielen, Befehle zum Modellwechsel und eine kleine JavaScript-Aufgabe mit wiederholbarer Prüfung.
Wichtigste Erkenntnisse
- Für die OpenCode-CometAPI-Einrichtung benötigen Sie eine Provider-ID, die API-Basis-URL, Anmeldedaten und eine Modell-ID.
- Verwenden Sie {env:COMETAPI_KEY}, um den tatsächlichen API-Schlüssel aus opencode.json herauszuhalten.
- Registrieren Sie Claude-, GPT- und DeepSeek-Beispiele in einer opencode.json; alle drei Einträge nutzen denselben CometAPI-Schlüssel und -Gateway.
- Wechseln Sie in OpenCode den ausgewählten Provider/das Modell, ohne separate Schlüssel für Anthropic, OpenAI und DeepSeek zu beschaffen.
- Achten Sie auf fehlende Umgebungsvariablen, nicht passende API-Routen und Bestätigungsaufforderungen, die wie hängende Anfragen wirken können.
Was ist OpenCode und warum mit CometAPI verwenden?
OpenCode (https://opencode.ai/) ist ein Open-Source-AI-Coding-Agent mit Terminaloberfläche, Desktop-App und IDE-Erweiterung. In einem Projekt kann er vorhandenen Code erklären, eine Änderung planen, Dateien bearbeiten und Befehle unter konfigurierten Berechtigungen ausführen. In diesem Tutorial wird der Terminal-Workflow verwendet: Geben Sie dem Agenten eine kleine Programmieraufgabe, prüfen Sie die vorgeschlagenen Aktionen und verifizieren Sie die resultierenden Dateien mit einem lokalen Test. Siehe die offizielle OpenCode-Dokumentation (https://opencode.ai/docs/) zur Installation und Nutzung.
CometAPI stellt die Model-Access-Schicht bereit. Ein Multi-Modell-Workflow erfordert ansonsten die Verwaltung von Zugangsdaten, Abrechnung und Verbindungseinstellungen über verschiedene Anbieter hinweg. Die Weiterleitung unterstützter Modelle über ein CometAPI-Konto gibt diesem Projekt einen gemeinsamen Schlüssel und eine gemeinsame Basis-URL, während OpenCode Repository und Aufgabenanweisungen beibehält. Das ist nützlich, wenn man Modelle an derselben Aufgabe vergleichen oder das ausgewählte Modell wechseln möchte, ohne das Projekt neu zu organisieren. Ein Aggregations-Gateway ist optional: Direkter Anbieterzugang kann für einen Single-Provider-Workflow oder spezifische vertragliche Anforderungen passen. Der Vorteil hier ist vereinfachter Multi-Provider-Zugriff; API-Formate, Modellverhalten und Werkzeugkompatibilität müssen weiterhin separat validiert werden.
CometAPI unterstützt OpenAI-kompatible Chat Completions und stellt auch andere API-Formate bereit. Die offizielle Integration wählt für jedes Format einen Adapter. Hier verwendet Claude Sonnet 5 Messages, GPT-6.1 Sol verwendet Responses, und DeepSeek V4.1 Flash verwendet Chat Completions, entsprechend den unten verlinkten Beispielen. Alle Anfragen gehen dennoch mit demselben Schlüssel an CometAPI. Ein Anbietername und ein API-Format beschreiben unterschiedliche Dinge; man sollte nicht annehmen, dass ein einzelnes Modell jedes Format akzeptiert.
| Konfiguration | Claude Sonnet 5 API in CometAPI | GPT-6.1 Sol API in CometAPI | DeepSeek V4.1 Flash API in CometAPI |
|---|---|---|---|
| Modellanbieter | Anthropic | OpenAI | DeepSeek |
| Modell-ID | claude-sonnet-5 | gpt-6.1-sol | deepseek-v4.1-flash |
| OpenCode-Provider-ID | cometapi-messages | cometapi-responses | cometapi-chat |
| Hier verwendetes API-Format | Messages | Responses/ chat | Chat Completions |
| Adapter | @ai-sdk/anthropic | @ai-sdk/openai | @ai-sdk/openai-compatible |
Was benötigen Sie vor der Konfiguration von CometAPI in OpenCode?
Verwenden Sie ein Terminal, Node.js mit npm, ein CometAPI-Konto mit API-Zugang und verfügbarem Guthaben sowie ein wegwerfbares Projektverzeichnis. Bash-Beispiele gelten für macOS, Linux oder WSL; die gekennzeichneten PowerShell-Beispiele verwenden Windows-Syntax. Node.js muss in derselben Session verfügbar sein, um die JavaScript-Prüfung später in diesem Leitfaden auszuführen.
Dieser Durchgang verwendet den OpenCode-1-Konfigurationsstil. Die offizielle Dokumentation (https://opencode.ai/docs/) unterscheidet OpenCode 1 von OpenCode 2; beide verwenden den Befehl opencode. Notieren Sie opencode --version vor dem Start und verwenden Sie die Konfigurationsdokumentation für diese Hauptversion. Der dreimodellige Workflow unten ist ein Integrationsdurchgang mit erwarteten Ergebnissen, nicht der Anspruch auf einen abgeschlossenen End-to-End-Test.
Notieren Sie Ihre CLI-, Node.js-, npm-, Betriebssystem- und Testdaten, wenn Sie die Beispiele ausführen. Die API-Nutzung wird Ihrem CometAPI-Konto berechnet. Die folgenden Befehle sind ein praktischer Durchgang mit erwarteten Ergebnissen; es wird kein modellgenerierter Output oder erfolgreicher Drei-Modell-Integrationslauf behauptet.
node --versionnpm --versionopencode --version
Wie konfiguriert man CometAPI in OpenCode Schritt für Schritt?
Schritt 1: OpenCode installieren
Installieren Sie das offizielle npm-Paket, wenn OpenCode noch nicht verfügbar ist. Die unfixierte Installation folgt der aktuellen Paketversion; notieren Sie die installierte Version, bevor Sie die Konfiguration verwenden. Wenn Sie die Umgebung des Quellleitfadens reproduzieren müssen, lautet dessen angegebene CLI-Version 1.18.16.
Installieren Sie die OpenCode-CLI und zeigen Sie deren Version an.
npm install -g opencode-aiopencode --version
Öffnen Sie ein neues Terminal, wenn die ausführbare Datei nach der Installation nicht gefunden wird. Fahren Sie in einem wegwerfbaren Projektverzeichnis fort, damit die erste Agentenaufgabe eine klare Abgrenzung hat.
Erstellen und betreten Sie ein Projektverzeichnis.
mkdir cometapi-opencode-democd cometapi-opencode-demo
Schritt 2: CometAPI-API-Schlüssel erstellen
Generieren Sie einen API-Schlüssel in Ihrem CometAPI-Konto (https://www.cometapi.com/) und setzen Sie ihn im selben Terminal, das zum Starten von OpenCode verwendet wird. Ersetzen Sie den Platzhalter lokal. Committen Sie den Schlüssel nicht, fügen Sie ihn nicht in Prompts ein und nehmen Sie ihn nicht in geteilte Logs auf.
Die Variable gilt für die aktuelle Shell und daraus gestartete Prozesse. Machen Sie keinen Screenshot eines echten Tokens. Die folgenden Prüfungen melden, ob die Variable existiert, ohne ihren Wert auszugeben.
Setzen Sie den CometAPI-Schlüssel für die aktuelle Bash-Session.
export COMETAPI_KEY="YOUR_COMETAPI_KEY"
Setzen Sie den CometAPI-Schlüssel für die aktuelle PowerShell-Session.
$env:COMETAPI_KEY = "YOUR_COMETAPI_KEY"test -n "$COMETAPI_KEY" && printf "COMETAPI_KEY is set\n" || printf "COMETAPI_KEY is missing\n"if ([string]::IsNullOrWhiteSpace($env:COMETAPI_KEY)) { "COMETAPI_KEY is missing"} else { "COMETAPI_KEY is set"}
Schritt 3: opencode.json erstellen
Erstellen Sie opencode.json im Projektstamm oder verwenden Sie ~/.config/opencode/opencode.json, um die Einträge projektübergreifend verfügbar zu machen. Die Projektdatei hält dieses Tutorial in sich geschlossen. Verwenden Sie ein einzelnes provider-Objekt, das die drei Einträge unten enthält; wenn bereits ein provider-Objekt existiert, mergen Sie dessen Einträge, statt einen doppelten JSON-Schlüssel zu erstellen.
Bei widersprüchlichen Feldern überschreibt die Projektkonfiguration die globale Konfiguration (https://opencode.ai/docs/config/#precedence-order); nicht widersprüchliche Felder bleiben erhalten. Die benutzerdefinierte OPENCODE_CONFIG-Datei wird zwischen globaler und Projektkonfiguration geladen. Prüfen Sie die dokumentierte Prioritätskette, wenn auch verwaltete oder Inline-Einstellungen vorhanden sind.
Speichern Sie die folgende vollständige Konfiguration als opencode.json. Jeder Provider liest COMETAPI_KEY aus der Umgebung. Das Standardmodell ist absichtlich weggelassen, damit Sie eines der drei Beispiele explizit wählen.
Die Flash-Variante macht das gewünschte DeepSeek-V4.1-Beispiel explizit. Belassen Sie GPT beim Responses-Adapter für Tool-Nutzung; der CometAPI-DeepSeek-Leitfaden (https://www.cometapi.com/how-to-use-the-deepseek-v4-1-flash-api/) dokumentiert die hier verwendete Chat-Completions-Route. Prüfen Sie vor dem Ausführen der Beispiele die Modellverfügbarkeit und Berechtigungen in Ihrem Konto erneut.
{ "$schema": "https://opencode.ai/config.json", "provider": { "cometapi-messages": { "npm": "@ai-sdk/anthropic", "name": "CometAPI Claude", "options": { "baseURL": "https://api.cometapi.com/v1", "apiKey": "{env:COMETAPI_KEY}" }, "models": { "claude-sonnet-5": { "name": "Claude Sonnet 5" } } }, "cometapi-responses": { "npm": "@ai-sdk/openai", "name": "CometAPI GPT", "options": { "baseURL": "https://api.cometapi.com/v1", "apiKey": "{env:COMETAPI_KEY}" }, "models": { "gpt-6.1-sol": { "name": "GPT-6.1 Sol" } } }, "cometapi-chat": { "npm": "@ai-sdk/openai-compatible", "name": "CometAPI DeepSeek", "options": { "baseURL": "https://api.cometapi.com/v1", "apiKey": "{env:COMETAPI_KEY}" }, "models": { "deepseek-v4.1-flash": { "name": "DeepSeek V4.1 Flash" } } } }, "permission": { "edit": "ask", "shell": "ask" }}
Korrekte baseURL: https://api.cometapi.com/v1. Falsche baseURL: https://api.cometapi.com/v1/chat/completions. Der Adapter fügt den Endpunktpfad hinzu. Mergen Sie das Beispiel in eine bestehende opencode.json, ohne nicht verwandte Einstellungen zu entfernen.
Die Einstellungen edit und shell fordern unter den aktuellen OpenCode-Berechtigungsregeln (https://opencode.ai/docs/permissions/) eine Bestätigung für Dateiänderungen und Befehle an. Führen Sie die Coding-Beispiele interaktiv aus und prüfen Sie diese Anfragen. OpenCode erbt außerdem den Betriebssystemzugriff des startenden Prozesses; verwenden Sie für diese Übung ein wegwerfbares Verzeichnis.
Schritt 4: Gateway-Verbindung prüfen
Optionale Gemini-Einrichtung und -Verifizierung werden nach den folgenden Verbindungsprüfungen für die drei Modelle bereitgestellt.
Das HTTP-Beispiel unten prüft den DeepSeek-Chat-Completions-Eintrag direkt. Dies ist eine nützliche Methode, um die Gateway-Verbindung von OpenCode zu isolieren. Claude und GPT verwenden im nächsten Schritt ihre ausgewählten Adapter-Routen; das Ändern der Modell-ID in dieser HTTP-Anfrage ändert nicht automatisch ihr Protokoll.
Senden Sie eine minimale Chat-Completions-Anfrage aus Bash.
curl --silent --show-error \ --output response.json \ --write-out "HTTP %{http_code}\n" \ https://api.cometapi.com/v1/chat/completions \ -H "Authorization: Bearer $COMETAPI_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"deepseek-v4.1-flash","messages":[{"role":"user","content":"Reply with a short greeting."}]}'
Dieser Befehl verwendet curl write-out und output-Optionen (https://curl.se/docs/manpage.html), um den HTTP-Status von response.json zu trennen. Ein erfolgreicher Transfer kann dennoch einen HTTP-Fehler enthalten, daher prüfen Sie den ausgegebenen Status und den JSON-Body. So wird eine Abhängigkeit von --fail-with-body vermieden, das curl 7.76.0 oder neuer erfordert.
Senden Sie dieselbe Anfrage aus PowerShell ohne shellspezifisches JSON-Quoting.
$body = @{ model = "deepseek-v4.1-flash" messages = @(@{ role = "user"; content = "Reply with a short greeting." })} | ConvertTo-Json -Depth 4$response = Invoke-WebRequest -UseBasicParsing -Method Post ` -Uri "https://api.cometapi.com/v1/chat/completions" ` -Headers @{ Authorization = "Bearer $env:COMETAPI_KEY" } ` -ContentType "application/json" ` -Body $body$response.Content | Set-Content -Encoding UTF8 response.json"HTTP $($response.StatusCode)"
Bei einem HTTP-Fehler kann PowerShell eine Exception auslösen, bevor die letzten beiden Zeilen ausgeführt werden. Erfassen Sie den Status und geschwärzte Fehlerinformationen aus diesem Fehler; zeichnen Sie ihn nicht als erfolgreiche Antwort auf.
Erwartetes Ergebnis für die DeepSeek-Anfrage: HTTP 200 und nicht leerer Text in choices[0].message.content. Prüfen Sie die gespeicherte response.json anstatt HTTP 200 allein zu akzeptieren. Die folgenden Ergänzungen zeigen die Antwortform und wie Sie alle drei konfigurierten Routen prüfen. Beispiele sind illustrativ; diese Revision beansprucht keine Live-CometAPI-Testergebnisse. Eine reine Textanfrage validiert weder Streaming noch Toolaufrufe.
Illustrative DeepSeek-Antwortform: Gruß, Nutzungswerte und andere Felder hängen von der tatsächlichen Anfrage ab. Das folgende JSON ist ein absichtlich gekürztes Beispiel, keine aufgezeichnete API-Antwort.
{"choices":[{"message":{"role":"assistant","content":"Hello!"}}]}
Nach einer tatsächlich erfolgreichen HTTP-Anfrage sollte die Statuszeile HTTP 200 lauten und response.json sollte nicht-leeren Assistant-Text enthalten. Bewahren Sie den tatsächlichen Status und Body Ihres eigenen Laufs auf; kopieren Sie das Beispiel nicht als Testnachweis.
Schritt 5: Zwischen Claude, GPT und DeepSeek wechseln
Die Befehle in diesem Schritt sollten die angeforderten Assistant-Markierungen zurückgeben. Illustrativer Assistant-Text, mit ausgelassenen Terminal-Bannern, Zeiten und Metadaten:
Claude: CLAUDE_READYGPT: GPT_READYDeepSeek: DEEPSEEK_READY
Diese Zeilen zeigen nur den erwarteten Inhalt. Es handelt sich nicht um ein Terminal-Transkript. Notieren Sie die tatsächliche Ausgabe und den Prozessrückgabecode für jeden Provider; eine fehlende Markierung oder fehlgeschlagene Anfrage erfordert Untersuchung.
Starten Sie im Verzeichnis mit opencode.json. Listen Sie die Modelle für jeden konfigurierten Provider auf und stellen Sie dann eine kurze Textanfrage an jeden Eintrag. Diese Befehle ändern das ausgewählte Modell und den Adapter; der CometAPI-Schlüssel und die Basis-URL bleiben gleich.
Verwenden Sie diese Befehle, um zu prüfen, dass alle drei Einträge sichtbar sind und Text zurückgeben können.
opencode models cometapi-messagesopencode models cometapi-responsesopencode models cometapi-chatopencode run --model cometapi-messages/claude-sonnet-5 "Reply exactly with: CLAUDE_READY"opencode run --model cometapi-responses/gpt-6.1-sol "Reply exactly with: GPT_READY"opencode run --model cometapi-chat/deepseek-v4.1-flash "Reply exactly with: DEEPSEEK_READY"
Für interaktives Umschalten starten Sie opencode, geben /models ein und wählen CometAPI Claude, CometAPI GPT oder CometAPI DeepSeek. OpenCode verwendet dann das Provider/Modell-Paar dieses Eintrags. Sie benötigen keine drei Anbieter-Accounts oder drei API-Schlüssel. Verwenden Sie bei dieser umgebungsbasierten Konfiguration nicht /connect, um ein zweites Anmeldedatum zu liefern; eine fehlende COMETAPI_KEY-Variable muss in der startenden Shell behoben werden.
Erwartetes Ergebnis: Jede Kurz-Anfrage liefert die angeforderte Markierung. Notieren Sie das tatsächliche Ergebnis für jedes Modell. Ein sichtbarer Modelleintrags bestätigt die Registrierung; eine erfolgreiche Textantwort bestätigt diesen Anfragepfad. Keines von beidem allein beweist, dass Datei-Tools funktionieren.
Gemini verwendet einen separaten Provider und ein separates Protokoll. Behalten Sie die obigen Einträge für Claude, GPT und DeepSeek bei; mergen Sie den folgenden Eintrag in das bestehende provider-Objekt. Die Basis-URL unten folgt der vom Reviewer bereitgestellten CometAPI-Konfiguration. Bestätigen Sie die aktuelle Route und den Modellzugang in Ihrem CometAPI-Konto vor der Nutzung.
Der Google-Adapter unterstützt eine benutzerdefinierte baseURL und sendet apiKey über x-goog-api-key. Siehe die offizielle AI SDK Google-Provider-Referenz (https://ai-sdk.dev/providers/ai-sdk-providers/google). Dies bestätigt die Adaptereinstellungen; es beweist nicht, dass ein bestimmtes Gemini-Modell auf dem CometAPI-Gateway aktiviert ist.
{ "provider": { "cometapi-gemini": { "npm": "@ai-sdk/google", "name": "CometAPI Gemini", "options": { "baseURL": "https://api.cometapi.com/v1beta", "apiKey": "{env:COMETAPI_KEY}" }, "models": { "YOUR_GEMINI_MODEL_ID": { "name": "CometAPI Gemini (account-selected model)" } } } }}
Ersetzen Sie YOUR_GEMINI_MODEL_ID sowohl im JSON-Schlüssel als auch im untenstehenden Befehl durch die exakte Gemini-Modell-ID, die für Ihr CometAPI-Konto freigeschaltet ist. Es ist ein Platzhalter, keine echte Modell-ID. Mergen Sie diesen Provider-Eintrag, ohne den Top-Level-provider-Schlüssel zu duplizieren, und starten Sie OpenCode aus derselben Shell, in der COMETAPI_KEY gesetzt ist.
opencode models cometapi-geminiopencode run --model cometapi-gemini/YOUR_GEMINI_MODEL_ID "Reply exactly with: GEMINI_READY"
Erwarteter Assistant-Text: GEMINI_READY. Ein gelistetes Modell bestätigt die lokale Registrierung; der Empfang der Markierung bestätigt die Textanfrage. Speichern Sie die tatsächliche Antwort und den Rückgabecode. Um Coding-Tools zu validieren, starten Sie opencode --model cometapi-gemini/YOUR_GEMINI_MODEL_ID in einem frischen, wegwerfbaren Verzeichnis und wiederholen Sie die Aufgabe greet.cjs/check.cjs unten. Alleiniger Texterfolg verifiziert nicht Streaming, Bearbeitung oder Toolaufrufe.
Wie führen Sie eine Coding-Aufgabe mit Claude, GPT und DeepSeek aus?
Verwenden Sie für jedes Modell dieselbe kleine Aufgabe: eine Greeting-Funktion erstellen, eine Assertion hinzufügen und ausführen. Behalten Sie drei frische Verzeichnisse bei, damit das zweite Modell nicht einfach Dateien des ersten wiederverwendet. So wird der Integrationsworkflow geprüft, ohne den Artikel in ein Performance-Ranking zu verwandeln.
Speichern Sie prepare-runs.cjs neben opencode.json und führen Sie es einmal aus. Es erstellt drei neue Verzeichnisse und kopiert nur die gemeinsame Konfiguration. Es stoppt, wenn ein Zielverzeichnis bereits existiert, sodass frühere Arbeiten nicht überschrieben werden.
const fs = require("node:fs");const path = require("node:path");const root = __dirname;const names = ["claude-demo", "gpt-demo", "deepseek-demo"];const config = path.join(root, "opencode.json");if (!fs.existsSync(config)) throw new Error("Missing opencode.json");for (const name of names) { if (fs.existsSync(path.join(root, name))) { throw new Error(`Directory already exists: ${name}`); }}for (const name of names) { const dir = path.join(root, name); fs.mkdirSync(dir); fs.copyFileSync(config, path.join(dir, "opencode.json"));}node prepare-runs.cjscd claude-demoopencode --model cometapi-messages/claude-sonnet-5# After exiting OpenCode:cd ..cd gpt-demoopencode --model cometapi-responses/gpt-6.1-sol# After exiting OpenCode:cd ..cd deepseek-demoopencode --model cometapi-chat/deepseek-v4.1-flash# After exiting OpenCode:cd ..
Führen Sie jeweils eine der folgenden Sessions aus, beginnend im übergeordneten Projektverzeichnis. Beenden Sie die Session, bevor Sie zum nächsten Beispiel wechseln. Reichen Sie in jeder Session dieselbe Aufgabe unten ein und überprüfen Sie die vorgeschlagenen Änderungen und Befehle. Node.js muss für den Prozess verfügbar sein, der OpenCode startet.
Bitten Sie den Agenten, eine kleine JavaScript-Funktion zu erstellen und zu verifizieren.
Create greet.cjs in this directory.Export a function named greet(name) that returns "Hello, " + name + "!".Create check.cjs using node:assert/strict.Assert that greet("Ada") equals "Hello, Ada!".Run node check.cjs and report its actual exit status.Do not modify opencode.json or unrelated files.
Erwartetes Ergebnis: Der Agent fordert die konfigurierten Genehmigungen an, erstellt beide Dateien und führt node check.cjs mit Rückgabecode 0 aus. Notieren Sie, was tatsächlich passiert ist. Prüfen Sie die Dateien und führen Sie die Prüfung selbst erneut aus; eine bloße Behauptung eines Erfolgs in Prosa genügt nicht. Wenn ein Toolaufruf abgelehnt oder fehlerhaft ist, untersuchen Sie die Routenkompatibilität getrennt von einer ausstehenden Genehmigung.
Referenzdateien und lokale Verifizierung
Die folgenden Dateien sind eine Referenzimplementierung der angeforderten Aufgabe. Sie wurden direkt für diesen Leitfaden geschrieben; sie werden nicht als modellgenerierte Artefakte präsentiert. Das Matching ihres beobachtbaren Verhaltens ist die Abnahmekondition für Ihren Agentenlauf.
function greet(name) { return "Hello, " + name + "!";}module.exports = { greet };const assert = require("node:assert/strict");const { greet } = require("./greet.cjs");assert.equal(greet("Ada"), "Hello, Ada!");node check.cjsprintf "exit=%s\n" "$?"node check.cjs"exit=$LASTEXITCODE"
Lokale Referenzprüfung: Windows, Node.js v24.19.0, 22. Oktober 2026; node check.cjs lieferte Rückgabecode 0 ohne Standardausgabe. Dies prüft nur die beiden Referenzdateien. Es verifiziert nicht die OpenCode-Installation, den CometAPI-Zugang, Bestätigungsaufforderungen oder Modell-Toolaufrufe.
| Lauf | Ausgewählter Modelleintrag | Was zu protokollieren ist |
|---|---|---|
| Claude | cometapi-messages/claude-sonnet-5 | Antwort, generierte Dateien, Genehmigungen, Test-Exit-Code |
| GPT | cometapi-responses/gpt-6.1-sol | Antwort, generierte Dateien, Genehmigungen, Test-Exit-Code |
| DeepSeek | cometapi-chat/deepseek-v4.1-flash | Antwort, generierte Dateien, Genehmigungen, Test-Exit-Code |
Führen Sie einen Ergebnisdatensatz pro Modell: ausgewählter Provider/Modell, ob eine Antwort einging, ob greet.cjs und check.cjs erstellt wurden, ob Genehmigungen erschienen und den Rückgabecode von node check.cjs. Protokollieren Sie Fehlschläge als Fehlschläge; leiten Sie keinen Erfolg aus der Referenzimplementierung ab.
Zugangsdaten schützen und Zuverlässigkeit verifizieren
Speichern Sie COMETAPI_KEY in einer Umgebungsvariablen statt in Konfigurationsdateien oder geteilten Logs. Lassen Sie Genehmigungen für Dateibearbeitung und Shell-Befehle eingeschaltet und testen Sie neue Konfigurationen in einem wegwerfbaren Projekt.
Verifizieren Sie die direkte API-Anfrage, die OpenCode-Antwort und den Datei-Bearbeitungs-Workflow getrennt. Protokollieren Sie Fehler und Testergebnisse, wiederholen Sie nur vorübergehende Ausfälle und prüfen Sie den Arbeitsbereich, bevor Sie unterbrochene Aufgaben wiederholen.
CometAPI vereinfacht den Wechsel zwischen Modellen, aber OpenCode stellt mit dieser Konfiguration kein automatisches Cross-Model-Failover bereit. Wenn ein Modell nicht verfügbar ist, wählen Sie manuell ein anderes verifiziertes Modell aus und wiederholen Sie die Abnahmeprüfung.
Wie viel kostet die Nutzung von OpenCode mit CometAPI?
Preise für CometAPI und wie ist die Abrechnung strukturiert
CometAPI bietet nutzungsabhängige Abrechnung ohne monatliche Abogebühren und berechnet nur tatsächliche API-Nutzung. Die offiziellen Modellraten sind im Allgemeinen 20 % niedriger als die Standardpreise der Anbieter, mit zusätzlichen Mengenrabatten. Entwickler können über ein Konto auf Claude, GPT, DeepSeek und andere Modelle zugreifen und zahlen basierend auf dem Tokenverbrauch des ausgewählten Modells. Prüfen Sie die aktuelle Preisliste auf der CometAPI-Preisseite (https://www.cometapi.com/pricing/?utm_source=chatgpt.com).
Für Anfragen ohne Caching oder zusätzliche Gebühren:
Kosten = (Eingabe-Tokens × Eingaberate + Ausgabe-Tokens × Ausgaberate) / 1.000.000
Beispiel: Bei hypothetischen Raten von $1/M Eingabe-Tokens und $4/M Ausgabe-Tokens kosten 20.000 Eingabe- und 2.000 Ausgabe-Tokens $0,028. Dies sind illustrative Raten, keine tatsächlichen Modellpreise.
Protokollieren Sie Tokenverbrauch, gesamte API-Kosten, Ausführungszeit und Testergebnisse für jede Aufgabe. Um Kosten zu reduzieren, begrenzen Sie unnötigen Kontext, verwenden Sie prägnante Prompts, vermeiden Sie wiederholte Fehlanfragen und wählen Sie günstigere Modelle, wenn sie die gleichen Qualitätsanforderungen erfüllen.
Strategien zur Kostenoptimierung der OpenCode-API
Um OpenCode-Kosten ohne Qualitätseinbußen zu senken, konzentrieren Sie sich auf Modellauswahl, Token-Effizienz und das Vermeiden unnötiger API-Anfragen.
- Das richtige Modell wählen: Verwenden Sie günstigere Modelle wie DeepSeek für Routineaufgaben und reservieren Sie Claude oder GPT für komplexes Debugging, Refactoring und Reasoning.
- Tokenverbrauch reduzieren: Halten Sie Prompts knapp, stellen Sie nur relevante Projektdateien bereit und vermeiden Sie wiederholtes Senden großer Repository-Kontexte.
- Prompt-Caching nutzen: Verwenden Sie unterstützte Caching-Funktionen für wiederkehrenden Kontext, z. B. Projektanweisungen und Code-Referenzen, um Eingangskosten zu senken.
- Unnötige Wiederholungen vermeiden: Beheben Sie Konfigurations- und Authentifizierungsfehler vor erneuten Versuchen und prüfen Sie vorherige Ausgaben, um doppelte Arbeit zu vermeiden.
- Tatsächliche Ausgaben überwachen: Verfolgen Sie Tokenverbrauch, API-Kosten und erfolgreiche Aufgabenerledigung über CometAPI. Vergleichen Sie Kosten pro erfolgreicher Aufgabe statt nur Tokenpreise.
In Kombination mit dem rabattierten Pay-as-you-go-Preismodell von CometAPI helfen diese Praktiken, Ausgaben zu kontrollieren und in OpenCode gleichzeitig zuverlässige Coding-Performance zu gewährleisten.
Wie können Sie die CometAPI-Konfiguration erweitern?
Um ein weiteres Modell hinzuzufügen, platzieren Sie dessen Modell-ID unter dem Provider, dessen API-Format es unterstützt, oder fügen Sie einen neuen Provider-Eintrag mit dem benötigten Adapter hinzu. Wählen Sie dann diesen Provider/dieses Modell über /models. Belassen Sie Anmeldedaten in COMETAPI_KEY und behalten Sie die bestehenden Einträge bei, damit der Wechsel weiterhin nur eine Auswahloperation ist.
Der offizielle Leitfaden deckt vier API-Formate ab (https://apidoc.cometapi.com/integrations/opencode#use-opencode-with-cometapi), einschließlich Gemini. Dieser Artikel verwendet die drei Einträge für Claude, GPT und DeepSeek. Wenn mehrere ausgewählte Modelle Chat Completions unterstützen, können sie sich eine cometapi-chat models Map teilen. Verschieben Sie eine reine Responses- oder Messages-Route nicht in diese Map, nur um die Anzahl der Einträge zu reduzieren.
Wählen Sie den Adapter basierend auf der Route, die Sie aufrufen möchten, und das Modell basierend auf der Programmieraufgabe. Ein Anbieterwechsel erfordert keinen neuen CometAPI-Schlüssel; ein Wechsel des API-Formats erfordert den passenden konfigurierten Adapter.
Wie behebt man Probleme mit CometAPI in OpenCode?
Folgen Sie der ersten fehlschlagenden Stufe: HTTP-Anfrage → OpenCode-Provider → Datei-Tools. Wenn HTTP fehlschlägt, prüfen Sie Anmeldedaten, Modellzugang und Endpunktdetails. Wenn HTTP funktioniert, aber OpenCode fehlschlägt, prüfen Sie Konfiguration und Startumgebung. Wenn beides (Textprüfungen) funktioniert, aber Dateiaktionen scheitern, prüfen Sie Berechtigungen und Tool-Call-Kompatibilität.
| Symptom | Erste Prüfung | Nächster Schritt | Diagnosebefehl / Nachweis |
|---|---|---|---|
| 401-Antwort | Schlüsselwert und Authorization-Header | Setzen Sie den Schlüssel im aktuellen Terminal; prüfen Sie auf versehentliche Leerzeichen. | Variable prüfen, ohne den Schlüssel auszugeben; HTTP-Status und geschwärzten Fehler aufbewahren. |
| 403 oder Kontobeschränkung | Fehlerkörper und Kontoberechtigungen | Modellzugang und Kontostatus in CometAPI bestätigen. | Geschwärzte Fehlermeldung speichern und Konto-Zugriff bestätigen. |
| 404-Antwort | Host, Endpunktpfad und Modell-ID | Anfrage mit der gewählten Modell-API-Dokumentation vergleichen. | response.json mit angefragtem Modell und Endpunkt vergleichen. |
| Modell fehlt in OpenCode | Projektverzeichnis und Providerkonfiguration | Gültiges JSON und übereinstimmende Provider-/Modellnamen prüfen; nach Bearbeitung neu starten. | opencode models cometapi-chat, opencode models cometapi-messages und opencode models cometapi-responses ausführen; opencode --version protokollieren. |
| Text funktioniert, Tools nicht | Tool-Call-Antwort und Adapterkompatibilität | Routenunterstützung verifizieren; abgelehnten Tool-Call von Genehmigungsaufforderung unterscheiden. | Kurztextanfrage mit fehlgeschlagener Toolaktion vergleichen; Fehler aufbewahren. |
| Befehl wartet auf Genehmigung | Interaktive Session und Berechtigungseinstellungen | Beabsichtigte Aktion prüfen und genehmigen; eine ausstehende Anfrage nicht als API-Ausfall werten. | Interaktive Session verwenden; angeforderte Aktion und Genehmigungsergebnis protokollieren. |
| 429 oder temporärer Serverfehler | Fehlerinformationen und Nutzungslimits | Anfragelast reduzieren; ggf. Retry-Vorgaben folgen statt ununterbrochen erneut zu versuchen. | HTTP-Status und Retry-Hinweise aufbewahren; Parallelität reduzieren. |
Wenn Sie ein Problem teilen, geben Sie OpenCode-Version, Betriebssystem, Modell-ID, Endpunktpfad und geschwärzten Fehlertest an. Schließen Sie API-Schlüssel und private Repository-Inhalte aus. Halten Sie die kleinste Anfrage bereit, die den Fehler reproduziert, damit Konfigurations- und Toolfehler getrennt untersucht werden können.
FAQ
Warum verliert OpenCode meinen CometAPI-Schlüssel in einem neuen Terminal?
Die oben gezeigten export- und PowerShell-Befehle setzen eine Umgebungsvariable für die aktuelle Session und deren Kindprozesse. Ein separat geöffnetes Terminal oder ein bereits laufender Editor erbt sie ggf. nicht. Setzen Sie den Schlüssel in der Umgebung, die OpenCode startet, und starten Sie diesen Prozess neu. Für persistente Einrichtung nutzen Sie das Credential-Management Ihres Systems statt das Geheimnis in eine Repository-Datei einzubetten.
Lädt OpenCode COMETAPI_KEY automatisch aus einer .env-Datei?
Der Ausdruck {env:COMETAPI_KEY} liest die Prozessumgebung. Das bloße Anlegen einer .env-Datei stellt nicht sicher, dass die Variable geladen wurde. Verwenden Sie Ihre Shell oder einen explizit konfigurierten Umgebungs-Loader, bevor Sie OpenCode starten. Diagnostizieren Sie einen leeren Wert im startenden Prozess, statt vom Ausfall des Providers auszugehen.
Kann eine globale OpenCode-Konfiguration dieses Projektsetup verändern?
OpenCode mergen Konfigurationen, statt jede vorherige Datei zu ersetzen. Die Projektdatei überschreibt überlappende Felder der globalen Datei, während nicht verwandte globale Einstellungen erhalten bleiben. Eine benutzerdefinierte OPENCODE_CONFIG-Datei wird dazwischen geladen. Wenn sich das Verhalten zwischen Repositories unterscheidet, vergleichen Sie diese Quellen sowie verwaltete oder Inline-Einstellungen, statt anzunehmen, die lokale Datei sei die einzige Eingabe.
Aktiviert das Aktualisieren der OpenCode-Modellliste den CometAPI-Zugang?
Nein. Die Option zur Modellaktualisierung aktualisiert den models.dev-Cache (https://opencode.ai/docs/cli/#models); sie gewährt keinen Kontozugang und beweist nicht, dass ein Endpunkt eine Modell-ID akzeptiert. Ein manuell konfigurierter Eintrag kann sichtbar sein, bevor eine Anfrage erfolgreich war. Verwenden Sie eine tatsächliche Anfrage, um die Route zu prüfen, und konsultieren Sie die CometAPI-Kontoeinstellungen für Zugriffsbeschränkungen.
Warum funktioniert curl, während OpenCode CometAPI nicht aufrufen kann?
Die beiden Prozesse können unterschiedliche Anmeldedaten laden, unterschiedliche Modell-IDs verwenden oder unterschiedliche Anfrageformen senden. Führen Sie zuerst den kurzen Textprompt aus demselben Terminal wie die erfolgreiche HTTP-Anfrage erneut aus. Vergleichen Sie dann Provider-Basis-URL, Adapter und ausgewähltes Modell. Wenn einfacher Text funktioniert, aber eine Agentenaufgabe scheitert, bewahren Sie den Tool-bezogenen Fehler separat auf; alleinige HTTP-Konnektivität belegt keine Toolkompatibilität.
Fazit
Sie haben nun eine opencode.json mit Beispielen für Claude, GPT und DeepSeek, eine gemeinsame CometAPI-Anmeldeinformation und Befehle zum Wechseln des aktiven Modells. Verwenden Sie die kurzen Textanfragen, um den Zugang zu prüfen, und führen Sie dann dieselbe Datei-Erstellungsaufgabe in separaten Verzeichnissen aus, um den Coding-Workflow zu verifizieren. Bewahren Sie die beobachteten Ergebnisse zusammen mit Ihren Umgebungsdetails auf, bevor Sie das Setup auf ein größeres Repository anwenden.
