🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

桌面客户端壳 g1998815/dsh-desktop-windows

DeepSeek Harness
g199881579 天前有提交已提供中文文档扫描:含敏感能力

双击即开托盘驻留,自动拉起并守护本地服务

27.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add g1998815/dsh-desktop-windows
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · desktop
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 79 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 7 处,展示前 7 条)
  • 执行外部命令固定命令
    src/server-manager.js:237
    return spawn("node", [dshEntry, "web", "--port", String(port)], {
  • 删除本地文件
    src/logger.js:15
    try { fs.unlinkSync(last); } catch { }
  • 写入本地文件
    src/logger.js:19
    try { fs.renameSync(from, to); } catch { }
  • 写入本地文件
    src/logger.js:21
    try { fs.renameSync(LOG_FILE, path.join(LOG_DIR, "main.log.1")); } catch { }
  • 写入本地文件
    src/logger.js:25
    fs.mkdirSync(LOG_DIR, { recursive: true });
  • 读取本地文件
    src/logger.js:32
    const stat = fs.statSync(LOG_FILE);
  • 写入本地文件
    src/logger.js:36
    fs.appendFileSync(LOG_FILE, line, "utf8");
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 双击即开
  • 托盘驻留
  • 服务守护

README

由 DeepSeek 最新模型翻译生成
DshDesktop — DSH 桌面版(Electron 壳) 用独立 Electron 桌面应用包装 DeepSeek Harness(DSH) Web 界面, 双击即开,托盘驻留,无需手动开浏览器输地址。 托盘驻留模式:关闭窗口最小化到托盘,托盘“退出”才真正停止服务。 壳不修改 DSH 本体(全局安装的 @deepseek-ai/dsh)与 ~/.dsh 配置,是独立可移植的小项目。 ✨ 功能特性 - 🖥️ 桌面窗口化:加载 http://127.0.0.1:3080,窗口即 DSH Web - 🧲 单实例锁:重复启动聚焦已有窗口,不会出现两个壳各自拉起服务 - 🔍 智能端口探测: - 3080 已是 DSH 服务 → 直接复用(不重复拉起) - 端口空闲 → 自动拉起 dsh web - 被其他程序占用 → 扫描 3081~3090 找空闲端口 - 🛡️ 服务守护:崩溃自动重启,指数退避(1s→30s 封顶),连续失败 5 次停止并提示 - 📌 托盘菜单:打开窗口 / 浏览器打开 / 重启服务 / 退出(退出只停自己拉起的服务) - 📝 日志落盘:~/.dsh-desktop/logs/main.log,超 1MB 轮转保留 5 份 - 📦 双形态打包:NSIS 安装版 + 便携版(见下方“打包为 exe”) 🚀 快速开始 环境要求
展开完整文档(README 剩余 1 节)
DshDesktop — DSH 桌面版(Electron 壳)

用独立 Electron 桌面应用包装 DeepSeek Harness(DSH) Web 界面, 双击即开,托盘驻留,无需手动开浏览器输地址。

托盘驻留模式:关闭窗口最小化到托盘,托盘“退出”才真正停止服务。
壳不修改 DSH 本体(全局安装的 @deepseek-ai/dsh)与 ~/.dsh 配置,是独立可移植的小项目。

✨ 功能特性

- 🖥️ 桌面窗口化:加载 http://127.0.0.1:3080,窗口即 DSH Web
- 🧲 单实例锁:重复启动聚焦已有窗口,不会出现两个壳各自拉起服务
- 🔍 智能端口探测:
- 3080 已是 DSH 服务 → 直接复用(不重复拉起)
- 端口空闲 → 自动拉起 dsh web
- 被其他程序占用 → 扫描 3081~3090 找空闲端口
- 🛡️ 服务守护:崩溃自动重启,指数退避(1s→30s 封顶),连续失败 5 次停止并提示
- 📌 托盘菜单:打开窗口 / 浏览器打开 / 重启服务 / 退出(退出只停自己拉起的服务)
- 📝 日志落盘:~/.dsh-desktop/logs/main.log,超 1MB 轮转保留 5 份
- 📦 双形态打包:NSIS 安装版 + 便携版(见下方“打包为 exe”)

🚀 快速开始

环境要求

| 依赖 | 说明 |
| Node.js ≥ 18 | 开发机已验证 v24 |
| 全局 DSH | 提供 dsh web / lib/bin.js,壳本身不包含 DSH |
| Windows | start.vbs + 托盘设计(跨平台需另行适配) |

安装与启动

npm install # 安装依赖(国内可设 ELECTRON_MIRROR 镜像)
npm start # 或双击 start.vbs(隐藏控制台窗口)

启动后自动完成:单实例锁 → 端口探测(复用/拉起/换端口)→ 轮询就绪(60s 超时)→ 创建窗口与托盘。

托盘使用

| 操作 | 行为 |
| 关闭窗口 | 隐藏到托盘,服务继续运行 |
| 打开窗口 | 显示并聚焦窗口 |
| 在浏览器打开 | 系统浏览器打开同一地址 |
| 重启服务 | 停止自拉起服务 → 重新拉起 → 窗口刷新 |
| 退出 | 确认后停止自己拉起的服务(外部服务不碰),退出 |

📦 打包为 exe

npm run build # 同时产出安装版 + 便携版
npm run build:nsis # 仅 NSIS 安装版(推荐日常使用,启动快)
npm run build:portable # 仅便携版(绿色免安装)

产物输出到 release/:

| 文件 | 说明 |
| DshDesktop--setup.exe | 安装版:向导式安装、可改目录、桌面+开始菜单快捷方式,启动秒开 |
| DshDesktop--portable.exe | 便携版:免安装,U 盘可带;每次启动解压到临时目录,启动略慢 |

国内网络下先设镜像再打包:

set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/
set ELECTRON_BUILDER_BINARIES_MIRROR=https://npmmirror.com/mirrors/electron-builder-binaries/
npm run build

🖥️ 部署到新机器

1. 新机器先安装全局 DSH:npm i -g @deepseek-ai/dsh(或 DSH 官方安装方式)
2. 安装 DshDesktop--setup.exe,或拷贝便携 exe 到任意目录双击运行
3. DSH 安装位置非默认路径时,设置环境变量后启动:
set DSH_DESKTOP_DSH_ENTRY=D:\path\to\dsh\lib\bin.js

4. 首次使用在 DSH Web 界面配置模型 API(如 DeepSeek API Key)——这是 DSH 自己的配置,壳不涉及、不存储任何密钥

exe 只是桌面壳,运行依赖目标机器的全局 DSH,不携带 DSH 本体。

🧪 测试

纯逻辑(端口状态判断、端口扫描选择、重启退避与次数限制)用 Node 内置 node:test 单测,不依赖 Electron:

npm test

📁 目录结构

dsh-desktop/
├── package.json # main: main.js;build 配置(electron-builder) ├── main.js # 入口:app 生命周期 / 单实例锁 / 窗口 / 托盘 ├── assets/ │ └── icon.png # 运行时窗口/托盘图标(替换即换图标) ├── build/ │ └── icon.png # 打包用应用图标(512x512) ├── src/ │ ├── server-manager.js # 端口探测、spawn+守护 dsh web、崩溃重启、换端口 │ └── logger.js # 日志落盘 ~/.dsh-desktop/logs/main.log(轮转 5 份) ├── start.vbs # 双击启动脚本(隐藏控制台窗口,调 electron .) ├── README.md ├── test/ │ └── server-manager.test.js # node:test 单测 └── release/ # 打包产物(已 gitignore)

📝 日志

统一落盘 ~/.dsh-desktop/logs/main.log,单文件超 1MB 轮转,保留 main.log + main.log.1 ~ main.log.4 共 5 份。

✅ 手动冒烟验证清单

桌面行为(托盘、关窗隐藏、退出联动)需手动验证。
- [ ] 双击 start.vbs 或运行 exe,窗口自动打开,页面正常
- [ ] 托盘出现图标;关闭窗口后进程仍在,托盘“打开窗口”可恢复
- [ ] 托盘“在浏览器打开”用系统浏览器打开同一地址
- [ ] 托盘“重启服务”:服务重启,窗口自动刷新
- [ ] 托盘“退出”:确认后进程完全退出
- [ ] 先手动启动 dsh web 再打开桌面版:复用已有服务(不重复拉起)
- [ ] 占用 3080 后打开桌面版:自动换到 3081+ 拉起
- [ ] 杀掉自拉起的 node 服务:观察自动重启(指数退避)
- [ ] 服务连续失败 5 次:弹提示,托盘仍可“重启服务”
- [ ] 查看日志有完整启动/退出记录

⚠️ 明确不做的(YAGNI)

- 不携带 DSH 本体(保持壳的独立性)
- 不做自动更新、开机自启、多语言
- 不修改 DSH 本体与 ~/.dsh 下的任何配置
- 不做签名(当前 exe 无代码签名,Windows SmartScreen 可能提示)

📄 License

MIT
预览分享卡片长什么样 ↓g1998815/dsh-desktop-windows
分享 · DeepSeek Harness Hub
g1998815/dsh-desktop-windows

双击即开托盘驻留,自动拉起并守护本地服务

这是你的仓库?认领条目

回到顶部