Zum Inhalt springen
Kostenlos registrieren
Coding Agents einrichten

DeepSeek Harness einrichten: API Key, Base URL und Modelle

Verbinde DeepSeek Harness über das headless-Profil mit BetterToken. Konfiguriere API Key, Base URL und Protokoll und prüfe den Dateizugriff.

Verbinde DeepSeek Harness (dsh) über einen eigenen Provider im Profil headless mit BetterToken. In macOS-Tests verarbeitete @deepseek-ai/dsh@0.2.1-rc.2 Textanfragen und Tool-Aufrufe zum Lesen von Dateien bei jeder der folgenden Kombinationen in allen 3 Versuchen: Chat Completions mit einem GPT-Modell, Responses mit einem GPT-Modell, Anthropic Messages mit einem Claude-Modell und Anthropic Messages mit einem GPT-Modell.

Wichtige Einstellungen

FeldWert
API KeyBetterToken API Key aus der Umgebungsvariable, deren Name in apiKeyEnv steht
Base URLhttps://bettertoken.ai/v1 — Chat Completions / Responses
Base URL für Anthropic Messageshttps://bettertoken.ai, ohne /v1
ModellYOUR_MODEL_ID
Konfigurationsdatei$DSH_HOME/profiles/headless/cordis.patch.yml (DSH_HOME ist standardmäßig ~/.dsh)

Voraussetzungen

Installation

Starte die hier getestete Version ohne globale Installation:

Terminal-Fenster
npx @deepseek-ai/dsh@0.2.1-rc.2 --help

Zum Testzeitpunkt verwies das npm-Tag latest auf 0.2.1-rc.2, einen Release Candidate. Andere Tags wie next wurden nicht getestet.

Manuelle Einrichtung

Exportiere den API Key und ersetze dabei YOUR_API_KEY:

Terminal-Fenster
export BETTERTOKEN_API_KEY="YOUR_API_KEY"

Erstelle ~/.dsh/profiles/headless/cordis.patch.yml. Die Datei enthält eine Liste von Cordis-Patches. Ersetze beide Werte YOUR_MODEL_ID durch dieselbe exakte Model ID:

Chat Completions

- id: llm-pi-ai
config:
providers:
bettertoken:
api: openai-completions
baseURL: https://bettertoken.ai/v1
apiKeyEnv: BETTERTOKEN_API_KEY
retryPolicy:
mode: normal
maxRetries: 2
models:
- id: YOUR_MODEL_ID
- id: agent-default-model
config:
provider: bettertoken
model: YOUR_MODEL_ID

Responses

- id: llm-pi-ai
config:
providers:
bettertoken:
api: openai-responses
baseURL: https://bettertoken.ai/v1
apiKeyEnv: BETTERTOKEN_API_KEY
retryPolicy:
mode: normal
maxRetries: 2
models:
- id: YOUR_MODEL_ID
- id: agent-default-model
config:
provider: bettertoken
model: YOUR_MODEL_ID

Anthropic Messages

- id: llm-pi-ai
config:
providers:
bettertoken:
api: anthropic-messages
baseURL: https://bettertoken.ai
apiKeyEnv: BETTERTOKEN_API_KEY
retryPolicy:
mode: normal
maxRetries: 2
models:
- id: YOUR_MODEL_ID
- id: agent-default-model
config:
provider: bettertoken
model: YOUR_MODEL_ID

apiKeyEnv enthält den Namen einer Umgebungsvariable, weder den API Key selbst noch einen Ausdruck wie ${...}. Ein eigener Provider benötigt api, baseURL und mindestens einen Eintrag unter models; pro Eintrag ist nur die Modell-id erforderlich. Wenn llm-pi-ai bereits konfiguriert ist, kopiere die Provider, die du behalten möchtest, in dasselbe config, da ein neuer Eintrag den vorhandenen ersetzt.

Das Feld api akzeptiert für eigene Provider nur openai-completions, openai-responses und anthropic-messages. Die Anthropic Base URL ist die Website-Wurzel, da der Client /v1/messages selbst anhängt.

Um die Syntax ohne Modellanfrage zu prüfen, führe npx @deepseek-ai/dsh@0.2.1-rc.2 --profile headless --dump-config aus.

Verbindung prüfen

Führe im selben Terminal Folgendes aus:

Terminal-Fenster
npx @deepseek-ai/dsh@0.2.1-rc.2 --profile headless --json "Reply with only: OK"

--json gibt pro Zeile ein JSON-Ereignis aus. Prüfe, ob der Exit-Code 0 lautet, turn_end.reason ein reguläres Ende anzeigt und das Feld text im letzten final-Ereignis gleich OK ist. Auch ein fehlgeschlagener Lauf kann ein leeres final-Ereignis ausgeben; das Ereignis allein belegt keinen Erfolg.

Um den Dateizugriff zu prüfen, erstelle sample.txt in einem leeren Verzeichnis und führe dort denselben Befehl mit dem Prompt Read sample.txt using a tool. Reply with only its exact contents. aus. Prüfe, ob die Ausgabe einen tool_call, einen tool_result mit dem Dateiinhalt und einen übereinstimmenden final-Text enthält.

Modell wechseln

Ändere beide Werte YOUR_MODEL_ID in eine andere exakte Model ID. Wenn das neue Modell ein anderes Protokoll verwendet, etwa ein Claude-Modell über Anthropic Messages, ändere api und baseURL zusammen. Um die vom Gateway gelieferten Modelle aufzulisten, nutze Fetch available models für einen eigenen Provider in der Weboberfläche von DeepSeek Harness. Im Test lieferte derselbe Dienst zur Modellerkennung die BetterToken-Modellliste für alle drei Protokolle.

Häufige Fehler

SymptomWas du prüfen solltest
MISSING_CREDENTIAL, Exit-Code 1 und keine Anfrage im DashboardDer Prozess hat die in apiKeyEnv angegebene Variable nicht erhalten. Exportiere sie im Terminal, aus dem du dsh startest, und prüfe die Schreibweise. Diese Prüfung erfolgt lokal.
Das Profil headless ignoriert einen in der Weboberfläche gespeicherten KeyDas Profil headless liest Zugangsdaten ausschließlich in dieser Reihenfolge: aus der Startumgebung, aus .env im aktuellen Verzeichnis und aus .env unter DSH_HOME.
404 mit einem Anfragepfad, der auf /v1/v1/messages endetDie Anthropic-baseURL endet auf /v1. Verwende https://bettertoken.ai.
Modell nicht gefundenKopiere die Model ID erneut aus der model plaza und verwende sie an beiden Stellen.
Viele Wiederholungen nach einem FehlerOhne retryPolicy versucht der Adapter standardmäßig 5 Wiederholungen. Setze maxRetries ausdrücklich wie in den Beispielen.
Fehler wegen der Node.js-VersionVerwende Node.js 24.9 oder neuer.

Weitere Informationen

Technische Details

Im Test lauteten die tatsächlichen Anfragepfade für die drei api-Werte /v1/chat/completions, /v1/responses und /v1/messages. dsh sendet über den konfigurierten Provider und das Modell außerdem automatisch eine Anfrage für den Sitzungstitel. Eine Aufgabe kann daher mehrere Anfragen auslösen. Der Client ergänzte standardmäßige Ausgabelimits, etwa 32768 Tokens für die Hauptanfrage; diese waren nicht in der Konfiguration gesetzt.

Die Felder input und contextWindow in einem Modelleintrag sind Angaben für den Client. Sie fragen die Limits des Gateways weder ab noch bestätigen sie diese. Bildeingaben wurden nicht getestet. Die Tests fanden ausschließlich unter macOS statt.