DeepSeek Harness Hub
← 返回列表

longyu065/dsh-desktop

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

把 DeepSeek Harness Web GUIdsh web,本地…

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

DeepSeek Harness Web GUI 的桌面外壳——自动安装 dsh,原生 macOS 托盘,为 macOS 和 Windows 打包。

综合分
28.1
GitHub 分
28.1
用户评分
★ Stars
2
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add longyu065/dsh-desktop
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-desktop

License: MIT
Version
[Platform]()
[Electron]()

把 DeepSeek Harness Web GUI(dsh web,本地 127.0.0.1:3080)包装成桌面应用(Electron 壳)。
拿来即用:下载打包好的应用,双击打开——没有 dsh 会自动安装。系统无需预装 Node.js(使用 Electron 内置运行时)。

功能特性

- 🚀 开箱即用:自动定位/安装 dsh(@deepseek-ai/dsh),无需任何前置配置
- 🖥️ 原生桌面体验:独立窗口 + macOS 菜单栏托盘(点红点隐藏、托盘显示/隐藏/退出)
- 🔄 智能服务管理:复用已有 dsh web 实例;没有则自动拉起服务,退出应用时结束自己拉起的服务
- 🐋 DeepSeek 官方图标:应用图标与托盘图标均为官方鲸鱼标识
- 📦 一键打包:electron-builder 产出 macOS .app / dmg / zip 与 Windows NSIS 安装包 / zip

原理

- npm start 先执行 scripts/ensure-dsh.js:
1. 定位 dsh(resolveDshBin,顺序):DSH_BIN 环境变量 → PATH 中的 dsh →
~/.npm/_npx/*/node_modules/.bin/dsh → 常见安装位置 → 工程内 vendor/dsh;
2. 没有 dsh → 自动安装(ensureDshBin):npm install --prefix vendor/dsh @deepseek-ai/dsh,
装进工程内 vendor/,不污染全局、不依赖用户 PATH(首次约 1-2 分钟);
3. 探测 127.0.0.1:3080——已有实例(命令行/本 GUI 启动的)→ "直接复用";
没有 → spawn(dsh, ['web']) 拉起常驻服务(detached,日志落 logs/),轮询就绪后启动 Electron。
- Electron 只当客户端:加载页面、托盘常驻(点红点隐藏,托盘菜单显示/隐藏/退出)。
- 退出 Electron 时结束本应用拉起的 dsh web(通过 logs/dsh-web.pid 精确停止,并校验进程确为 dsh,防止 pid 复用误杀)。
外部启动的实例(如终端命令行启动的)不受影响。
- 直接 electron .(npm run start:raw,跳过前置脚本)时,主进程也会兜底定位/安装/拉起。

开发运行

cd dsh-desktop
npm install        # 安装 electron(含二进制下载)
npm start          # 自动定位/安装 dsh → 确保服务在跑 → 打开桌面应用

手动指定 dsh:DSH_BIN=/path/to/dsh npm start。安装日志在 vendor/dsh 安装时的终端输出,
运行日志在 logs/dsh-web.{stdout,stderr}.log。

安装时的两个环境变通点(部分机器曾遇到)

1. ~/.npm 缓存目录被 root 占用会导致 npm install 报 EPERM。临时方案:
npm install --cache /path/to/writable/npm-cache
2. Electron 二进制下载默认写 ~/Library/Caches/electron,若不可写,用
electron_config_cache 指定替代缓存目录(install.js 读取的是这个变量,不是 ELECTRON_CACHE):
electron_config_cache=/path/to/.electron-cache node node_modules/electron/install.js

日常 npm start 在正常终端环境下无需这些变通。

打包

npm run dist        # macOS:dmg + zip
npm run dist:win    # Windows:NSIS 安装包 + zip(可从 macOS 交叉编译)
npm run dist:all    # 两者都打

打包说明:

- 开发/日常使用直接 npm start 即可;
- 发布版打包时不包含 vendor/dsh(体积大),目标机器首次 npm start 会自动安装。
如需完全离线自包含,可发布前把 vendor/dsh 一并打进 extraResources,并在主进程按
process.resourcesPath 解析后传给 DSH_BIN。

目录结构

dsh-desktop/
├── package.json        # electron 依赖 + start/dist 脚本 + 打包配置
├── scripts/
│   ├── ensure-dsh.js   # start 前置:定位/安装 dsh → 探测 3080 → 无则拉起常驻服务
│   └── dsh-server-lib.js # 公共逻辑:dsh 定位/自动安装 / 端口探测 / 等待就绪 / 拉起
├── electron/
│   ├── main.js         # 主进程:兜底定位/安装/拉起、窗口、托盘(不管理服务生命周期)
│   └── preload.js      # 最小预加载桥(只读版本信息)
├── vendor/dsh/         # 自动安装的 dsh(首次 start 生成,可删,下次会自动重装)
├── logs/               # dsh web 运行日志与 pid(运行时生成)
├── build/              # 应用图标(icon.icns / icon.ico / icon.png)
└── release/            # 打包产物(electron-builder 输出)

License

MIT © 2026 tiankunrui

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

同作者(longyu065)的其他插件

💬 加入 DPharness 群聊

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

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