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

桌面客户端 StrayBird-excellent/dsh-desktop

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

把 dsh 网页界面装进独立桌面窗口,配置互不干扰

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

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

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

状态速览

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

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

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 20 处,展示前 20 条)
  • 发起网络请求
    main.js:59
    const req = http.get({ host: HOST, port, path: '/', timeout: 2000 }, (res) => {
  • 读取本地文件
    main.js:92
    if (fs.existsSync(bundled)) return bundled;
  • 写入本地文件
    main.js:106
    if (path.isAbsolute(nodeExe)) fs.chmodSync(nodeExe, 0o755);
  • 读取本地文件
    main.js:111
    if (fs.existsSync(rg)) fs.chmodSync(rg, 0o755);
  • 写入本地文件
    main.js:120
    fs.mkdirSync(dir, { recursive: true });
  • 写入本地文件
    main.js:121
    logStream = fs.createWriteStream(path.join(dir, 'dsh-server.log'), { flags: 'a' });
  • 执行外部命令固定命令
    main.js:160
    spawnSync('taskkill', ['/PID', String(pid), '/T', '/F'], {
  • 执行外部命令固定命令
    main.js:165
    spawnSync('kill', ['-TERM', String(pid)], { stdio: 'ignore' });
  • 执行外部命令来自配置/变量
    main.js:189
    serverProc = spawn(
  • 读取本地文件
    main.js:238
    icon: fs.existsSync(iconPath) ? iconPath : undefined,
  • 写入本地文件
    build/mac-after-pack.js:24
    fs.mkdirSync(dest, { recursive: true });
  • 读取本地文件
    build/mac-after-pack.js:25
    for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
  • 写入本地文件
    build/mac-after-pack.js:29
    else fs.copyFileSync(s, d);
  • 写入本地文件
    build/mac-after-pack.js:35
    fs.chmodSync(file, 0o755);
  • 读取本地文件
    build/mac-after-pack.js:51
    if (!fs.existsSync(appBundle)) {
  • 写入本地文件
    build/mac-after-pack.js:62
    fs.mkdirSync(resourcesNode, { recursive: true });
  • 写入本地文件
    build/mac-after-pack.js:63
    fs.copyFileSync(nodeSrc, path.join(resourcesNode, 'node'));
  • 写入本地文件
    build/mac-after-pack.js:64
    fs.copyFileSync(licenseSrc, path.join(resourcesNode, 'LICENSE'));
  • 读取本地文件
    build/mac-after-pack.js:80
    if (!fs.existsSync(src)) throw new Error(`[mac-after-pack] 缺少 ${src}`);
  • 读取本地文件
    build/mac-after-pack.js:83
    if (fs.existsSync(rg)) chmod755(rg);
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh@deepseek-ai/cordis-plugin-group@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

由 DeepSeek 最新模型翻译生成
DeepSeek Harness 桌面版(dsh-desktop) 把 @deepseek-ai/dsh 的 dsh web 浏览器界面封装成 Windows / macOS 桌面应用,图标使用 DeepSeek 小鲨鱼(鲸鱼)logo。 工作原理 ┌─────────────────────────────────────────────┐ │ Electron 主进程 (main.js) │ │ │ │ 1. 探测空闲端口(127.0.0.1) │ │ 2. 用应用内置的 node.exe 启动 dsh web │ │ (resources/node/node.exe,与网页版同环境) │ │ 3. 轮询 HTTP 直到服务器就绪 │ │ 4. 窗口加载 http://127.0.0.1:X/ │ │ 5. 退出时 taskkill /T 清理 dsh 进程树 │ └─────────────────────────────────────────────┘ 为什么内置 node.exe:dsh 的目录选择器等插件用 koffi(原生 FFI)调 Windows COM,必须跑在真正的 Node 运行时里;Electron 的 node 模式加载 koffi 会原生崩溃(表现为 "win32 folder dialog worker exited")。
展开完整文档(README 剩余 1 节)
DeepSeek Harness 桌面版(dsh-desktop)

把 @deepseek-ai/dsh 的 dsh web 浏览器界面封装成 Windows / macOS 桌面应用,图标使用 DeepSeek 小鲨鱼(鲸鱼)logo。

工作原理

┌─────────────────────────────────────────────┐
│ Electron 主进程 (main.js) │ │ │ │ 1. 探测空闲端口(127.0.0.1) │ │ 2. 用应用内置的 node.exe 启动 dsh web │ │ (resources/node/node.exe,与网页版同环境) │ │ 3. 轮询 HTTP 直到服务器就绪 │ │ 4. 窗口加载 http://127.0.0.1:X/ │ │ 5. 退出时 taskkill /T 清理 dsh 进程树 │ └─────────────────────────────────────────────┘

为什么内置 node.exe:dsh 的目录选择器等插件用 koffi(原生 FFI)调 Windows COM,必须跑在真正的 Node 运行时里;Electron 的 node 模式加载 koffi 会原生崩溃(表现为 "win32 folder dialog worker exited")。内置 node(MIT 协议,附 LICENSE)后,桌面版与网页版的运行环境完全一致。

- 界面就是官方 dsh web 界面本身,功能与浏览器版完全一致;
- 与网页版完全隔离:桌面版使用独立的配置目录 %APPDATA%\dsh-desktop\home,不读取也不写入网页版的 ~\.dsh —— API Key、会话、设置各自独立,两个版本同时运行互不干扰(早期版本共享目录曾导致会话日志交叉写入损坏);
- 首次启动:因为是全新配置,界面里会让你配置 API Key(设置 → 供应商/密钥),只需配置一次,之后保存在桌面版自己的目录里;
- 每次启动自动挑空闲端口,不占用 3080;
- 关闭窗口 = 最小化到系统托盘后台运行(托盘图标可恢复窗口或彻底退出);
- 外部链接自动交给系统默认浏览器打开。

为什么关闭 asar 打包(asar: false):dsh 每次启动会在 ~/.dsh/profiles/node_modules 里为依赖包创建 junction(目录链接)作为模块解析回退;junction 只能指向真实目录,无法指向 asar 虚拟路径。保持 node_modules 为真实目录后,桌面应用与命令行版 dsh 可以交替使用同一份配置,各自启动时会自动把链接修正回自己的安装位置。

目录结构

dsh-desktop/
├── main.js # Electron 主进程 ├── package.json # 依赖与 electron-builder 配置 ├── assets/ │ ├── whale.svg # DeepSeek 鲸鱼原始矢量(来自 dsh-web-frontend) │ ├── loading.html # 启动加载页 │ ├── icon.ico / icon.png # 应用图标(由 scripts/make-icon.mjs 生成) ├── scripts/make-icon.mjs # 图标生成脚本 ├── build/ # 构建资源(icon.ico / icon.png) └── release/ # 打包产物输出目录

开发与构建

开发调试(需要先 npm install)
npm start

重新生成应用图标(改 assets/whale.svg 后)
npm run icons

只打包目录(快速验证)
npm run pack

打包安装程序:NSIS 安装包 + 免安装 portable
npm run dist

构建前需准备内置 Node 运行时(体积较大,已加入 .gitignore,不随源码分发): Windows 版需 node-runtime/node.exe;macOS 版需 node-runtime/darwin-{arm64,x64}/node 与 darwin 原生模块,下载与交叉构建步骤见 README-mac.md,可用 node scripts/download.mjs 断点续传下载。

产物在 release/:

- DeepSeek Harness-Setup-0.1.0.exe —— 安装版(可选安装目录、创建桌面/开始菜单快捷方式)
- DeepSeek Harness-Portable-0.1.0.exe —— 免安装版(双击即用)

macOS 版

macOS 版安装包(release/DeepSeek Harness-0.1.0-mac-{arm64,x64}.zip,Apple Silicon 选 arm64、Intel 选 x64)的安装与首次打开(未签名,需右键打开 / ad-hoc 签名)说明见 README-mac.md。
macOS 版在 Windows 上交叉构建(electron-builder 官方禁止,本项目以预解压 + 补丁 + 自写 zip 方式实现),步骤见 README-mac.md「从源码重新构建」。

运行时信息

- 应用数据目录:%APPDATA%\dsh-desktop\
- 日志:%APPDATA%\dsh-desktop\logs\dsh-server.log(dsh 启动失败时看这里)
- 独立 dsh 配置目录:%APPDATA%\dsh-desktop\home(API Key、会话都在这里,与网页版 ~\.dsh 互不相通)
- 调试用环境变量:
- DSH_DESKTOP_PORT=12345 —— 固定端口(默认自动选空闲端口)
- DSH_DESKTOP_HOME=D:\tmp\dsh-home —— 临时覆盖独立配置目录(测试用)
- DSH_DESKTOP_NO_DIALOG=1 —— 启动失败时静默退出,不弹窗(测试用)

协议与版权说明

- 本项目 MIT 协议;@deepseek-ai/dsh 为 MIT 协议(© DeepSeek)。
- 鲸鱼 logo 矢量取自 @deepseek-ai/dsh-web-frontend 的 favicon(MIT)。
- DeepSeek 名称与鲸鱼标志为 DeepSeek 商标,本应用为非官方封装,仅供学习使用。
预览分享卡片长什么样 ↓StrayBird-excellent/dsh-desktop
分享 · DeepSeek Harness Hub
StrayBird-excellent/dsh-desktop

把 dsh 网页界面装进独立桌面窗口,配置互不干扰

回到顶部