DeepSeek Harness
DeepSeek Harness (dsh) ist das quelloffene Agent-Harness von DeepSeek. Es betreibt eine lokale Web-Oberfläche für Agenten-Sitzungen, Werkzeugausführung und Repository-Arbeit und kann ausserdem über CLI oder Python-SDK eingebunden werden.
DeepSeek Harness ist provider-neutral: Benutzerdefinierte OpenAI-kompatible Endpunkte werden neben der DeepSeek-API unterstützt. In Kombination mit unserer in der Schweiz betriebenen Everyware AI API werden Ihre Prompts und Quellcodes auf unserer Schweizer GPU-Infrastruktur verarbeitet.
Hauptmerkmale
- Lokale Web-Oberfläche: Agenten-Sitzungen, Dateiänderungen und Werkzeugausgaben im Browser.
- Benutzerdefinierte Provider: OpenAI-kompatible Endpunkte in einer Cordis-Patch-Datei registrieren.
- Modellauswahl: Konfigurierte Modelle erscheinen in der Web-Oberfläche und werden zum Default für neue Sitzungen.
- Reasoning-Steuerung: Effort-Stufen pro Modell deklarieren; die Oberfläche zeigt ein Effort-Menü.
- Volle Datensouveränität: Modellanfragen laufen über unsere Schweizer Everyware AI API.
Developer Preview
DeepSeek Harness wird als Developer Preview veröffentlicht. Konfigurationsschlüssel und Verhalten können sich zwischen Releases ändern — prüfen Sie die aktuelle Dokumentation, bevor Sie es breit ausrollen.
Installation
DeepSeek Harness benötigt Node.js. Starten Sie die Web-Oberfläche direkt mit npx:
npx @deepseek-ai/dsh web
Die Web-Oberfläche öffnet sich unter http://127.0.0.1:3080. Nützliche Flags: --port 8080, --host, --no-open.
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
Konfiguration
1. API-Key speichern
Exportieren Sie Ihren virtuellen API-Key als Umgebungsvariable, bevor Sie das Harness starten:
export EW_AI_API_KEY="sk-bf-..."
Alternativ können Sie den Key in der Web-Oberfläche unter Settings → Models speichern; er wird in $DSH_HOME/.credentials.yaml abgelegt.
2. Gateway registrieren
Erstellen oder bearbeiten Sie ~/.dsh/profiles/web/cordis.patch.yml:
- id: llm-pi-ai
config:
providers:
ew:
displayName: Everyware AI API
apiKeyEnv: EW_AI_API_KEY
api: openai-completions
baseURL: https://ai.ewcs.ch/v1
compat:
supportsDeveloperRole: false
maxTokensField: max_tokens
models:
- id: ew/flagship
name: Everyware Flagship
contextWindow: 1048576
maxTokens: 131072
input: [text, image]
reasoningEfforts:
low: low
high: high
- id: ew/balanced
name: Everyware Balanced
contextWindow: 1000000
maxTokens: 131072
input: [text, image]
reasoningEfforts:
low: low
high: high
- id: ew/fast
name: Everyware Fast
contextWindow: 262144
maxTokens: 131072
input: [text, image]
reasoningEfforts:
low: low
high: high
apiKeyEnv ist der Name der Umgebungsvariable, nicht der Key selbst. Ein literaler Key wird nicht in die YAML-Datei geschrieben.
Der compat-Block ist der übliche erste Fix für Nicht-OpenAI-Gateways: supportsDeveloperRole: false vermeidet die developer-Rolle, und maxTokensField: max_tokens vermeidet max_completion_tokens.
Konfiguration wird ersetzt, nicht zusammengeführt
Ein Cordis-Override ersetzt den vollständigen Konfigurationseintrag. Wenn Sie einen bestehenden llm-pi-ai-Block bearbeiten, behalten Sie alle anderen Provider und Felder in der Datei bei.
3. Starten und Modell auswählen
npx @deepseek-ai/dsh web
Wählen Sie das Modell in der Web-Oberfläche über die Modellauswahl. Die Auswahl wird auch zum Default für neue Sitzungen. Wenn der /v1/models-Endpunkt des Gateways eine Standardliste zurückgibt, kann Fetch available models die Liste automatisch füllen; andernfalls tragen Sie die Modell-IDs manuell ein.
Typische Workflows
- Interaktive Web-Oberfläche:
npx @deepseek-ai/dsh web - Anderen Port verwenden:
npx @deepseek-ai/dsh web --port 8080 - Einmalige Ausführung:
npx @deepseek-ai/dsh --profile headless "Erkläre die Architektur dieses Repositories." - Optional: Terminal-Oberfläche (externes Plugin):
npx @deepseek-ai/dsh plugin --profile tui add github:deepseek-harness/turtle-ui npx @deepseek-ai/dsh --profile tui
Telemetrie und Sitzungsprotokolle
DeepSeek Harness lädt Sitzungsprotokolle standardmässig zu DeepSeek hoch — auch bei Sitzungen, die über ein konfiguriertes Gateway laufen. Für Schweizer Datensouveränität deaktivieren Sie Settings → General → Upload Session Log (oder setzen Sie Telemetrie auf enabled: false) und setzen Sie DSH_TELEMETRY_MODE=DISABLED für OpenTelemetry-Uploads.