sjscy05
dsh-desktop
No description
- Stars
- 0
- Language
- PowerShell
- Created
- Aug 14, 2026
- Updated
- Aug 14, 2026
Introduction
DSH Desktop — DeepSeek Harness 的 Windows 桌面应用
A real Windows desktop application for DeepSeek Harness. 单文件便携版
dsh.exe引擎 + Electron 应用壳:自己的窗口、托盘常驻、首次运行 API Key 向导。 无需安装 Node.js,双击即用。
特性
- 真正的应用:原生窗口(1280×860 可调)承载完整 Web GUI,任务栏/托盘图标,无控制台窗口
- 免安装引擎:内嵌单文件
dsh.exe(Node 24 + 完整插件闭包,pkg SEA 打包),目标机器零依赖 - 首次运行向导:无 API Key 时弹出设置窗(填 Key + 选默认模型),写入
~/.dsh/.credentials.yaml+settings.yaml;托盘菜单随时可改 - 零端口冲突:
--port 0自动分配,与开发 GUI(3080)共存 - 共享数据:使用真实
~/.dshhome —— 凭据、会话、设置与 CLI/开发 GUI 通用 - 干净退出:退出时整棵进程树清理,无孤儿服务器
- 两种交付:便携版单 exe + NSIS 安装版(可选安装目录、开始菜单快捷方式)
快速开始
| 想要 | 用 |
|---|---|
| 便携版 | app/dist/DSH-Desktop-0.1.0.exe(或从 Releases 下载) |
| 安装版 | app/dist/DSH-Desktop-Setup-0.1.0.exe |
| 自己构建 | 见下方 Build |
首次启动会在几秒内解压内嵌引擎;若 ~/.dsh 无凭据则先弹初始化向导。
仓库结构
engine/ dsh.exe 引擎构建管线:npm 闭包 + pkg --sea + 7 个快照兼容补丁 + 图标嵌入
app/ Electron 应用壳:主进程、托盘、首启向导、electron-builder 打包
两者是同一个产品的两半:engine/ 产出 dist/dsh.exe(218 MB 单文件引擎),
app/ 把它作为 extraResource 嵌进桌面应用。
Build(Windows)
# 1. 引擎
cd engine
npm ci # 530 个包,扁平闭包(必须 npm,pkg 不吃 pnpm 符号链接)
powershell -ExecutionPolicy Bypass -File build.ps1 # 自动打补丁 + pkg --sea → dist/dsh.exe
powershell -ExecutionPolicy Bypass -File smoke-test.ps1 # 冒烟:隔离 home 起 web profile 验证
# 2. 桌面应用
cd ../app
Copy-Item ..\engine\dist\dsh.exe resources\dsh.exe
$env:ELECTRON_MIRROR = "https://npmmirror.com/mirrors/electron/" # 国内网络加速(可选)
$env:ELECTRON_BUILDER_BINARIES_MIRROR = "https://npmmirror.com/mirrors/electron-builder-binaries/"
$env:CSC_IDENTITY_AUTO_DISCOVERY = "false"
npm ci
npx electron-builder --win portable # app/dist/DSH-Desktop-<ver>.exe
npx electron-builder --win nsis # app/dist/DSH-Desktop-Setup-<ver>.exe
CI(.github/workflows/build.yml)在 tag 推送时自动产出三个产物并上传 Release。
构建注意事项(踩过的坑,都在文档里)
- 重构建前关闭运行中的应用:Windows 锁定运行中的 exe,electron-builder 会无限等待 "output file is locked"
- 引擎打包前必须跑
apply-patches.ps1(build.ps1 自动调用)—— 7 个 pkg 快照兼容补丁,缺一不可(详见engine/README.md) -mx=9压缩 400 MB 载荷要几分钟,是正常进度不是卡死- 换图标:
powershell -File engine/embed-icon.ps1 <你的.png>
已知限制
- 引擎内插件一律从快照解析;
dsh plugin add安装的第三方插件在桌面版下不可用(开发 CLI 不受影响) - 不要在两个进程里同时打开同一个会话(桌面版 + 开发 GUI):会话日志是追加式、无跨进程锁,双写会损坏 seq;同会话损坏可用
app/repair-session.js无损修复 - 真实终端(node-pty)场景未在快照下验证(win32 web/headless profile 不加载它)
- 应用与 exe 图标为临时 AI 生成素材(
app/assets/dsh.ico),正式发布前建议替换为原创图标
致谢
- DeepSeek Harness(MIT)—— 引擎与全部插件
- @yao-pkg/pkg(MIT)—— 单文件 SEA 打包
- Electron / electron-builder —— 应用壳