xiangshangya/deepseek-harness-desktop ↗★ 0
dsh-desktop
适用于 DeepSeek Harness 的 Electron 桌面应用程序——捆绑了 dsh Web 服务器及其 Web 前端。
AI 分析
核心用途是将 DSH 封装为开箱即用的桌面客户端。适合不希望手动配置 Node.js 环境、追求便捷安装和独立窗口运行 DSH 的普通用户。
安裝
此插件尚未提供可驗證的 bundle,或相容性檢查未通過。請先閱讀倉庫說明。 閱讀完整 README ↗
說明文件
閱讀完整 README ↗快速开始(开发模式)
要求:Node.js ≥ 22.19(或 ≥ 24)。本机已验证 Node v24.17.0。
cd dsh-desktop
npm install # 安装 electron + @deepseek-ai/dsh(含全部运行时依赖)
npm start # 启动应用
国内网络若 Electron 二进制下载慢/失败:已内置 .npmrc 指向 npmmirror 镜像,无需处理。
打包成安装程序(Windows)
npm run dist # 先构建 resources/server.zip,再产出 dist/DeepSeek Harness Desktop-0.1.0-setup.exe
产物为 NSIS 安装包,安装后可独立运行。安装包内已包含 DSH 服务与前端,目标机器 无需安装 Node(服务器可用系统 Node,或兜底用 Electron 内置 Node 24)。
两段式部署(安装快 + 插件系统兼容)
- 安装包只包含:应用外壳(main.js 等 3 个文件)+ Electron 运行时 + 一个
resources/server.zip(76MB,由npm run server:pack把 @deepseek-ai/dsh 全依赖树打成单文件归档)。安装时只需写少量文件,安装速度远快于逐文件解压 1.5 万个零散小文件。 - 首次启动时,应用把 server.zip 解压到
%APPDATA%\DeepSeek Harness Desktop\server\(真实文件目录)。解压是异步的, 加载窗口立即出现并显示进度(约 10–20 秒),之后启动直接复用,约 6 秒打开。 - 为什么不用 asar 打包服务器?DSH 的插件加载器会在 profile 目录建立指向安装目录
node_modules 的 junction(
healProfilesModuleFallback),junction 必须指向 磁盘上的真实目录——asar 归档内的虚拟路径在 OS 层不存在,导致所有@deepseek-ai/*包解析失败、服务器启动即退出(ERR_MODULE_NOT_FOUND)。 解压成真实文件后该机制正常工作。 - 版本升级:server.zip 内容版本(
SERVER_VERSION,main.js 中)变化时自动重新解压。
两段式部署(安装快 + 插件系统兼容)
- 安装包只包含:应用外壳(main.js 等 3 个文件)+ Electron 运行时 + 一个
resources/server.zip(76MB,由npm run server:pack把 @deepseek-ai/dsh 全依赖树打成单文件归档)。安装时只需写少量文件,安装速度远快于逐文件解压 1.5 万个零散小文件。 - 首次启动时,应用把 server.zip 解压到
%APPDATA%\DeepSeek Harness Desktop\server\(真实文件目录)。解压是异步的, 加载窗口立即出现并显示进度(约 10–20 秒),之后启动直接复用,约 6 秒打开。 - 为什么不用 asar 打包服务器?DSH 的插件加载器会在 profile 目录建立指向安装目录
node_modules 的 junction(
healProfilesModuleFallback),junction 必须指向 磁盘上的真实目录——asar 归档内的虚拟路径在 OS 层不存在,导致所有@deepseek-ai/*包解析失败、服务器启动即退出(ERR_MODULE_NOT_FOUND)。 解压成真实文件后该机制正常工作。 - 版本升级:server.zip 内容版本(
SERVER_VERSION,main.js 中)变化时自动重新解压。
方式 A:源码已构建(pnpm install && pnpm run build 之后)
set DSH_ROOT=D:\deepseek-harness-master npm start
方式 B:未构建的源码(该目录需先 pnpm install,用 tsx 直接跑 TS)
set DSH_ROOT=D:\deepseek-harness-master set DSH_DESKTOP_PORT=3080 npm start
主进程会优先用 /apps/cli/lib/bin.js(已构建)或
/apps/cli/src/bin.ts(源码 + tsx)。
## 常用环境变量
| 变量 | 作用 |
| --- | --- |
| DSH_DESKTOP_PORT | 固定服务器端口(默认 0 = 自动) |
| DSH_ROOT | 指向 DSH 源码/安装目录,用本地代码启动 |
| DSH_NODE | 指定服务器使用的 node 可执行文件 |
| DSH_HOME | DSH 用户数据目录(默认 ~/.dsh),沿用 CLI 语义 |
| DSH_TELEMETRY_DISABLED | 关闭遥测(任意非空值) |
## 日志
- 控制台:npm start(从终端启动)时,服务器 stdout/stderr 直接透传到终端,
可看到 dsh web: http://127.0.0.1:
就绪行。
- 文件:无论从终端还是双击启动,日志都会写入
%APPDATA%\DeepSeek Harness Desktop\logs\dsh-server.log(超过 5MB 自动轮转为 .old)。
打包版从资源管理器双击启动时没有控制台,请从这里查看日志。
> 注意:双击启动的打包版没有控制台,Electron 主进程不会向已断开的 stdout 写入
> (已加 EPIPE 防护),因此不会有 "A JavaScript error occurred in the main process" 弹窗。
## 安全说明
- 渲染窗口 contextIsolation: true、nodeIntegration: false、sandbox: true,
不注入 preload,窗口只是本地服务器的纯浏览器视图;
- 外部链接一律交给系统浏览器打开,禁止窗口内跳转到非本机地址;
- 服务器默认只绑定 127.0.0.1(DSH 官方默认,--host 0.0.0.0 被官方禁用)。
## 应用图标
- 图标源:build/icon.svg(DSH 官方鲸鱼标志,即网页 favicon.svg);
- 已渲染为 build/icon.png(512x512,深色底 + 白色标志,任务栏/安装包/快捷方式均可见);
- 修改图标:替换 build/icon.svg 后运行 `node scripts/make-icon.mjs`,再 `npm run dist`。
## 已知限制 / 后续可做
- Windows 上退出时用 taskkill /T /F 结束服务器进程树(SIGTERM 在 Windows 上无法
触发 Node 信号处理),会话数据为增量写入,不影响持久化。
- 未做自动更新(可接入 electron-updater)。
- macOS/Linux 打包目标已在配置中预留,未在本机验证。