DeepSeek Harness Hub
← 返回列表

桌面客户端壳vonPaulison/dsh-desktop

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

把网页版装进原生窗口,自动拉起服务并支持热更新

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/15 · 已提供中文文档

DeepSeek Harness (DSH) Web GUI 的 Electron 桌面外壳——启动捆绑的 DSH Web 服务器,并将其嵌入原生 Windows 窗口

综合分
27.5
GitHub 分
27.5
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add vonPaulison/dsh-desktop
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis-plugin-group@deepseek-ai/dsh@deepseek-ai/dsh-anonymous-user-id@deepseek-ai/dsh-atomic-write@deepseek-ai/dsh-bash-local@deepseek-ai/dsh-code-runtime@deepseek-ai/dsh-compaction@deepseek-ai/dsh-fs@deepseek-ai/dsh-invariants@deepseek-ai/dsh-output-retention@deepseek-ai/dsh-sandbox@deepseek-ai/dsh-scope
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

DSH Desktop

DeepSeek Harness (DSH) Web GUI 的 Electron 桌面壳。启动后自动拉起内置的
DSH web 服务,并把 http://127.0.0.1:3210 嵌进原生窗口。

工作原理

1. main.js 用 ELECTRON_RUN_AS_NODE=1 让 electron.exe 充当 Node 运行时,
直接执行内置的 @deepseek-ai/dsh/lib/bin.js web --port 3210。
2. 轮询本地端口直到 DSH web 服务就绪(最长 90 秒,首次运行会初始化
web profile 模板,可能较慢)。
3. 打开 BrowserWindow 加载该地址。
4. 退出时用 taskkill /T /F 清理整个 DSH 进程树。

打包产物完全自包含(asar: false),目标电脑无需安装 Node.js。
依赖清单中显式列出了全部 19 个 @deepseek-ai/dsh- 运行时包,
确保 electron-builder 的生产依赖收集不会漏掉 DSH 运行时所需的模块。

自动更新(v0.2)

启动后自动检查 npm registry 上官方 @deepseek-ai/dsh 的最新版本,与内置
版本做 semver 比较(含 -rc.N 预发布号)。有新版时:

- DSH 网页顶部注入一条更新横幅(「立即更新 / 忽略」)。
- 托盘菜单 → 「版本与更新」打开本地版本面板(ui/update.html),
显示当前/最新版本、检查/更新按钮和进度条。

热更新机制(无需 npm、无需 Node.js):

1. 只更新锁步的 @deepseek-ai/dsh 包(dsh + dsh-,约 186 个);
cordis / cosmokit / schemastery 等独立版本框架包保持不动。
2. 逐个从 registry 下载新版本 tarball,用 Windows 自带的 tar.exe 解压。
3. 停掉 DSH 进程 → 原子 rename 替换 → 重启 DSH 并刷新窗口,失败自动回滚。
4. 若新版本引入了当前树里没有的 dsh- 依赖,会自动补装。

局限:若新版本引入了全新的非 dsh-* 第三方依赖(罕见),需要重新打包
完整安装包。更新来源是 npm registry(官方版本权威源),非 GitHub Releases。

会话浮窗(v0.5)

全局快捷键呼出一个可自由拖动/调整大小的无边框浮窗(ui/quick.html),
实时展示每个会话的状态,点击会话即在主窗口打开对应对话,无需打开完整 GUI。

- 默认快捷键 Ctrl+Shift+Space,可在任意应用里呼出/收起。
- 数据走 DSH 磁盘存储($DSH_HOME/storages/session_projcache.json +
workspace.json,DSH 每 5 秒落盘一次)+ WS 事件流
(/api/events.mux 跟踪审批/运行状态),不依赖 HTTP /api、不改 GUI DOM。
- 每个会话显示状态:🟢 空闲 / 🔵 工作中 / 🟠 需要批准(有未决审批时)。
- 按工作区分组显示,标题来自会话投影缓存。
- 点击会话 → 主窗口显示并聚焦,注入导航脚本切换到对应会话
(data 属性 → aria/title 标签 → 文本匹配,多重策略兜底)。
- 拖标题栏移动浮窗,拖右下角调整大小,Esc 关闭。
- 关闭主窗口会最小化到托盘(DSH 保持常驻,快捷键随时可用);
托盘「退出」才真正退出并清理后台进程。

会话隔离(桌面端 vs 网页端)

桌面端使用专属独立的 DSH_HOME:默认 ~/.dsh-desktop(可用
DSH_DESKTOP_HOME 环境变量覆盖),与网页端/其他 DSH 实例物理隔离,
从根上避免两个实例并发读写同一会话导致的故障。桌面端不继承泛用的
DSH_HOME,即使网页端把它设成全局变量也不会再撞车。

- 首次启动自动把 ~/.dsh 里的凭据/设置(.credentials.yaml、
settings.yaml、.anonymous-user-id)迁移过来,无需重新配置模型。
- 旧会话不会被删除,仍留在 ~/.dsh;如需把某个桌面端旧会话带过来,
手动移动 ~/.dsh/sessions// 到 ~/.dsh-desktop/sessions/… 即可。
- 会话浮窗读的也是 ~/.dsh-desktop,所以浮窗列出的始终是桌面端自己的会话。

启动特效(v0.4)

启动时先显示软件 logo,随后 logo 炸裂成无数粒子飘散等待;主界面就绪后,
粒子重新聚拢形成主界面,最后无缝淡入完整界面(ui/splash.html 的
Canvas 粒子系统 + capturePage() 抓取主界面作为聚拢目标纹理)。

- 启动即出现 splash,DSH 后台启动期间粒子持续飘散并显示「正在启动 DSH…」。
- 主界面渲染完成后截图,粒子飞向目标坐标并逐格放大,拼出主界面马赛克,
再 crossfade 到真实窗口。
- 若截图失败会自动回退为「飘散 → 淡入」,不影响启动。

使用

开发运行

npm install
npm start

打包

npm run dist

产物输出到 dist/:

- DSH Desktop Setup 0.5.0.exe — NSIS 安装版(推荐)
- DSH Desktop-0.5.0-win.zip — 免安装绿色版,解压后直接运行 DSH Desktop.exe

环境变量

| 变量 | 默认值 | 说明 |
|---|---|---|
| DSH_PORT | 3210 | DSH web 服务端口(避免与已运行的 3080 实例冲突) |
| DSH_DESKTOP_HOME | ~/.dsh-desktop | 桌面端专属数据目录(与网页端隔离,覆盖默认值) |
| DSH_CWD | 用户主目录 | DSH 会话的工作区根目录(agent 文件操作的根) |
| DSH_QUICK_HOTKEY | CommandOrControl+Shift+Space | 会话浮窗全局快捷键 |
| DSH_SPLASH_SETTLE_MS | 1200 | 启动特效中主界面稳定等待(毫秒,截图前的 React 渲染缓冲) |
注意事项

- DSH web 首次启动会从模板自动初始化 profile,请耐心等待窗口出现。
- 本机若已有一个 dsh web 实例,两者端口不同,互不影响。
- 关闭窗口会最小化到托盘(DSH 常驻);托盘「退出」才真正退出并清理后台进程。
- 更新写入 node_modules;若把应用装在 Program Files(需要管理员权限
的目录),更新替换可能因权限不足失败,建议装到用户目录(默认 NSIS 行为)。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群