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

桌面客户端 iuikj/dsh-desktop

DeepSeek Harnessv0.2.0
iuikj81 天前有提交已提供中文文档扫描:含敏感能力

一个微调美观的DeepSeek harness客户端欢迎插件加入

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

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

自动兼容检查有告警:npm 同名包「dsh-desktop」归属 snowcrescenter-tech/dsh-desktop,装到的可能不是本插件。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add iuikj/dsh-desktop
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

npm 同名包「dsh-desktop」归属 snowcrescenter-tech/dsh-desktop,装到的可能不是本插件

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-desktop @ 0.2.0
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/30 15:49:25

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 35 处,展示前 25 条)
  • 读取本地文件
    main.js:55
    const raw = fs.readFileSync(configPath(), 'utf8')
  • 写入本地文件
    main.js:64
    fs.mkdirSync(app.getPath('userData'), { recursive: true })
  • 写入本地文件
    main.js:65
    fs.writeFileSync(configPath(), JSON.stringify(config, null, 2) + '\n', 'utf8')
  • 读取本地文件
    main.js:109
    const s = JSON.parse(fs.readFileSync(windowStatePath(), 'utf8'))
  • 写入本地文件
    main.js:122
    fs.mkdirSync(app.getPath('userData'), { recursive: true })
  • 写入本地文件
    main.js:123
    fs.writeFileSync(windowStatePath(), JSON.stringify(state), 'utf8')
  • 写入本地文件
    main.js:165
    fs.mkdirSync(logDir(), { recursive: true })
  • 写入本地文件
    main.js:166
    fs.appendFileSync(logFile(), text, 'utf8')
  • 读取本地文件
    main.js:340
    if (!fs.existsSync(iconPath)) return
  • 读取本地文件
    main.js:376
    if (fs.existsSync(flag)) return
  • 读取本地文件
    main.js:571
    const content = fs.readFileSync(logPath, 'utf8')
  • 发起网络请求
    server.js:51
    const req = http.request(
  • 发起网络请求
    server.js:85
    const req = http.request({ host, port, path: '/', method: 'GET', timeout: timeoutMs }, (res) => {
  • 执行外部命令来自配置/变量
    server.js:120
    const res = spawnSync(whichCmd, [name], { encoding: 'utf8', windowsHide: true })
  • 读取本地文件
    server.js:134
    if (process.env.DSH_NODE && fs.existsSync(process.env.DSH_NODE)) return process.env.DSH_NODE
  • 读取本地文件
    server.js:148
    if (c && fs.existsSync(c)) return c
  • 读取本地文件
    server.js:154
    if (process.env.DSH_NPM && fs.existsSync(process.env.DSH_NPM)) return process.env.DSH_NPM
  • 读取本地文件
    server.js:162
    if (fs.existsSync(cand)) return cand
  • 读取本地文件
    server.js:170
    if (process.env.DSH_NPX && fs.existsSync(process.env.DSH_NPX)) return process.env.DSH_NPX
  • 读取本地文件
    server.js:178
    if (fs.existsSync(cand)) return cand
  • 执行外部命令来自配置/变量
    server.js:229
    child = spawn(node, [bin, 'web', '--host', host, '--port', String(port)], {
  • 执行外部命令来自配置/变量
    server.js:242
    child = spawn(cmd, {
  • 执行外部命令来自配置/变量
    server.js:288
    const child = spawn(cmd, {
  • 执行外部命令固定命令
    server.js:332
    spawnSync('taskkill', ['/pid', String(pid), '/T', '/F'], { windowsHide: true })
  • 执行外部命令固定命令
    server.js:342
    spawnSync('taskkill', ['/pid', String(pid), '/T'], { windowsHide: true })
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库

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

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

界面预览

2 张 · 点击查看大图

功能亮点

  • 微调美观的客户端界面

README

由 DeepSeek 最新模型翻译生成
DeepSeek Harness 桌面端(dsh-desktop) 把 DeepSeek Harness 的本地 Web GUI(默认 http://127.0.0.1:3080)封装成 Electron 桌面应用,双击就能启动,独立窗口运行,跟独立软件一样。 截图 DeepSeek Harness 桌面端主窗口 DeepSeek Harness 桌面端 它能做什么 - 无缝窗口(全自绘标题栏):完全抛弃原生标题栏(frame: false),标题栏与侧边栏同色,连成 L 形整体面;文件/编辑/视图/窗口/帮助 纯文字菜单直接嵌进标题栏,右上角是自绘的最小化/最大化/关闭键;内容区是一张「浮起卡片」,左上角带圆角、略亮一档,底面颜色从圆角缺口透出;标题栏/侧边栏底色跟随主题(亮/暗)实时切换,观感浑然一体。 - 智能连接:启动时先探测目标端口是否已有服务在运行,有就直接加载,没有就自动启动。 - 自动安装 DSH:启动时检测本机是否已装 DeepSeek Harness,缺失且检测到 Node.js 时,按官方方式用 npx @deepseek-ai/dsh 自动下载并启动(带进度日志)。 - 自动启动服务:若服务未运行,自动用系统 Node.js 拉起 dsh web --host 127.0.0.1 --port 3080。
展开完整文档(README 剩余 1 节)
DeepSeek Harness 桌面端(dsh-desktop)

把 DeepSeek Harness 的本地 Web GUI(默认 http://127.0.0.1:3080)封装成 Electron 桌面应用,双击就能启动,独立窗口运行,跟独立软件一样。

截图

DeepSeek Harness 桌面端主窗口

DeepSeek Harness 桌面端

它能做什么

- 无缝窗口(全自绘标题栏):完全抛弃原生标题栏(frame: false),标题栏与侧边栏同色,连成 L 形整体面;文件/编辑/视图/窗口/帮助 纯文字菜单直接嵌进标题栏,右上角是自绘的最小化/最大化/关闭键;内容区是一张「浮起卡片」,左上角带圆角、略亮一档,底面颜色从圆角缺口透出;标题栏/侧边栏底色跟随主题(亮/暗)实时切换,观感浑然一体。
- 智能连接:启动时先探测目标端口是否已有服务在运行,有就直接加载,没有就自动启动。
- 自动安装 DSH:启动时检测本机是否已装 DeepSeek Harness,缺失且检测到 Node.js 时,按官方方式用 npx @deepseek-ai/dsh 自动下载并启动(带进度日志)。
- 自动启动服务:若服务未运行,自动用系统 Node.js 拉起 dsh web --host 127.0.0.1 --port 3080。
- 就绪等待页:服务冷启动 / 首次安装期间显示加载页与安装日志,就绪后自动跳转。
- 只清理自己启动的服务:退出时只杀掉由本应用启动的服务,不会误杀你已经手动启动的 Harness。
- 单实例:重复双击只聚焦到已有窗口,不会开多个窗口。
- 日志落盘:服务启动日志写入 userData/logs/dsh-server.log,方便排查。

目录结构

dsh-app/
├── main.js # Electron 主进程:窗口、菜单、启动编排、IPC ├── server.js # 服务生命周期 + 环境检测/安装:探测 / 启动 / 等待 / 清理 ├── preload.js # 上下文桥 + 标题栏无缝注入(预留窗口控制键空间、主题同步) ├── renderer/ │ └── loading.html # 启动加载页(含安装进度日志) ├── scripts/ │ ├── bootstrap-dsh.js # 独立 DSH 检测/安装脚本(供安装器调用) │ └── bootstrap-dsh.cmd # 定位 node 并调用上面的脚本 ├── build/ │ └── installer.nsh # NSIS 自定义安装阶段:检测并安装 DSH └── package.json # 脚本与 electron-builder 打包配置

环境要求

- Node.js(含 npm/npx,dsh 依赖系统 Node 运行,需能被 where node 找到)
- DeepSeek Harness 无需手动安装:应用启动时会自动探测,缺失就用 npx @deepseek-ai/dsh 自动下载

本地运行

npm install
npm start

打包

生成未打包目录(dist/win-unpacked),便于快速验证
npm run pack

生成安装包 + zip(NSIS 安装器)
npm run dist

安装器安装阶段会自动检测本机是否已装 DeepSeek Harness:已装就直接装应用;未装且能找到 Node.js/npx 时,会顺带用 npx @deepseek-ai/dsh 预下载;找不到 Node.js 就提示先装 Node.js(应用首次启动时也会再次尝试自动下载)。

配置

首次运行会在用户数据目录(Windows 为 %APPDATA%/deepseek-harness-desktop 或 %APPDATA%/<productName>,取决于 Electron 的 userData 解析)生成 config.json。
菜单「帮助 → 打开配置目录」可直接打开。字段如下:

{
"host": "127.0.0.1", // 服务监听地址 "port": 3080, // 服务端口 "autoStart": true, // 服务未运行时是否自动启动 "autoInstallDsh": true, // 未检测到 DeepSeek Harness 时是否自动安装 "killOnQuit": true, // 退出时是否杀掉由本应用启动的服务 "workspace": "", // 服务工作目录(空串 = 用户主目录) "nodePath": "", // node.exe 路径(空串 = 自动探测) "dshBin": "" // dsh lib/bin.js 路径(空串 = 自动探测) }

探测顺序

- nodePath:优先取 DSH_NODE 环境变量,其次 where node,最后常见安装路径。
- dshBin:优先取 DSH_BIN 环境变量,其次 $DSH_HOME/profiles/node_modules/@deepseek-ai/dsh/lib/bin.js,最后 where dsh 解析。

为什么不直接用 Electron 自带的 Node?Electron 内置 Node 的 ABI 与系统 Node 不同,
dsh 的原生模块(node-pty、sharp 等)按系统 Node 编译,因此必须用系统 node.exe 启动。

待完善(Roadmap)

- [ ] 代码签名(需购买代码签名证书,通过后免除 SmartScreen 警告)
- [ ] 无 Node.js 环境下的一键安装 Node.js
- [ ] macOS / Linux 打包实测(已加配置,未在真机验证)
- [ ] GitHub Release 自动更新端到端验证

Friendship Link

Thanks for the support and feedback from the friends at LINUX DO.
预览分享卡片长什么样 ↓iuikj/dsh-desktop
分享 · DeepSeek Harness Hub
iuikj/dsh-desktop

一个微调美观的DeepSeek harness客户端欢迎插件加入

回到顶部