deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
English · 简体中文
A community plugin for DeepSeek Harness — adds a built-in "Remote Control" page to the Web settings: connection QR code, one-click toggle, and live connected-device count. Access and control your desktop DeepSeek Harness from your phone over LAN, with mobile-first UI polish.
dsh-mobile-remote is a DeepSeek Harness ecosystem mobile remote-control plugin (DSH plugin, Host + Client in one package). After installation, a management panel appears under Settings → Remote Control in the Web UI:
http://<lan-ip>:<port> — scan it with your phone's camera / browser to connect.0.0.0.0 ↔ 127.0.0.1) with one click. Applied via dsh's official HMR hot-reload — no service restart needed.Key selling point: pure CLI users don't need the desktop app. The official CLI deliberately rejects --host 0.0.0.0 for safety, but this plugin writes webserver.host: 0.0.0.0 through the profile's cordis.patch.yml (or a --patch <overlay>) — exactly how the desktop app's "Mobile Remote Control" switch works. The phone and the computer share the same dsh backend process and the same ~/.dsh data, so sessions, history, workspace and settings are naturally two-way synced — no data copying involved.

Either method works and is equivalent. We recommend the desktop app — fully graphical, no command line needed.
Install DeepSeek Harness Desktop, open it, then go to "Install Plugins" → Recommended → Mobile Remote Control → Install and click "Restart Service Now" to activate.
# Prerequisite: install dsh (npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add @feiyang666/dsh-mobile-remote
Restart the dsh web service to activate.
npx @deepseek-ai/dsh web / from source).http://127.0.0.1:3080 in a desktop browser → Settings → Remote Control.# Way 1: use the settings-page toggle (recommended)
dsh --profile web
# then open http://127.0.0.1:3080 → Settings → Remote Control → ON
# Way 2: manual overlay
dsh --profile web --patch remote-control.patch.yml
remote-control.patch.yml:
- id: webserver
config:
host: '0.0.0.0'
port: !!js ctx.webStartup.port ?? 3080
Security note: enabling remote control exposes the service to your LAN. Use it only on trusted home / office networks — do not expose it to the public internet.
One npm package = host half (Node-side Cordis plugin: /__dsh_remote/* API, patch-file management, heartbeat device counting, index.html injection — see lib/index.js) + client half (browser settings panel — see lib/client.js, talking to the host via /__dsh_remote/status etc.).
It plugs into DSH through two declarations:
| Declaration | Purpose |
|---|---|
dsh.bundle.patch (cordis.patch.yml) |
Lets DSH treat it as a standard bundle plugin package: dsh plugin --profile <name> add <pkg> installs and wires it in one command |
dsh.client + exports["./client"] |
Lets the web client auto-load the settings panel at /plugins/<pkg>/client.js |
So for users, installing is one command — no YAML editing, no manual file copying.
| Layer | File | Responsibility |
|---|---|---|
| host | lib/index.js |
/__dsh_remote/status / toggle / heartbeat / qr API; patch-file read/write; heartbeat device counting; index.html injection |
| client | lib/client.js |
Registers the settings.section "Remote Control" panel (toggle / QR / device count) |
| qrcode | lib/qrcode.js |
Inlined MIT QR generator (qrcode-generator), zero runtime deps |
POST /__dsh_remote/toggle → writes/removes a webserver override block in the profile's cordis.patch.yml → dsh's watchUserPatches (Cordis HMR) hot-reloads the webserver entry to re-listen.GET /__dsh_remote/qr?url=... returns SVG.tapIndex injects mobile CSS/JS — composer toolbar wraps on narrow screens, selects get width-capped, iOS inputs get 16px to prevent focus zoom; DSH's native rail + hamburger drawer interactions are untouched.npm install -g @deepseek-ai/dsh globally, or via the desktop app / npx @deepseek-ai/dsh web).dsh on your PATH (use the desktop app's own terminal if it manages its environment).dsh plugin --profile web add @feiyang666/dsh-mobile-remote
This command does three things automatically:
~/.dsh/profiles/web via pnpm (initializes the profile on first use);dsh.bundle declaration and registers the package in the profile's dsh.profile.bundles;cordis.patch.yml and mounts the plugin entry into the app tree — no manual config editing.The same works for other profiles — replace web with your profile name.
Local tarball testing:
dsh plugin --profile web add C:\path\to\feiyang666-dsh-mobile-remote-1.1.0.tgz
Restart the dsh web app (CLI: stop the old process and run dsh web again; desktop: fully quit and reopen). Then:
dsh plugin --profile web remove @feiyang666/dsh-mobile-remote
Then restart the app.
| Symptom | Cause / Fix |
|---|---|
| No "Remote Control" panel in Settings | Plugin not activated. Check the cordis.patch.yml row exists with the right name; restart and hard-refresh |
| Phone still can't connect after toggling ON | Same Wi-Fi? Firewall allowing port 3080? Accessing the LAN IP (not 127.0.0.1)? |
| Phone connects but shows 403 | dsh's trust fence: make sure the plugin is installed and dsh is started the supported way (--patch / profile patch overriding webserver.host) |
| Device count stays 0 | The phone page must be opened once to start heartbeat; wait a few seconds and refresh |
| QR won't scan | Confirm Remote Control is ON; use a camera app that supports QR |
| Project | Description | Installation |
|---|---|---|
| DeepSeek Harness Desktop | Windows desktop console: install/start/stop/restart the dsh web service with one click, built-in plugin management — install this plugin from its Recommended section | Download the desktop app and click a few buttons |
| Usage & Cost Tracker (dsh-usage-plugin) | Per-call token/cache-hit stats, peak/off-peak billing, balance query, CSV/JSON/PNG export | One-click from the desktop app, or dsh plugin add @feiyang666/dsh-usage-plugin |
| Data Vault (dsh-vault) | Auto-backup, wipe detection, one-click restore for chat history and workspace data | One-click from the desktop app, or dsh plugin add @feiyang666/dsh-vault |
| DeepSeek-Harness | Official CLI / Web service | Quick start below |
Quick start (via npm)
Install Node.js, then run:
npx @deepseek-ai/dsh web
This starts the Web UI at http://127.0.0.1:3080 by default. See the Web UI Guide.
Run from source
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
MIT © dsh-mobile-remote
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。