DeepSeek Harness Creator Mode: Installation, Drittanbieter-API anbinden und erstes Plugin im Test

Am 2. November hat der offizielle DeepSeek-Harness-Account Creator Mode vorgestellt: Sie beschreiben ein Tool in einem Satz, und der Agent schreibt das Plugin, installiert es in Harness und prüft, ob es geladen wurde. Dieser Leitfaden erklärt, was Creator Mode ist, wie Sie Harness mit npx starten, wie Sie eine OpenAI-kompatible Drittanbieter-API (aicodewith Base URL + Key) für Claude-, GPT- und DeepSeek-Modelle anbinden, und baut mit Creator Mode ein todo_scan-Plugin – mit echten Ausgaben, häufigen Fehlern und den Entsprechungen in Claude Code / Codex.

10 分钟阅读
DeepSeek Harness Creator Mode: Installation, Drittanbieter-API anbinden und erstes Plugin im Test

Kurz gesagt: Creator Mode ist der Modus von DeepSeek Harness, mit dem Sie Harness selbst erweitern. Sie beschreiben das gewünschte Tool in einem Satz, und der Agent schreibt ein Plugin, installiert es im aktuellen Profil und prüft, ob es geladen wurde.

  • Laut dem offiziellen Beitrag von @DeepSeekHarness (2. November) macht Creator Mode aus Ideen nutzbare Plugins; die Demo zeigt einen Design-Arbeitsbereich, ein Sandbox-Spiel und einen 3D-LLM-Visualisierer.
  • Harness startet mit npx @deepseek-ai/dsh web. Wir haben Version 0.2.1-rc.5 am Nachmittag des 3. November (Pekinger Zeit) unter Linux getestet; die Installation der Abhängigkeiten dauerte etwa 37 Sekunden.
  • Es unterstützt eine „Custom model API“: Base URL, Protokoll und Key eintragen, und schon spricht es mit jeder OpenAI-kompatiblen Drittanbieter-API. Mit aicodewith haben claude-sonnet-5-5, gpt-6.1-sol und deepseek-flash Tools korrekt aufgerufen.
  • Ein todo_scan-Plugin mit Creator Mode war nach 1 min 33 s fertig: 6 Dateien geschrieben und das Plugin installiert. Aufrufe aus einer neuen Sitzung und im Headless-Modus lieferten korrekte Ausgaben.

API Key erstellen und Claude und GPT in DeepSeek Harness, Claude Code, Codex und Cursor nutzen →

Was DeepSeek Harness und Creator Mode sind

DeepSeek Harness (Befehl dsh) ist ein Open-Source-Agent-Harness von DeepSeek, auf GitHub unter MIT-Lizenz veröffentlicht. Das Motto lautet „Everything is a Plugin“: Tools, Skills, UI-Panels und sogar Modi sind Plugins, die auf dem Cordis-Framework zusammengesetzt werden. Es ist eine Developer Preview, und das README kündigt inkompatible Änderungen an.

Beim Anlegen einer neuen Sitzung in der Web-UI stehen vier Modi zur Wahl (Texte aus der UI in unserem Test):

ModusBeschreibung in der UI
Standard modeArbeit mit Code, Dateien und Informationen; passt für die meisten Aufgaben
PTC modeAlles aus Standard, besser für Tool-Aufrufe im Stapel mit anschließendem Ordnen der Ergebnisse
Minimal modeNur Terminal und Bildlesen; nützlich, um das Grundverhalten zu testen
Creator modeDSH per Gespräch anpassen: den Agenten Plugins schreiben lassen, die Funktionen oder UI hinzufügen, oder Tools und Prompts zu einem eigenen Modus kombinieren

Laut dem offiziellen Leitfaden zu dynamischen Plugins und dem Agent-Preset-README lautet die interne ID von Creator Mode cordis. Gegenüber Standard kommen drei Dinge hinzu:

  • Laufzeit-Inspektion: zwei schreibgeschützte Tools, cordis_inspect_list und cordis_inspect_query, die die echten Services, Tool-Schemas und Konfigurations-Schemas zeigen, damit der Agent APIs nicht aus dem Quellcode erraten muss.
  • Plugin-Verwaltung: das Tool plugin_manager (auch in Standard) installiert, aktiviert, deaktiviert und entfernt Bundles. Die Plugin-Konfiguration gehört zum aktuellen Profil, gilt für alle seine Sitzungen und bleibt nach einem Neustart erhalten.
  • Authoring-Skills: Skills wie cordis-plugin-development werden automatisch eingebunden, mit Schritten und Vorlagen für Plugins, Bundles und Modi.

Es nutzt das Modell, das Sie im Modellwähler ausgewählt haben. Neben dem Wähler für neue Sitzungen hat auch das Menü Add plugin auf der Plugins-Seite den Eintrag „Let the agent create a plugin“, der denselben Creator-Ablauf öffnet.

Einige Stimmen von Dritten:

  • Laut @rohanpaul_ai gibt es die Funktion seit August; am 2. November hat DeepSeek ein Demo-Video und die Prompts hinter den 7 Beispielen veröffentlicht.
  • Laut @testingcatalog erstellt Creator Mode wiederverwendbare Plugins für Spiele bis hin zu beruflichen Aufgaben.
  • Laut Nutzer @superalesha laufen bei ihm Kimi, GLM, MiniMax, DeepSeek und weitere offene Modelle in Harness, und er hat „sogar GPT-Modelle über ein Plugin hinzugefügt“.

Zum anderen Harness-basierten Projekt von DeepSeek, Super-agent, siehe unseren Test von DeepSeek Super-agent und dem dsh-superagent-Prototyp; das wiederholen wir hier nicht.

DeepSeek Harness installieren

Installieren Sie Node.js (wir nutzten 22.23) und führen Sie aus:

bash
# Node.js 22 or newer
npx @deepseek-ai/dsh --version
# 0.2.1-rc.5

npx @deepseek-ai/dsh web
# dsh web: http://127.0.0.1:3080/?token=...

Lokal öffnet sich der Browser automatisch; auf einem Server oder per SSH fügen Sie --no-open hinzu, dann wird nur die Adresse ausgegeben. Die Adresse enthält ein token – öffnen Sie genau diesen Link, denn http://127.0.0.1:3080/ allein liefert 401.

Für eine einzelne Aufgabe im Terminal ohne Web-UI gibt es den Headless-Modus: Die Antwort geht nach stdout, Diagnosen nach stderr – praktisch für Skripte und CI. Die Optionen stehen in der offiziellen CLI-Hilfe.

Der offizielle Sicherheitshinweis warnt, dass Harness vom Modell erzeugten Code und Befehle ausführt, Drittanbieter-Plugins lädt und keinem Sicherheitsaudit unterzogen wurde. Betreiben Sie es in einer Wegwerf-VM, einem Container oder einem eigenen Verzeichnis, nicht neben wichtigen Projekten und Zugangsdaten.

DeepSeek Harness an eine Drittanbieter-API anbinden (aicodewith)

Modelle konfigurieren Sie unter Settings → Models. Neben der DeepSeek-Karte und den eingebauten Drittanbietern gibt es Custom model API für ein Relay, ein Firmen-Gateway oder einen selbst gehosteten Server. Laut dem offiziellen Leitfaden zur Modellkonfiguration stehen drei Protokolle zur Wahl: OpenAI Chat Completions, OpenAI Responses und Anthropic Messages.

API Key erstellen und DeepSeek Harness anbinden →

Weg 1: die Models-Seite ausfüllen

text
Settings → Models → Add model provider → Custom model API
  Provider ID   aicodewith
  Base URL      https://api.aicodewith.ai/v1
  API protocol  OpenAI Chat Completions
  API key       (your aicodewith key)
  Models        claude-sonnet-5-5, gpt-6.1-sol, deepseek-flash

Nach dem Speichern erscheinen die drei Modelle im Modellwähler. Ein auf der Seite gespeicherter Key landet in ~/.dsh/.credentials.yaml; die Einstellungen behalten nur einen Verweis.

Weg 2: die Konfigurationsdatei bearbeiten

Die Seite schreibt die cordis.patch.yml des Profils. Mit dsh web heißt das Profil web, im Headless-Modus headless. Genau diese Datei haben wir getestet (der Key kommt aus einer Umgebungsvariable und steht nicht in der Datei):

yaml
# ~/.dsh/profiles/web/cordis.patch.yml
- id: llm-pi-ai
  config:
    providers:
      aicodewith:
        displayName: aicodewith
        apiKeyEnv: AICODEWITH_API_KEY
        api: openai-completions
        baseURL: https://api.aicodewith.ai/v1
        models:
          - id: claude-sonnet-5-5
          - id: gpt-6.1-sol
          - id: deepseek-flash
- id: agent-default-model
  config:
    provider: aicodewith
    model: claude-sonnet-5-5

Key vor dem Start exportieren:

bash
export AICODEWITH_API_KEY="IHR_API_KEY"
npx @deepseek-ai/dsh web

Windows PowerShell:

powershell
$env:AICODEWITH_API_KEY = "IHR_API_KEY"
npx @deepseek-ai/dsh web

Änderungen gelten ab der nächsten Anfrage, ohne Neustart. Senden Sie eine Nachricht zur Kontrolle:

bash
npx @deepseek-ai/dsh headless "Reply with exactly: harness ok"
# harness ok

Unsere Ergebnisse (3. November, Pekinger Zeit):

TestModellErgebnisDauer
Einzeilige Antwortclaude-sonnet-5-5harness ok zurück4,5 s
Einzeilige Antwortgpt-6.1-solharness ok zurück3,7 s
hello.py schreiben und ausführen (write- + bash-Aufruf)claude-sonnet-5-5Ausgabe 50508,2 s
Dasselbe mit Anthropic-Messages-Protokoll und Base URL https://api.aicodewith.aiclaude-sonnet-5-5harness ok zurück3,0 s

Für DeepSeeks eigenes Modell fügen Sie deepseek-flash zur Liste hinzu; siehe was sich in DeepSeek V4.1 Flash 1017 geändert hat und wie Sie es in Claude Code / Codex nutzen.

Erstes Plugin mit Creator Mode: todo_scan

Ziel: ein Tool todo_scan, das Zeilen mit TODO oder FIXME findet und Datei:Zeile: Text zurückgibt, höchstens 50 Einträge.

Öffnen Sie in der Web-UI den Moduswähler, wählen Sie Creator mode und senden Sie diese Anfrage (wir nutzten claude-sonnet-5-5 mit der Standardberechtigung Workspace Write):

text
Write a DSH plugin that adds a tool named todo_scan. It takes an optional path
(default: the working directory), recursively scans text files for lines
containing TODO or FIXME (skip node_modules and .git), and returns a list of
file:line: text entries, at most 50. Install it into this profile and verify
it loaded.

Einmal fragte es nach einer Bestätigung, weil die Plugin-Installation eine Aktion mit hohem Vertrauen ist; wir klickten Allow once. Die abschließende Antwort (Auszug):

text
Completed in 1m 33s

The todo_scan plugin is installed and loaded, and a test call returned correct results.
Install: @local/todo-scan installed with application: applied and no warnings.
Tool registration: todo_scan appears in the live tool list with the schema from my plugin.
...
It skips symlinks, binary files and files over 1 MiB.
If more than 50 matches exist, it returns 50 and marks the result as truncated.

Edited 6 files  +147 -0

Das erzeugte Plugin im Arbeitsverzeichnis:

text
todo-scan/
├── package.json        # "dsh": { "bundle": { "patch": "./cordis.patch.yml" } }
├── cordis.patch.yml    # inserts the plugin into the profile
├── index.js            # 127 lines: registers the todo_scan tool
├── icon.svg
└── locale/
    ├── en.json
    └── zh.json

Die zwei wichtigen Dateien sind cordis.patch.yml und index.js. Die erste sagt Harness, dass das Plugin ins Profil eingefügt wird:

yaml
# todo-scan/cordis.patch.yml
- insert:
    - id: todo-scan
      name: '@local/todo-scan'
      config: {}

Die zweite registriert das Tool, so wie im offiziellen Tutorial zum ersten Plugin: name, inject und apply exportieren und in apply ctx.tools.register aufrufen:

js
// todo-scan/index.js (abridged)
export const name = 'todo-scan'
export const inject = ['tools', 'workingDirectory']

export function apply(ctx) {
  return ctx.effect(() =>
    ctx.tools.register({
      name: 'todo_scan',
      description: 'Recursively scan text files for lines containing TODO or FIXME ...',
      parameters: {
        type: 'object',
        properties: { path: { type: 'string', description: 'File or directory to scan ...' } },
        additionalProperties: false,
      },
      output: { schema: { /* entries: string[], truncated: boolean */ }, render: (_a, v) => [/* text */] },
      async execute(args, exec) {
        const cwd = await ctx.workingDirectory.ensure(exec.agent, exec.signal)
        return scan(args.path ? resolve(cwd, args.path) : cwd, exec.signal)
      },
    }),
  )
}

Nach der Installation hat die package.json des Profils eine link:-Abhängigkeit und @local/todo-scan in bundles; das Plugin bleibt also nach einem Neustart erhalten.

Plugin prüfen

In einer neuen Standard-Sitzung baten wir darum, todo_scan aufzurufen: 7 Sekunden. Wir hatten eine Datei mit 60 TODO-Zeilen angelegt, und das Ergebnis stoppte genau bei 50:

text
many.txt:1: TODO item 0 many.txt:2: TODO item 1 ... many.txt:50: TODO item 49 (truncated at 50 entries)

Danach prüften wir das Überspringen von node_modules und .git: TODO-Zeilen auch in demo/node_modules und demo/.git, Plugin im Headless-Profil installiert, Aufruf über die Kommandozeile:

bash
npx @deepseek-ai/dsh plugin --profile headless add link:/absolute/path/to/todo-scan
# dependencies:
# + @local/todo-scan <- .../todo-scan
# Done in 23ms using pnpm v12.15.0

npx @deepseek-ai/dsh headless --json "Call the todo_scan tool once with path demo and paste its raw output verbatim, nothing else."
text
{"type":"tool_call","tool":"todo_scan","input":{"path":"demo"}}
{"type":"tool_result","status":"completed","result":"src/app.py:2: # TODO: handle empty input\nsrc/app.py:4: # FIXME: off by one"}
{"type":"final","text":"src/app.py:2: # TODO: handle empty input\nsrc/app.py:4: # FIXME: off by one"}

Nur die zwei Zeilen aus src/app.py kamen zurück; die in node_modules und .git wurden übersprungen. Dasselbe Plugin mit drei Modellen:

Modelltodo_scan aufgerufenAusgabeDauer
claude-sonnet-5-5JaZwei Zeilen, korrekt5,5 s
gpt-6.1-solJaZwei Zeilen, korrekt6,9 s
deepseek-flashJaZwei Zeilen, korrekt7,6 s

Häufige Fehler

Falscher Key:

{ERR401}

Prüfen Sie, ob AICODEWITH_API_KEY den vollständigen Key ohne zusätzliche Leerzeichen enthält.

Umgebungsvariable nicht exportiert:

text
dsh: MISSING_CREDENTIAL: llm-pi-ai: no credential for provider route "aicodewith"; its profile
resolves AICODEWITH_API_KEY, which is not set — store AICODEWITH_API_KEY through the credentials
service (the web Models page writes it) or export it ...

Die in apiKeyEnv genannte Variable muss im Terminal exportiert sein, das dsh startet, oder der Key wird einmal auf der Models-Seite gespeichert.

Standardmodell fehlt in der Liste:

text
dsh: UNKNOWN_MODEL: pi-ai provider "aicodewith" has no configured model "claude-sonnet-9"

Das model in agent-default-model muss in der models-Liste dieses Anbieters stehen.

Modell-ID, die das Gateway nicht kennt:

{ERR400}

Nehmen Sie Modell-IDs aus der aicodewith-Modellliste oder klicken Sie auf der Models-Seite auf Fetch available models.

SymptomUrsacheLösung
http://127.0.0.1:3080/ zeigt 401Start-Token fehltDen vollständigen Link aus dem Terminal öffnen
AUTH: 401Key falsch oder gelöschtGültigen Key verwenden
MISSING_CREDENTIALVariable nicht exportiertExportieren oder Key auf der Models-Seite speichern
UNKNOWN_MODELStandardmodell nicht in der models-ListeModell zur Liste hinzufügen
INVALID_REQUEST: 400 Modell existiert nichtGateway kennt die ID nichtID anhand der Modellliste korrigieren
Plugin installiert, Tool fehltPlugin nicht oder fehlerhaft geladenCreator Mode installierte Bundles und Warnungen auflisten lassen

Dasselbe in Claude Code / Codex / Cursor

Ein Harness-Plugin gibt dem Agenten ein neues Tool. In anderen Clients kommt dem am nächsten eine Skill (Schritte und Skripte in einem Ordner) oder ein MCP-Server:

ClientOrt der Skills
Claude Code~/.claude/skills/<name>/SKILL.md
Codex~/.agents/skills/<name>/SKILL.md
Cursor~/.cursor/skills/ oder ~/.agents/skills/

Wie man sie schreibt und auslöst, steht in Agent Skills in Claude Code und Codex nutzen.

Diese Clients können ebenfalls aicodewith nutzen. Claude Code:

bash
export ANTHROPIC_BASE_URL="https://api.aicodewith.ai"
export ANTHROPIC_AUTH_TOKEN="IHR_API_KEY"
claude

Codex (~/.codex/config.toml):

toml
# ~/.codex/config.toml
model_provider = "aicodewith"
model = "gpt-6.1-sol"

[model_providers.aicodewith]
name = "aicodewith"
base_url = "https://api.aicodewith.ai/chatgpt/v1"
wire_api = "responses"
experimental_bearer_token = "IHR_API_KEY"

Mehr dazu: Claude Code an eine Drittanbieter-API anbinden.

FAQ

Ist Creator Mode ein neues Modell?

Nein. Es ist ein Modus, der das im Wähler gewählte Modell nutzt, ergänzt um Tools und Skills für Laufzeit-Inspektion, Plugin-Verwaltung und Plugin-Authoring. Wir nutzten claude-sonnet-5-5.

Brauche ich die API von DeepSeek?

Nein. Harness unterstützt eingebaute Drittanbieter und eigene OpenAI-kompatible Endpunkte. Mit aicodewith haben wir Claude-, GPT- und DeepSeek-Modelle genutzt, auch zum Schreiben eines Plugins im Creator Mode.

Sind von Creator Mode installierte Plugins sicher?

Laut dem offiziellen Plugin-Manager-README läuft der Code installierter Plugins im Host-Prozess von Harness, außerhalb der Workspace-Sandbox. Deshalb braucht jede plugin_manager-Aktion vollen Zugriff oder eine Einzelfreigabe; in unserem Test kam eine Bestätigungsabfrage. Testen Sie Plugins zuerst in einem Wegwerf-Profil oder -Verzeichnis und lesen Sie den Code, bevor Sie sie in Ihrer Hauptumgebung installieren.

Geht Creator Mode ohne Browser?

Wir haben Creator mode in der Web-UI gewählt. Den Headless-Modus nutzten wir, um Aufgaben auszuführen und das installierte Plugin aufzurufen; Plugins lassen sich auch per Kommandozeile mit dsh plugin --profile <name> add installieren.

Wie deinstalliere ich ein Plugin?

Deaktivieren oder entfernen Sie das Bundle im Creator Mode oder auf der Plugins-Seite, oder per Kommandozeile:

bash
npx @deepseek-ai/dsh plugin --profile headless remove @local/todo-scan
# dependencies:
# - @local/todo-scan link:.../todo-scan

Nach dem Entfernen fehlte @local/todo-scan in unserem Test in der bundles-Liste des Profils, und auf die Bitte, todo_scan aufzurufen, antwortete das Modell, dass es kein solches Tool gibt.

Weiterlesen

Quellen: DeepSeek Harness auf GitHub · Leitfaden zur Modellkonfiguration · Tutorial zum ersten Plugin · CLI-Hilfe · Sicherheitshinweis · DeepSeek-Harness-Website · Beitrag von @DeepSeekHarness (geprüft am 2026-11-03)

相关文章

Claude Code auto mode scheitert hinter einem Gateway in jeder Runde? 2.1.317 behebt 403/422 (Update und Tests)

Claude Code auto mode scheitert hinter einem Gateway in jeder Runde? 2.1.317 behebt 403/422 (Update und Tests)

Claude Code 2.1.317 (veröffentlicht am 3. November) behebt, dass der Auto-Modus in jeder Runde scheitert, wenn ANTHROPIC_BASE_URL auf ein LLM-Gateway zeigt, das die serverseitige Sicherheitsprüfung mit 403 oder 422 beantwortet. Dieser Leitfaden zeigt, was sich ändert, wer betroffen ist, wie Sie aktualisieren und die Version prüfen, wie Sie Base URL und Schlüssel setzen und den Auto-Modus einschalten, dazu Vergleichstests von 2.1.316 und 2.1.317, eine Fehlertabelle und FAQ.

Claude Message Threads nutzen: Beta der Messages-API-Threads, nur neue Nachrichten senden, erstes Token ~35 % schneller (Claude Code / API im Test)

Claude Message Threads nutzen: Beta der Messages-API-Threads, nur neue Nachrichten senden, erstes Token ~35 % schneller (Claude Code / API im Test)

Am 2. November hat Anthropic Message Threads für die Messages API als öffentliche Beta gestartet. Die erste Anfrage schickt das ganze Gespräch und legt einen Thread an; danach sendet jede Runde nur die neuen Nachrichten und die id der vorherigen Antwort. In langen Gesprächen kommt das erste Token früher, Token-Verbrauch und Abrechnung bleiben gleich. Dieser Leitfaden erklärt nach der offiziellen Doku den thread-Parameter, den Beta-Header, den Ablauf nach 5 Minuten und das erneute Senden nach einem 404, zeigt Beispiele für curl, Python und TypeScript und berichtet von unserem Test mit einem aicodewith-Key: Über aicodewith wird das thread-Feld derzeit ignoriert und die Fortsetzungsrunde verliert den Kontext, Claude Code ist nicht betroffen, dazu der Ausweg und häufige Fehler.

Karpathys HackerTube nachbauen mit Claude Code oder Codex: Videos aus Hacker-News-Kommentaren für eine eigene Videoseite ohne Algorithmus (getestet)

Karpathys HackerTube nachbauen mit Claude Code oder Codex: Videos aus Hacker-News-Kommentaren für eine eigene Videoseite ohne Algorithmus (getestet)

Karpathy hat HackerTube in etwa zwei Stunden mit Claude Code und Opus 5.5 gebaut und dabei 6.454 YouTube-Videos ausgewählt, die sich Hacker-News-Kommentatoren seit 20 Jahren gegenseitig empfehlen. Mit unserem API Key haben Claude Code und Codex je eine Mini-Version gebaut: zwei Monate Kommentare über die offizielle HN-Algolia-API abrufen, YouTube-Links extrahieren, deduplizieren, zählen und eine statische Seite erzeugen. Mit vollständigem Prompt, gemessenen Laufzeiten, Vergleich beider Clients und den Schritten bis zu HackerTube.