ai newsDo., 22. Okt.
EilmeldungChrome bekommt bei Betrugsabwehr jetzt Hilfe einer großen KI

DeepSeeks Agent dsh steuert echte Browser-Profile ueber MCP

DeepSeek bietet mit dsh ein offizielles Agent-Framework, das MCP spricht und daher externe Tools nutzen kann. Angebunden an den Multi-Profil-Browser Nullprint genuegt eine Anfrage in natuerlicher Sprache, um Profile zu erstellen und zu starten.

dev.toDonnerstag 02:26 · 22.10.DE2 Min. Lesezeit
Bild: dev.to

DeepSeek verfügt über ein offizielles Agent-Framework namens dsh (npm: @deepseek-ai/dsh, Quellcode unter deepseek-ai/deepseek-harness). Es spricht MCP, was bedeutet, dass man ihm Werkzeuge zur Verfügung stellen kann. Wir haben es mit Nullprint, einem Multi-Profil-Browser, verbunden, sodass eine Anfrage in natürlicher Sprache zu folgender Abfolge wird: ein Browser-Profil anlegen, es starten, eine Seite öffnen, sie auslesen und sie wieder schließen.

Das ist die Kurzfassung dessen, was dafür nötig war. Getestet mit dsh 0.2.1-rc.2 und nullprint-mcp 0.1.3; dsh befindet sich noch in einer Vorabversion, daher sollte man die eigene Dokumentation prüfen, falls sich etwas unten Beschriebenes inzwischen geändert hat.

Das dsh-Paket auf PyPI stammt nicht von DeepSeek. Die Installation erfolgt über npm.

Man benötigt Node.js, einen DeepSeek API Key sowie Nullprint, das auf demselben Rechner läuft und angemeldet ist.

npm install -g @deepseek-ai/dsh export DEEPSEEK_API_KEY = sk-your-key pipx install nullprint-mcp Enter fullscreen mode Exit fullscreen mode dsh bietet zwei Modi: web (eine Chat-Seite im Browser) und headless (eine Aufgabe über die Kommandozeile, danach Beenden). Jeder Modus ist ein eigenes Profil mit eigener Konfiguration, und der Konfigurationsordner erscheint erst, nachdem das Profil einmal gelaufen ist. Man sollte also den gewünschten Modus starten (dsh web oder eine kleine headless-Aufgabe), bevor man etwas bearbeitet.

Nullprint wird in ~/.dsh/profiles/<web oder headless>/cordis.patch.yml eingetragen:

- insert: - id: mcp-nullprint name: " @deepseek-ai/dsh-mcp-client" config: serverName: nullprint transport: stdio command: nullprint-mcp args: [] Enter fullscreen mode Exit fullscreen mode Der Eintrag muss in - insert: eingepackt sein. Ein bloßes - id: mcp-nullprint verändert nur einen bereits existierenden Eintrag, sodass ein auf diese Weise geschriebener neuer Eintrag ignoriert wird und dsh normal ohne die Werkzeuge startet. Prüfen lässt sich das mit:

dsh --profile headless --dump-config Enter fullscreen mode Exit fullscreen mode Wenn mcp-nullprint in der Ausgabe auftaucht, wurde es geladen. Die Werkzeuge erscheinen als mcp__nullprint__<tool>, zum Beispiel mcp__nullprint__profile_start und mcp__nullprint__session_goto.

Auf demselben Rechner wird weder ein Port noch ein Schlüssel benötigt: nullprint-mcp liest die lokale Verbindungsdatei von Nullprint selbstständig ein.

dsh --profile headless "Use Nullprint to create a new profile, open example.com, tell me the page title, then close the profile." Enter fullscreen mode Exit fullscreen mode dsh erstellt das Profil, startet es, navigiert zur Seite, liest den Titel über eval aus und schließt es anschließend. Das neue Profil erscheint danach in der Nullprint-App. Anschließend funktionieren Anfragen wie "liste meine Profile und welche davon laufen" oder "öffne shop-01 und gehe zu example.com" auf dieselbe Weise. Profilnamen unterscheiden zwischen Groß- und Kleinschreibung.

Man setzt NULLPRINT_DAEMON_URL und NULLPRINT_API_KEY. Ein Stolperstein: Wenn dsh einen MCP-Server startet, entfernt es vererbte Umgebungsvariablen, deren Namen KEY, TOKEN, SECRET oder PASSWORD enthalten. Ein Export von NULLPRINT_API_KEY in der Shell genügt also nicht; der Schlüssel muss explizit in der Konfiguration übergeben werden:

env: NULLPRINT_DAEMON_URL:!!js process.env.NULLPRINT_DAEMON_URL NULLPRINT_API_KEY:!!js process.env.NULLPRINT_API_KEY Enter fullscreen mode Exit fullscreen mode Man sollte den Schlüssel selbst nicht direkt in die Datei einfügen.

Die vollständige Anleitung findet sich unter: https://nullprint.ai/docs/mcp/dsh/

Dieser Beitrag wurde mit KI-Unterstützung verfasst und vom Nullprint-Team geprüft.

Automatisch übersetzt. Das Original auf Englisch ist unten aufklappbar.

Original (Englisch) anzeigen

DeepSeek has an official agent harness called dsh (npm: @deepseek-ai/dsh, source at deepseek-ai/deepseek-harness ). It speaks MCP, which means you can hand it tools. We wired it to Nullprint, a multi-profile browser, so a plain-language request turns into: create a browser profile, launch it, open a page, read it, close it.

This is the short version of what it took. Tested with dsh 0.2.1-rc.2 and nullprint-mcp 0.1.3; dsh is still a pre-release, so check its own docs if anything below has moved.

The dsh package on PyPI is not DeepSeek's. Install from npm.

You need Node.js, a DeepSeek API key, and Nullprint running and signed in on the same machine.

npm install -g @deepseek-ai/dsh export DEEPSEEK_API_KEY = sk-your-key pipx install nullprint-mcp Enter fullscreen mode Exit fullscreen mode dsh has two modes: web (a chat page in your browser) and headless (one task from the command line, then exit). Each is a separate profile with its own config, and the config folder only appears after the profile has run once, so start the one you want ( dsh web, or any small headless task) before editing anything.

Add Nullprint to ~/.dsh/profiles/<web or headless>/cordis.patch.yml:

- insert: - id: mcp-nullprint name: " @deepseek-ai/dsh-mcp-client" config: serverName: nullprint transport: stdio command: nullprint-mcp args: [] Enter fullscreen mode Exit fullscreen mode It has to be wrapped in - insert:. A bare - id: mcp-nullprint only modifies an entry that already exists, so a new entry written that way is ignored, and dsh starts normally without the tools. Check with:

dsh --profile headless --dump-config Enter fullscreen mode Exit fullscreen mode If mcp-nullprint is in the output, it loaded. The tools show up as mcp__nullprint__<tool>, e.g. mcp__nullprint__profile_start and mcp__nullprint__session_goto.

No port or key is needed on the same machine: nullprint-mcp reads Nullprint's local connection file by itself.

dsh --profile headless "Use Nullprint to create a new profile, open example.com, tell me the page title, then close the profile." Enter fullscreen mode Exit fullscreen mode dsh creates the profile, starts it, navigates, reads the title through eval, and closes it. The new profile appears in the Nullprint app afterwards. After that, requests like "list my profiles and which are running" or "open shop-01 and go to example.com" work the same way. Profile names are case-sensitive.

Set NULLPRINT_DAEMON_URL and NULLPRINT_API_KEY. One gotcha: when dsh launches an MCP server it drops inherited environment variables whose names contain KEY, TOKEN, SECRET or PASSWORD. Exporting NULLPRINT_API_KEY in your shell isn't enough; pass it explicitly in the config:

env: NULLPRINT_DAEMON_URL:!!js process.env.NULLPRINT_DAEMON_URL NULLPRINT_API_KEY:!!js process.env.NULLPRINT_API_KEY Enter fullscreen mode Exit fullscreen mode Don't paste the key itself into the file.

Full guide: https://nullprint.ai/docs/mcp/dsh/

This post was drafted with AI assistance and reviewed by the Nullprint team.

Originaltitel: Driving a real browser profile from DeepSeek's dsh over MCPQuelle: dev.to (dev.to). Original öffnen