dsh-coding-remote-kit

September 2, 2026 · View on GitHub

dsh-coding-remote-kit

v0.5.2 · DeepSeek Harness 0.1.1-rc.2 · GitHub dsh-coding-remote-kit

Fernzugriff per Smartphone für DeepSeek Harness. Koppeln Sie ein Telefon mit dem Desktop, auf dem bereits dsh web läuft, beobachten Sie Sitzungen und führen Sie eine enge Menge von Schreibvorgängen aus — ohne die vollständige Web-API offenzulegen.

npm License PRs Welcome

English · 中文版 · 日本語 · 한국어 · Português (BR) · Español · Français · Deutsch · Русский


Upgrade / 升级: Follow the versioned steps in INSTALL.md. Install into the existing web profile, keep profile/config/credential files, and restart one existing DSH Web process after all packages are updated. When Hub and Subscription are both used, dsh-coding-oauth-core@0.1.0 is their shared npm dependency, not a separate DSH plugin.


Community-Plugin. Nicht mit DeepSeek verbunden und nicht von DeepSeek unterstützt. Die Produktabsicht liegt näher bei Orca Mobile Companion als bei einer zweiten Kopie der Desktop-IDE.

Lesen Sie AGENTS.md, bevor Sie dieses Repository ändern: starten Sie das Produktions-dsh-web nicht selbst neu. Bereiten Sie das Tarball vor; der Operator startet neu.

Namen

Zuerst als GitHub dsh-mobile-remote entwickelt. Der npm-Name dsh-mobile-remote ist ein anderes Projekt (WeChat-Fernsteuerungs-Plugin). Dieses Plugin erscheint als dsh-coding-remote-kit.

Das verwendenHinweise
npmdsh-coding-remote-kit@0.5.2dsh plugin --profile web add dsh-coding-remote-kit@0.5.2
GitHublninghaha/dsh-coding-remote-kitfrüherer Checkout-Name dsh-mobile-remote
Cordis-Plugin-idmobile-remoteunverändert
HTTP der Einstellungsseite/api/mobile-remote/*unverändert
Speicher$DSH_HOME/storages/mobile-remote/unverändert

Führen Sie nicht dsh plugin add dsh-mobile-remote aus — das installiert das fremde WeChat-Plugin.

Status

MeilensteinStatus
Recherche (Orca / DSH-Ökosystem)erledigt — docs/research/
M1 Plugin-Skelett + ADR / Bedrohungsmodellerledigt
M2 Kopplung / LAN-Datenebeneerledigt
M3 enges RPC / Freigabenerledigt
M4 signiertes HTTPS / native Appnicht begonnen
M5 selbst gehosteter Rendezvous-Workererledigt — docs/05-cloud-relay.md

Funktionen

  • Zweisprachige UI — Chinesisch und Englisch für Desktop-Einstellungen und Telefon-Companion (?lang= / Umschalter in der App; Standard navigator.language).
  • Einmal koppeln — der Desktop zeigt einen QR-Code oder eine 8-stellige PIN; das Telefon merkt sich fest den öffentlichen X25519-Schlüssel des Desktops und hält ein deviceToken (der Server speichert nur SHA-256).
  • Zwei Ebenen — Verwaltungsrouten bleiben auf dem Loopback-dsh web; die mobile Datenebene ist ein eigener Port (Standard 6879) mit RPC-Allowlist.
  • E2EE nach dem Handshake — tweetnacl secretbox auf /m/ws; unauthentifizierte Sockets sehen niemals Sitzungsinhalt.
  • Enge Schreibvorgänge — Sitzungen beobachten, Freigaben/Fragen beantworten, kurze Antworten; schwere Bearbeitung bleibt auf dem Desktop.
  • Privates Netz zuerst — LAN / Tailscale bevorzugt. Optionaler Cloudflare Quick Tunnel legt nur die Datenebene offen, niemals Port 3080. Optionaler selbst gehosteter Rendezvous-Worker: Desktop und Telefon beide outbound; Geschäftsframes bleiben E2EE.
  • Standard-Plugin-Form — ein Cordis-Server-Plugin + classic-script-Einstellungsseite. dsh plugin --profile web add mit einem file tarball, niemals einem link:-Arbeitsbaum.

Screenshots

Desktop-Einstellungen — Kopplungsangebot mit QR und PIN   Desktop-Einstellungen — Kanalstatus und gekoppelte Geräte

Desktop Settings → Mobile Remote: Kopplungsangebot erstellen (links) · Kanalstatus & Geräte (rechts)

Telefon-Kopplungsbildschirm    Telefon-Sitzungsliste

Telefon-Companion: PIN eingeben / scannen (links) · Sitzungsliste nach der Kopplung (rechts)

Probleme, die dieses Plugin löst

Gesucht / gesehenWas wirklich kaputt warWas dieses Plugin tut
„Orca-artiges Telefon-Companion für DSH“Offizielles DSH hat keine erstklassige gekoppelte Mobile-AppSemantisches Companion: Kopplung + E2EE + Allowlist-RPC
dsh-pocket / dsh-web-remote auf einem TelefonVolle dsh-web-Oberfläche im LAN/öffentlichZwei Ebenen; unbekannte RPC-Methoden sind forbidden
Telefon im Mobilfunk, Desktop im LANRohe LAN-HTTP-Seite kann MITM werdenTailscale bevorzugen; optionaler Quick Tunnel (TLS am Rand, Origin localhost)
Plugin-import fehlgeschlagen und Port 3080 totDSH fail-fastet den ganzen Plugin-BaumSandbox-Tor + Tarball außerhalb des Repos kopiert; kein link:

Schnellstart

dsh plugin --profile web add dsh-coding-remote-kit@0.5.2

Danach startet der Operator den bestehenden dsh-web-Prozess in seinem eigenen Fenster neu. Öffnen Sie Settings → 移動远程, erstellen Sie ein Kopplungsangebot, scannen Sie den QR (oder tippen Sie die PIN) auf dem Telefon.

Aus einem Quell-Checkout (Entwicklung):

pnpm test:sandbox
pnpm pack
mkdir -p "$HOME/.dsh/packages"
cp dsh-coding-remote-kit-0.5.2.tgz "$HOME/.dsh/packages/"
dsh plugin --profile web add "$HOME/.dsh/packages/dsh-coding-remote-kit-0.5.2.tgz"

Führen Sie nicht dsh plugin add ./ aus diesem Arbeitsbaum aus. pnpm 11 behandelt manche file:-Tarball-Pfade als link:-Quelle, und ein fehlgeschlagener Entry-Import legt die ganze GUI lahm.

Inhaltsverzeichnis

Installation

Erfordert DeepSeek Harness 0.1.1-rc.2 (gepinnt) und Node.js 22.19+. Vollständige Schritte, Kopplung und Tunnel-Hinweise: INSTALL.md.

Entwicklung:

pnpm install && pnpm build && pnpm test   # inside the Docker sandbox, not on a live GUI host
pnpm test:sandbox                         # Dockerfile targets check / isolated-install / verify

Build-Ausgaben:

  • lib/server/index.js — Cordis-Einstieg (name / inject / Config / apply)
  • lib/client.js — Einstellungs-classic-script
  • lib/mobile/ — Telefonseite unter /m

Funktionsweise

Settings (loopback)          Phone browser
        │                            │
        │  QR / PIN  ────────────────┤
        ▼                            ▼
 /api/mobile-remote/*          GET /m  +  WS /m/ws
   (dsh web, :3080)            (data plane, :6879, E2EE)

Die Verwaltung bleibt hinter dem Loopback-Zaun des Host-Web. Die Datenebene ist ein eigener node:http + ws-Server. Die Kopplung kann ihn von 127.0.0.1 auf 0.0.0.0 umbinden, damit LAN-Clients verbinden können; ein aktiver Quick Tunnel wirbt seinen HTTPS-Origin, statt den Bind zu erweitern.

Einstellungsseite

Öffnen Sie Settings → 移動远程:

  • Status (Bind, Port, Listening, aktive Geräte, Tunnel, Rendezvous)
  • Kanäle LAN / Quick Tunnel / rendezvous
  • Angebot erstellen → QR + 8-stellige PIN
  • Geräteliste und Widerruf
  • optionale offizielle cloudflared-Installation (läuft nie beim Plugin-apply())
  • Verbindungsdiagnose (bereinigte Kandidaten, cloudflared-Pin/Verify, Disclaimer-Version)
  • Quick-Tunnel-Disclaimer-Checkbox (vor Start erforderlich)

Mobile RPC

Allowlist-Methoden (alles andere ist forbidden):

status.get · session.list · session.history · session.subscribe · session.unsubscribe · host.subscribe · session.prompt · session.cancel · session.create · respond · device.name

Pushes umfassen Sitzungsereignisse plus approval.requested / question.requested (mit rpcId für respond). Drahtformat: docs/03-protocol.md.

Öffentlicher Tunnel

Standard aus. Start aus den Einstellungen erst nach Akzeptieren des Disclaimers (disclaimerAccepted: true). Der cloudflared-Quick-Tunnel zeigt nur auf 127.0.0.1:<data-plane-port>. /m wird unter einer https://<random>.trycloudflare.com-URL erreichbar; die Kopplung braucht weiterhin das Fragment-Token (oder die PIN) und E2EE. Der Kindprozess wird beim Plugin-Unload / Stop beendet.

Tunneln Sie niemals Port 3080 / dsh web. Ein selbst gehosteter Rendezvous-Worker (Desktop und Telefon beide outbound, Geschäftsframes weiterhin E2EE) ist optional; siehe docs/05-cloud-relay.md. Er braucht einen Cloudflare-Workers-Paid-Plan und ist kein öffentliches Relay dieses Projekts.

Sicherheit

Invarianten (vollständiges Modell: docs/04-threat-model.md):

  1. Unauthentifizierte Verbindungen behandeln nur den Handshake.
  2. deviceToken wird als SHA-256 gespeichert; Schlüssel und Registry-Dateien sind 0600.
  3. RPC-Allowlist, Standard ablehnen; Schreibvorgänge werden auf deviceId auditiert.
  4. Die Verwaltungsebene ist Loopback + Host + CSRF.
  5. Das Plugin schwächt dsh web /api nicht und übernimmt keine api-proxy-Provider.

Ehrliche v0-Grenze: der erste HTTP-Download von /m in einem rohen LAN kann MITM werden. Bevorzugen Sie ein Overlay-VPN.

Verbote:

  • Teilen Sie keine fremden Zugangsdaten.
  • Überwachen Sie keine Konten ohne Berechtigung.
  • Binden Sie den Datenebenen-Port nicht auf 0.0.0.0 ans öffentliche Internet (ein vom Benutzer explizit gestarteter Quick Tunnel ist die Ausnahme).
  • Unterstellen Sie keine offizielle DeepSeek-Unterstützung.

Beispiele in der Doku verwenden nur example.com, 127.0.0.1 und YOUR_TOKEN.

Architektur

Zwei Ebenen, Modulkarte, Speicher und Handshake: docs/02-architecture.md · 中文.

MVP-Entscheidung (Route B): docs/01-mvp-scope.md.

Dokumentation

DocZweck
INSTALL.mdInstallieren, koppeln, Tunnel
CHANGELOG.mdRelease-Historie
docs/00-project-rules.mdVersionierung, öffentlich vs. nur lokal, Host-DSH-Grenze
docs/01-mvp-scope.mdADR: MVP-Umfang (Chinesisch)
docs/02-architecture.mdInterne Architektur · 中文
docs/03-protocol.mdRPC-Allowlist und Push-Umschläge (Chinesisch)
docs/04-threat-model.mdAssets, Angreifer, Invarianten (Chinesisch)
docs/05-cloud-relay.mdSelbst gehosteter Rendezvous-Worker (M5)
CONTRIBUTING.mdBeitragsleitfaden
AGENTS.mdAgent-/Operator-Regeln (kein Produktions-Neustart)

Verwandt

Mitwirken

Issues und PRs sind willkommen. Siehe CONTRIBUTING.md für die Docker-Sandbox, Commit-Konventionen und Dokumentenschichten.

Lizenz

MIT.