← 返回列表
未验证
Windows 桌面版 DeepSeek Harness —— 一键启动的 Electron 桌面封装,内嵌 DSH…
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/14 · 已提供中文文档
Windows 桌面版 DeepSeek Harness —— 一键启动的 Electron 桌面封装,内嵌 DSH 服务器与 Web GUI(非官方)
综合分
29.7
GitHub 分
29.7
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add moonlight273/dsh-desktop该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/17(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
DeepSeek Harness Desktop(桌面版)
把 DeepSeek Harness 变成 Windows 桌面软件:Electron 应用内嵌启动 DSH 服务器,
并在独立窗口中显示 DSH 的 Web GUI,无需手动开终端、无需自己敲 dsh web。
非官方项目声明
本项目是第三方桌面封装(wrapper),不是 DeepSeek 官方产品,与 DeepSeek 官方无隶属或背书关系。
名称中的 "DeepSeek Harness" 指向上游开源项目 @deepseek-ai/dsh(MIT 许可)。
本项目自身代码同样以 MIT 许可发布(见 LICENSE),应用图标为自制,非官方商标素材。
使用本软件仍需自行准备 DeepSeek API 凭据,并遵守上游项目与 DeepSeek 平台的服务条款。
特性
- 一键启动:自动探测本机已装的 dsh(或使用自包含捆绑运行时),启动 dsh --profile web
- 智能端口:默认 3080,被占用时自动改用 OS 分配端口,无需手动处理冲突
- 版本感知:系统 dsh 与捆绑运行时谁新用谁——升级全局 dsh 即自动跟随,无需重新打包
- 桌面集成:独立窗口 + 应用菜单(在浏览器打开 / 重启服务器 / 服务器日志 / 退出)
- 日志面板:内嵌查看 DSH 服务器 stdout/stderr
- 干净退出:关闭应用时清理 DSH 服务器进程树
- 隐私:启动时禁用 DSH 遥测(DSH_TELEMETRY_DISABLED=1)
界面预览
应用窗口内即 DSH 的 Web GUI(原生窗口 + 应用菜单,无浏览器地址栏):
DSH GUI in the desktop window
目录结构
dsh-desktop/
├── src/
│ ├── main.js # Electron 主进程:探测运行时、spawn 服务器、窗口管理
│ ├── preload.js # contextBridge 安全桥
│ └── renderer/ # 启动页 / 错误页 / 日志窗口
├── scripts/
│ ├── make-icon.ps1 # 生成应用图标(icon.png / icon.ico)
│ └── build-runtime.mjs # 构建自包含运行时(纯 Node:拷贝 node + dsh 安装树 + home 模板)
├── assets/ # 图标
├── resources/ # 自包含运行时(由 build-runtime.mjs 生成,不入库)
└── release/ # electron-builder 打包产物
快速开始(开发模式)
cd dsh-desktop
npm install # 安装 electron / electron-builder
npm start # 启动桌面应用(自动探测系统 dsh)
首次启动会在系统托盘/任务栏出现窗口;默认使用本机 ~/.dsh 作为 DSH_HOME。
冒烟测试(无窗口)
npm run smoke # 等价于: electron . --smoke --no-window
只启动服务器、等待就绪、探测 HTTP 可达后退出;stdout 输出 DSH_DESKTOP_SMOKE_OK 。
带窗口 + 截图的完整验证:
electron . --smoke --home --shot
模拟打包布局(用本机构建的 resources 验证捆绑运行时):
$env:DSH_DESKTOP_RESOURCES = "D:\harry\Documents\dsh-desktop\resources"
electron . --smoke --no-window
自包含打包(不依赖用户已装的 dsh)
1) 构建运行时(下载 node 官方包 + 拷贝全局 dsh 安装 + 制作 home 模板)
npm run build:runtime
2) 打包安装版(NSIS)与便携版
npm run dist
打包后的应用优先使用 resources/dsh-runtime 中的捆绑运行时与
resources/dsh-home-template 模板(首次运行时复制到 %APPDATA%\dsh-desktop\home);
未捆绑时自动回退到系统已安装的 dsh。
配置
配置文件位于 %APPDATA%\dsh-desktop\config.json(或打包版 userData 目录):
{
"port": 3080,
"dshHome": null,
"nodePath": null,
"dshBin": null,
"autoOpenBrowser": false
}
- port:首选端口(0 = 总是让 OS 分配)
- dshHome:自定义 DSH_HOME(默认:捆绑模式 userData/home,系统模式 ~/.dsh)
- nodePath / dshBin:自定义 Node 可执行与 dsh 入口(自动探测失败时使用)
工作原理(学习笔记)
1. 运行时探测(版本感知):比较系统全局 dsh(%APPDATA%\npm\node_modules\@deepseek-ai\dsh)
与捆绑运行时(process.resourcesPath/dsh-runtime)的版本,取较新者:
升级全局 dsh 后桌面版自动跟随;接收者机器无全局 dsh 时自动使用捆绑运行时。
可用配置 runtimeMode 强制 system / bundled。
2. 启动服务器:node /lib/bin.js --profile web --port ,继承环境并注入
DSH_HOME,关闭遥测;dsh ≥ 0.1.1-rc.2 追加 --no-open(否则新版会尝试打开默认浏览器)。
3. 就绪检测:解析服务器 stdout 中的 dsh web: http://127.0.0.1: 行
(--port 0 时这是唯一能拿到实际端口的方式),再轮询 HTTP 兜底。
4. 窗口:就绪前显示启动页(本地文件),就绪后 loadURL 加载 GUI。
5. 清理:before-quit 时 taskkill /PID /T /F 杀掉整棵进程树。
开发:推送到 GitHub
常规方式:git push -u origin main
当 github.com:443 被网络阻断时(现象:Could not connect to server、
RPC failed; curl 55 Send failure),可用内置的 API 推送脚本——它走
api.github.com(通常不受影响),凭据复用 Git Credential Manager 已保存的登录:
npm run push # 等价于 node scripts/push-via-api.mjs
node scripts/push-via-api.mjs --dry-run # 先看会推送哪些文件
脚本流程:blobs → tree → commit → 更新分支引用,并自动处理空仓库场景。
提交历史仍是标准的 Git 提交(沿用本地提交信息与作者)。
已知限制
- 关闭应用时强制结束 DSH 服务器进程(Windows 无优雅信号通道);会话数据为 JSONL
持久化,已写入的内容不会丢失。
- 自包含 home 模板默认拷贝本机 ~/.dsh(含凭据与会话),仅限个人使用,切勿分发;
分发/公开请用 node scripts/build-runtime.mjs --sanitize。
- 全局 dsh 版本低于捆绑版本时以捆绑为准(runtimeMode: "auto"),如需强制跟随系统
请设为 "system"。
- 仅支持 Windows(目标平台)。扫码进群