Plugin directory / Desktop / deepseek-harness-desktop
deepseek-harness-desktop
Verified · install-tested on dsh cnskycn
What it does
Desktop app wrapper for DeepSeek Harness (dsh) Web UI - one-click Windows installer
Works — verified, early-stage project
Desktop app wrapper for DeepSeek Harness (dsh) Web UI - one-click Windows installer It installs cleanly and boots without issues in our testing. It's early-stage but functional.
“Verified” means our automated CI actually ran dsh plugin add in a clean profile and it booted — nothing more. Feature descriptions and version compatibility are the author’s claims. This is not a security audit and not an endorsement of third-party code.
README
✨ 特性
- 🚀 一键安装:NSIS 单文件安装包,自动创建桌面/开始菜单快捷方式
- 🖥️ 原生桌面窗口:不再需要手动开浏览器访问
127.0.0.1:3080 - 📦 内置 Node.js 运行时:安装包内置 portable Node.js(不含 npm),开箱即用,无需系统安装 Node,无 UAC
- 🛡️ 干净的服务管理:每次启动全新 dsh 实例,退出应用自动回收进程,杜绝残留实例冲突
- 🌐 内置完整 dsh:安装包包含
@deepseek-ai/dsh全部依赖,无需自行安装 Harness
📦 使用
从 Releases 下载最新安装包:
运行安装包(安装后自动创建桌面/开始菜单快捷方式)
打开「DeepSeek Harness」
首次使用:Settings → Models 填入 DeepSeek API Key
点击 Choose workspace 选择工作目录,开始使用
运行时:安装包已内置 portable Node.js(≥22.19,支持
node:zlib的 zstd),开箱即用。
内置 node 缺失时(极端情况)会自动回退检测系统 Node.js。
🛠️ 从源码构建
构建机需 Node.js + npm(仅用于构建,与最终安装包无关)。
npm install # 安装 electron / electron-builder
npm run build # 安装 dsh 依赖 + 打包 NSIS 安装包
产物输出到 dist/。分步命令:
npm run setup:runtime # 安装 @deepseek-ai/dsh 到 resources/dsh
node scripts/prune-runtime.js # 精简 runtime(删 PDB/类型/源地图冗余)
npm run dist # 执行 electron-builder 打包
内置 portable Node.js 位于
resources/node/win-x64/node.exe,构建前需自行放置
(可从 Node.js 官方 zip 版提取,或复制本机node.exe,版本需 ≥22.19 且支持 zstd)。
构建机在中国大陆时,可设置国内镜像加速 electron 二进制下载:
$env:ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"
$env:ELECTRON_BUILDER_BINARIES_MIRROR="https://npmmirror.com/mirrors/electron-builder-binaries/"
📁 目录结构
deepseek-harness-desktop/
├── electron/
│ ├── main.js # 主进程:检测 Node、拉起 dsh、打开窗口、回收进程
│ ├── preload.js # 桥接:向页面推送服务日志
│ ├── loading.html # 启动加载页
│ └── error.html # 启动失败页
├── build/
│ └── installer.nsh # NSIS:无需安装 Node,纯解压即用
├── scripts/
│ ├── setup-runtime.js # 安装 @deepseek-ai/dsh 到 resources/dsh
│ ├── prune-runtime.js # 精简 runtime(删 PDB/类型/源地图冗余)
│ └── build.js # 一键构建(含精简步骤)
├── resources/
│ ├── dsh # 构建时生成:dsh 及全部依赖
│ └── node/win-x64/ # 内置 portable node.exe
├── package.json # electron-builder 配置
└── dist/ # 构建产物
🔧 架构说明
Node.js 策略(内置 portable Node)
| 时机 | 机制 |
|---|---|
| 安装时 | 无额外步骤——安装包已含 portable node,纯解压 |
| 启动时 | 优先使用内置 node(校验版本 + zstd 能力);缺失则回退检测系统 Node |
| 均不可用 | 弹窗引导:自动安装(winget)或打开 nodejs.org |
服务管理
- 应用始终启动全新的 dsh 实例,避免连接端口上残留的旧实例
- 若 3080 被占用,弹窗让用户选择「关闭占用进程并重启 / 直接连接 / 退出」
- 退出应用时
taskkill /T /F回收整个进程树
❓ 常见问题
Q: 双击安装包后桌面没有快捷方式?
A: 若安装被 SmartScreen/杀软拦截会中断。请点「更多信息 → 仍要运行」后重装。
Q: 启动时报 failed to load bundle script?
A: 多为端口残留旧实例导致,已在新版本中修复。请关闭所有 DeepSeek Harness 进程后重启。
Q: 安装包有多大?为什么那么大?
A: 约 140MB。包含内置 portable Node.js + @deepseek-ai/dsh 全部依赖(已剔除 PDB 调试符号、类型声明、源地图等冗余),保证离线开箱即用。
📄 许可
MIT © DeepSeek Harness Desktop contributors
🙏 致谢
- deepseek-ai/deepseek-harness — DeepSeek Harness 本体
- electron / electron-builder
Install
Install the catalog once, then DeepSeek Harness can find and install any plugin from this site automatically:
dsh plugin add dshbase-catalog Then say "install deepseek-harness-desktop for me" — your agent finds it in the directory and installs it. Docs: dshbase-catalog · verified packs.
This plugin is GitHub source (not published to npm) — install it straight from the repo:
Web profile:
dsh plugin --profile web add github:cnskycn/deepseek-harness-desktop Headless (CLI) profile:
dsh plugin --profile headless add github:cnskycn/deepseek-harness-desktop Test report
Verified: L1 install + L2 load + L3 runtime from GitHub source on dsh 0.1.0-rc.6.
When to use it
Bring a new model, provider, or routing policy into the loop so dsh can pick the right brain for the job.
Who it's for
Users juggling multiple models or providers who want cost, quality, and latency balanced automatically.
For developers — extending it
Provider adapters and routing heuristics are the seams — add a backend, tune the fallback chain, or add per-task model selection.