DSH-Desktop
已验证 · 实测可装 JustGenius-s
功能简介
DSH-Desktop。
可用 — 实测通过,社区增长中
DSH-Desktop。 实测能干净安装、正常启动。社区在增长,是个稳妥选择。
「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
English | 简体中文
DSH-Desktop
Electron desktop shell for DeepSeek Harness (DSH). Bundles node + pnpm, installs @deepseek-ai/dsh into ~/.dsh/runtime, and serves the dsh web UI in a browser window.
Download & Install
Prebuilt packages are published on GitHub Releases. First launch installs the DSH runtime (~1-2 min).
macOS
- Download
DSH-Desktop-*.dmgfrom the latest release. - Open the
.dmgand dragDSH-Desktop.appinto/Applications. - The app is unsigned, so Gatekeeper blocks the first launch. Right-click the app → Open and confirm, or run:
xattr -dr com.apple.quarantine /Applications/DSH-Desktop.app
Windows
- Download
DSH-Desktop Setup *.exe(installer) orDSH-Desktop-*-win.zip(portable) from the latest release. - Run the installer, or unzip the archive and launch
DSH-Desktop.exe. - The build is unsigned, so SmartScreen may warn. Click More info → Run anyway.
How it works
Electron main process
├─ bundled node + pnpm (resources/runtime; repo-root runtime/ in dev)
├─ first launch: pnpm installs @deepseek-ai/dsh → ~/.dsh/runtime (upgradeable)
├─ spawn dsh web --host 127.0.0.1 --port <free-port>
└─ BrowserWindow → http://127.0.0.1:<port>
DSH is installed from npm at runtime, not shipped with the app. Upgrading DSH = detect a newer version on launch → click "Update" → optionally restart the web service (the desktop app stays open). No rebuild or re-signing.
After a successful boot, the web port is saved in web-port.json under Electron's user-data directory. Cold starts reuse it when available so origin-scoped browser preferences survive restarts. If another process occupies that port, a new loopback port is allocated; the app never attaches to that process. Plugins must still persist durable data on the host to survive a port change. Development and installed apps keep separate port records.
Develop
pnpm install
pnpm collect # download node + pnpm into runtime/
pnpm start # first launch installs @deepseek-ai/dsh (~1-2 min)
Dev and packaged behave identically: both use the bundled node and the external ~/.dsh/runtime.
Tests (no Electron window or browser required):
pnpm test # vitest for test/*.test.ts + node --test for test/*.test.cjs
pnpm typecheck
The TypeScript suites run under vitest; the *.test.cjs suites are plainnode:test (see vitest.config.ts, which deliberately excludes them).
Package
pnpm dist:mac # macOS dmg + zip
pnpm dist:win # Windows nsis + zip (run on Windows)
macOS artifacts are unsigned; Gatekeeper blocks first launch. Allow with:
xattr -dr com.apple.quarantine /Applications/DSH-Desktop.app
Runtime dependencies
- node (latest) + pnpm (latest), bundled via
scripts/collect-runtime.mjs @deepseek-ai/dsh(npm latest), installed to~/.dsh/runtime
Desktop plugin API
The shell injects window.dshDesktop into the DSH page (updates / seats / notify / overlays). Plugins should depend on that contract, not on Electron packaging code. See docs/desktop-api.md.
Our plugins
Companion DSH plugins live in DSH-Plugs.
Thanks to
安装
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 DSH-Desktop」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
该插件是 GitHub 源码(未发 npm)——直接从仓库装:
Web profile:
dsh plugin --profile web add github:JustGenius-s/DSH-Desktop Headless(CLI)profile:
dsh plugin --profile headless add github:JustGenius-s/DSH-Desktop 实测报告
验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。
使用场景
把 dsh 跑成原生桌面应用——独立窗口、托盘图标、快捷键——而不是浏览器标签。
适合谁
想要已安装应用的感觉和系统集成(托盘、全局热键、开机自启)的人。
二次开发建议
原生壳是缝——加全局快捷键、通知、单实例锁或按 OS 定制的行为。