Techvoyage
Startseite
Eine Premium-Technologiekarte im Format 16:9 mit tiefblauen und bernsteinfarbenen Akzenten, die zeigt, wie DeepSeek Harness über eine Nostr-Bridge mit Block Buzz verbunden wird, mit einem sauberen glassmorphic Panel und zentrierter Typografie.

DeepSeek Harness mit Buzz verbinden: Das Nostr-Gateway

Integrieren Sie DeepSeek Harness über eine Nostr-Bridge in Block Buzz: NIP-42-Auth, In-Place-Streaming-Edits und kanalbezogene Agenten-Workspaces konfigurieren.

Sep 30, 2026 - 10 MIN LESEZEIT
Inhaltsverzeichnis

Das DeepSeek Harness (DSH) Plugin, dsh-message-gateway, erweitert den DeepSeek Harness Assistenten auf verschiedene Messaging-Plattformen wie Discord, Telegram und WeChat. Das Plugin-Repository wurde geforkt und erweitert, um die Plattform Block's Buzz selbst hosten: Workspace für Mensch & KI-Agenten zur Liste hinzuzufügen. Das geforkte Repository ist auf GitHub unter https://github.com/Tech-Voyage-Dev/dsh-message-gateway verfügbar.

Eine Premium-Technologiekarte im Format 16:9 mit tiefblauen und orangefarbenen Akzenten, die zeigt, wie man das Buzz-Relay von Block auf einem Ubuntu-VPS selbst hostet, mit einem klaren glassmorphic Panel mit zentrierter Typografie.

Voraussetzungsleitfaden

Block's Buzz selbst hosten: Workspace für Mensch & KI-Agenten

Lernen Sie, wie Sie das Nostr-Relay Block's Buzz auf einem Ubuntu VPS hinter Cloudflare selbst hosten. Ein sicherer Workspace für Menschen und KI-Agenten.

12 MIN LESEZEIT

Der DSH-Assistent tritt einem Buzz-Relay als vollwertiges Mitglied bei, empfängt Direktnachrichten (DMs) sowie Kanalnachrichten, in denen er @erwähnt wird, und antwortet über dieselbe kanalbezogene Agenten-Pipeline, die auch von der Weboberfläche genutzt wird.

Architektur des dsh-message-gateway Plugins

Die Architektur des dsh-message-gateway Plugins gliedert sich in zwei Kernbereiche:

  • Host (Node): gateway-store (Zugangsdaten in ~/.dsh/gateway.json), platforms.ts (Plattformdefinitionen und Verbindungstests), routes.ts (/gateway/* Endpunkte) und bridge-manager.ts (die residenten Bridges: unabhängige Agentensitzungen pro Chat und gestreamte Antworten).
  • Client (Browser): Die Seite "Message platforms" in der Seitenleiste, auf der Sie Zugangsdaten hinterlegen, Verbindungen testen und den Status überwachen.

Die Anbindung einer neuen Plattform umfasst folgende Schritte:

  1. Eine Bridge-Klasse: Stellt start/stop/status sowie einen onText(text, frame) Callback bereit, analog zu wecom-bridge.ts.
  2. Bridge-Manager-Verdrahtung: Wiederverwendung der bestehenden Chat-Pipeline (ensureAgentForKey + pendingMap) unter Einbindung der Antwort-Senke der Plattform.
  3. Speicher- und Routen-Anbindung: In /gateway/save und /gateway/delete: Das Speichern von Zugangsdaten startet die Bridge, das Löschen stoppt sie — ergänzt durch ein autoStartXxx-Flag, damit dsh web beim Systemstart automatisch neu verbindet.

Buzz-Bridge-Implementierung: Nostr-Protokoll & Event-Lebenszyklus

DeepSeek Harness wurde direkt verwendet, um die Buzz-Bridge zu implementieren. Die Umsetzung erfüllt die folgenden Nostr-Protokollspezifikationen:

TransportEin NIP-42-authentifizierter WebSocket; Standard ws://localhost:3000; http(s):// wird zu ws(s):// normalisiert
AuthentifizierungAUTH-Event kind 22242, Tags [["relay", url], ["challenge", challenge]], leerer Inhalt, signiert mit dem Agenten-Schlüssel
AbonnementsKanalbezogen: REQ {"kinds":[9], "#h":[<uuid>]} — ein REQ pro Kanal. Ein globales kinds:[9] REQ erhält EOSE, liefert aber keine Events aus; Multi-Wert #h funktioniert nicht
Erkennung (Discovery)Historisches REQ {kinds:[39000]} für Kanal-Metadaten (type == "dm" markiert Direktnachrichtenkanäle)
MitgliedschaftLive REQ {kinds:[44100,44101], "#p":[unser pubkey], since: now-60s} — 44100 = hinzugefügt, 44101 = entfernt, mit p+h; aktualisiert Abonnements ohne Reconnect
Chat-Eventskind 9 mit Tags ["h", channel], optional ["e", replyTo], ["p", mention]
In-Place-Editskind 40003 mit h + e→Ziel; ersetzt Inhalt; Relay-Limit 64 KB → Nutzlasten ≤ 60.000 B halten; lange Antworten werden aufgeteilt — Chunk 0 nutzt das Edit, Überhang folgt als kind 9 Thread-Nachricht (e→Root)
CLOSED-Framesauth-required vor AUTH ist normaler Bootstrap (AUTH abschließen, Subs neu öffnen); nach AUTH → begrenzter Neuversuch (3 Versuche, 0/1/2 s Backoff); Reconnect baut alles neu auf
Relay-Limits≤ 2000 historische Events pro Abonnement, chronologisch absteigend (neueste zuerst), selbst mit since-Filter
Erwähnungs-FilterVerarbeitet eingehende kind 9 nur wenn: (a) p-Tag unseren Pubkey enthält, (b) Kanal ein DM ist, oder (c) e-Root unser eigenes Event ist. Eigener Pubkey wird ignoriert (Schleifenschutz)
Ausgehende ErwähnungenAusgehender Text wird unverändert veröffentlicht — das Relay prüft keine @-Token; p-Tags enthalten den ursprünglichen Autor + bis zu 7 weitere erwähnte Pubkeys (max. 8)
Direktnachrichten (DM)Relay-spezifische Klartext-Kanäle (type: "dm" Metadaten) — keine NIP-04/44-Verschlüsselung in dieser Bridge
Anhänge (Eingehend)NIP-92 imeta (url, sha256, m) → Standard-HTTP(S)-Download, SHA-256-Prüfung, 20 MB Limit, max. 4 pro Nachricht; ausgehende Bilder werden nicht unterstützt

Das folgende Diagramm veranschaulicht den Bootstrap-Ablauf der Buzz-Bridge:

Echtzeit-Streaming über Nostr In-Place-Edits (Kind 40003)

Da Nostr keine native Tippanzeige besitzt und Events append-only gespeichert werden, simuliert die Buzz-Bridge Streaming über In-Place-Edits:

  • Die Buzz-Bridge veröffentlicht zunächst ein temporäres Platzhalter-Event kind 9, schreibt dieses kontinuierlich mit ratenlimitierten kind 40003 In-Place-Edits fort und setzt den finalen Edit, sobald der Agent die Generierung beendet hat. Dies entspricht dem bewährten Muster von Telegram- und Discord-Bridges.

Einbindung von DeepSeek Harness Workspaces über Chat-Befehle

Die "Workspaces"-Funktion in der DSH-Weboberfläche basiert auf dem workspaceRegistry-Dienst (@deepseek-ai/dsh-workspace):

const existing = await ctx.workspaceRegistry.resolveByPath(request.path);

Die Buzz-Bridge stellt den Chat-Befehl /workspace <ordner> bereit, der ein bestehendes Verzeichnis in DSH registriert. Jede neue über das Gateway initiierte Sitzung wird diesem Ordner zugeordnet und erscheint in der Weboberfläche.

Drei zentrale Entwurfsentscheidungen:

  • Ordnerwechsel = Neue Sitzung. Der Parameter cwd wird bei der Initialisierung im Sitzungs-Header hinterlegt und kann nachträglich nicht geändert werden.
  • Ordner muss bereits existieren. Der Aufruf create weist nicht vorhandene Pfade ab.
  • Sicherheitsrelevanter Befehl. Jede Sitzung läuft unter einer Auto-Approve-Richtlinie und gewährt Dateizugriff auf das Zielverzeichnis.

Schritt-für-Schritt Installations- und Konfigurationsanleitung

  1. Führen Sie folgende Befehle im Terminal aus:
dsh plugin --profile web add https://github.com/Tech-Voyage-Dev/dsh-message-gateway.git

# Start DSH web
dsh web
  1. Sobald die DSH-Weboberfläche im Browser geladen ist, klicken Sie auf das Symbol "Message platforms":

  1. Wählen Sie "Buzz" im linken Navigationsbereich:

  1. Klicken Sie auf "Generate keypair", um ein Nostr-Schlüsselpaar zu generieren. Kopieren Sie den öffentlichen Schlüssel npub an einen sicheren Ort.
  2. Tragen Sie die Relay URL sowie die Channels (die Allowlist der zu abonnierenden Kanal-UUIDs) ein.
  3. Klicken Sie auf die Schaltfläche "Save".

Das Speichern des Formulars sichert die Zugangsdaten und startet die Bridge. Der private Schlüssel nsec wird als vertrauliches Geheimnis behandelt und verbleibt ausschließlich in ~/.dsh/gateway.json.

Agenten-Schlüsselpaar im Buzz Nostr-Relay registrieren

Fügen Sie den DSH-Assistenten dem Relay als Mitglied hinzu. Verwenden Sie dazu den zuvor generierten npub:

docker compose exec relay buzz-admin add-member --pubkey npub123123123

Weisen Sie den Assistenten einem bestimmten Kanal zu. Die Mitgliedschaft im Relay allein macht den Agenten in Kanälen noch nicht sichtbar oder durchsuchbar. Beim Ausführen dieses Schritts mit buzz-cli muss der Parameter --pubkey im HEX-Format angegeben werden, nicht als npub (der Befehl buzz-admin add-member gibt den entsprechenden HEX-Schlüssel aus):

buzz channels add-member --channel <CHANNEL_UUID> --pubkey <AGENT_HEX> --role member
Eine Premium-Technologiekarte im Format 16:9 mit tiefblauen und orangefarbenen Akzenten, die zeigt, wie man das Buzz-Relay von Block auf einem Ubuntu-VPS selbst hostet, mit einem klaren glassmorphic Panel mit zentrierter Typografie.

CLI-Anleitung

So installieren und verwenden Sie buzz-cli

Schritt-für-Schritt-Anleitung zur Installation und Konfiguration von buzz-cli zur Verwaltung von Nostr-Kanälen, Mitgliedsschlüsseln und Berechtigungen für KI-Agenten.

5 MIN LESEZEIT

Aktualisieren Sie das Profil des DSH-Assistenten im Nostr-Relay auf einen aussagekräftigen Anzeigenamen mittels buzz-cli:

Senden Sie ein Wave (die Direktnachrichten-Begrüßung in Buzz) an den Assistenten. Die Antwort bestätigt die Betriebsbereitschaft:

Senden eines Wave als DM an den DSH-Assistenten — die Bridge antwortet prompt.

Lokalen Ordnerzugriff mit /workspace aktivieren

Da die Einstellung allowWorkspace standardmäßig auf false gesetzt ist, wird der Befehl /workspace zunächst abgewiesen:

Aktivieren Sie die Option in ~/.dsh/profiles/web/cordis.patch.yml und starten Sie dsh web neu:

- id: ui-message-gateway
  config:
    allowWorkspace: true

Nach dem Neustart:

Wichtiger Hinweis: Die Konfiguration geht davon aus, dass der Workspace-Ordner (TechVoyage in den Screenshots) im Standard-Benutzerverzeichnis liegt. Geben Sie andernfalls den vollständigen absoluten Pfad an. Jede neue über Buzz gestartete Sitzung wird auch in der Weboberfläche von DeepSeek Harness aufgeführt.

Verfügbare Befehle in Buzz

Alle von anderen Plattformen bekannten Befehle stehen auch in Buzz uneingeschränkt bereit:

BefehlFunktion
/workspace <folder>Registriert einen bestehenden Ordner als Workspace des Chats (erfordert Freigabe in der Konfiguration)
/helpListet alle verfügbaren Befehle auf
/timeZeigt die aktuelle Serverzeit an
/newStartet eine frische, saubere Sitzung
/clearLöscht den bisherigen Gesprächsverlauf
/statusGibt den aktuellen Betriebszustand der Bridge aus
/statsLiefert Chat-Zähler und detaillierte Statuszeilen aller Bridges (inklusive Buzz)
/commandsDetaillierte Übersicht aller Befehlsbeschreibungen
@path/to/fileVerhält sich wie @-Dateierwähnungen im Web: Das Modell liest die Datei relativ zum Chat-Workspace; @, @präfix oder /files <präfix> antwortet mit passenden Dateien/Ordnern
/model[provider model effort] — validiert gegen den aktiven Modellkatalog; /model listet Optionen, /model reset setzt auf Standard zurück
/effort<id> passt gezielt die Reasoning-Anstrengung an; /effort reset setzt den Standardwert wieder ein

Sicherheitsaspekte im Überblick

  • Der private Schlüssel nsec liegt geschützt in ~/.dsh/gateway.json (Rechte 0600, atomare Schreibvorgänge) — er wird niemals über /gateway/list exponiert oder in Protokollen ausgegeben.
  • Jedes eingehende Event wird kryptografisch signaturgeprüft (verifyEvent), dedupliziert, auf Selbstaussendung gefiltert und durch Erwähnungsprüfungen geleitet, bevor es den Agenten erreicht.
  • Die Workspace-Registrierung ist strikt konfigurationsgesteuert (allowWorkspace: false als Standard), um unbefugten Zugriff auf lokale Systemverzeichnisse abzusichern.

Fazit: Dezentrale KI-Zusammenarbeit in Buzz

Die größte Herausforderung bei der Integration von Buzz in dsh-message-gateway lag in der konsequenten Erfüllung des Nostr-Protokollvertrags. Da die Plugin-Basis bereits eine ausgereifte Sitzungsverwaltung und Befehlsweiterleitung bot, fügte sich die Bridge nahtlos ein, sobald Event-Verarbeitung und In-Place-Streaming etabliert waren.

Referenzen:

Ähnliche Artikel