Development & Runtime
dsh-desktop
ReachGa0/dsh-desktop · ★ 0
DeepSeek Harness 桌面版(Windows):双击即用,选区截图直接问 AI · 系统托盘、会话管理 · Featured in the community catalog
Manifest details
安装
dsh plugin --profile web add github:ReachGa0/dsh-desktopGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
For install and environment setup, plus plugin development tutorials, see DSH community docs ↗
README
Table of contents
An Electron desktop shell for DeepSeek Harness: double-click an icon and get a standalone window running dsh web — no terminal, no manual commands, no browser tab juggling. Region screenshot to ask the AI, system tray, session manager, auto environment setup.
Pure shell — it does not modify dsh itself. The server reuses your globally installed @deepseek-ai/dsh.
✨ Features
- 📸 Region screenshot → ask AI: one-click capture → full-screen overlay with real-time selection (GPU-accelerated, 8-direction handles to fine-tune) → auto-pastes into the chat → the AI answers from the image; the chat window hides itself during capture
- 🗂️ Session manager:
Alt → File → Session Manager…lists every session, delete with one click (permanently removes chat history) - 🪟 Standalone window: native desktop window loading the Harness Web UI
- 🍱 System tray: closing the window minimizes to the tray; right-click to show or quit
- 🔄 Easy reload:
F5/Ctrl+R/ floating button — reloads the Web UI; frontend plugins (skins, layout, enhancements) take effect on reload without restarting the app - 🧭 Auto environment setup: on first launch it detects Node.js / dsh and guides a one-click install — friendly to non-technical users
- 🔧 Configurable port:
npm start -- --port 3081when 3080 is taken - 🧠 Smart reuse: reuses an already-running dsh service instead of starting a duplicate
- 🧹 Clean shutdown: only kills the dsh process tree it started — never an external service
- 🔒 Single instance: prevents double-launch conflicts
- 🎨 Hardened:
contextIsolation+sandbox+ no Node integration; external links open in your system browser - 📦 One-click installer:
npm run distproduces an NSIS setup
How it works
- On startup, probes whether a dsh service is already listening on
127.0.0.1:3080; - If not, spawns
dsh web --port 3080automatically (logs to%APPDATA%/DeepSeek Harness Desktop/dsh.log); - Once ready, opens an Electron window loading the Web UI;
- When the window closes, kills only the dsh process tree it started (an externally started service is never touched).
📸 Region screenshot

- Click the 📸 button (bottom-right) — the chat window auto-hides
- Drag to select an area on the full-screen overlay (live preview; drag the 8 handles to fine-tune after drawing)
- Click ✔ OK (or double-click / Enter) — the chat window restores
- The screenshot lands in the chat box automatically → type a question → the AI answers from the image
Pair with a vision bridge like ModLens so text-only DeepSeek models can read images too. Screenshots are also saved to
~/.dsh/screenshots/(open the folder from the tray menu).
Prerequisites
- Node.js ≥ 22 (v24 verified)
- Globally installed dsh:
npm i -g @deepseek-ai/dsh(0.1.0-rc.6 verified) - To override the dsh binary path, set the
DSH_BINenvironment variable (e.g. point it at a source build ofapps/cli/src/bin.ts)
Install & run
cd dsh-desktop
npm install
npm start
If the Electron binary download is slow or fails (common on some networks), use a mirror:
set "ELECTRON_MIRROR=https://cdn.npmmirror.com/binaries/electron/" npm install
Use a different port (when 3080 is taken):
npm start -- --port 3081
On first launch: go to Settings → Models, enter your DeepSeek API Key, then pick a workspace.
Package an installer
npm run dist
Output lands in release/: dsh-desktop-<version>-setup.exe (NSIS installer).
Custom icon: drop an assets/icon.ico (≥256×256) and add "icon": "assets/icon.ico" under build.win in package.json.
Troubleshooting
- Launch fails / error dialog: check
%APPDATA%/DeepSeek Harness Desktop/dsh.log; make suredsh --versionworks. - Port already in use: run
npm start -- --port <new-port>instead. - After upgrading dsh: just re-run
npm i -g @deepseek-ai/dsh— the shell needs no changes. - Screenshot not in the chat box: click the input and press
Ctrl+V(the image is already on your clipboard). - Closing the window doesn't quit: that's the tray — right-click the tray icon and choose "Quit".
Contributing
Issues and PRs are welcome! The project is tiny — all the code lives in src/.