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

桌面客户端 mkt-agents/dsh-desktop

DeepSeek Harness
mkt-agents60 天前有提交已提供中文文档扫描:高危

一键安装桌面端,免配置直接运行 DSH

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

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

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

状态速览

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

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0
🔴 扫描:高危尚无人工评估

静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。

安装时即执行脚本命令参数由运行时变量拼接读写/删除本地文件读取剪贴板或密钥环境变量写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 55 处,展示前 42 条)
  • 执行外部命令运行时拼接
    main.js:80
    const result = execSync(`"${bundledNode}" --version`, { encoding: "utf8", stdio: "pipe" });
  • 执行外部命令运行时拼接
    main.js:97
    const result = execSync(`"${cmd}" --version`, { encoding: "utf8", stdio: "pipe" });
  • 读取本地文件
    main.js:113
    if (fs.existsSync(bundled)) {
  • 读取本地文件
    main.js:131
    if (fs.existsSync(p)) {
  • 读取本地文件
    main.js:143
    if (fs.existsSync(userBin)) {
  • 读取本地文件
    main.js:148
    const userPkg = JSON.parse(fs.readFileSync(path.join(USER_DSH_DIR, "package.json"), "utf8"));
  • 读取本地文件
    main.js:149
    const bundledPkg = JSON.parse(fs.readFileSync(path.join(path.dirname(DSH_BIN), "..", "package.json"), "utf8"));
  • 执行外部命令固定命令
    main.js:247
    const out = execSync(`netstat -ano -p tcp | findstr "127.0.0.1:" | findstr "LISTENING"`, { windowsHide: true }).toString();
  • 读取本地文件
    main.js:262
    if (!fs.existsSync(installedExe)) {
  • 执行外部命令固定命令
    main.js:264
    const out = execSync('powershell -Command "Get-Process | Where-Object {$_.ProcessName -eq \'DSH Desktop\' -and $_.Path -like \'*DSH Desktop*\'} | Sele
  • 执行外部命令固定命令
    main.js:272
    const out = execSync(`netstat -ano -p tcp | findstr "127.0.0.1:" | findstr "LISTENING"`, { windowsHide: true }).toString();
  • 发起网络请求
    main.js:316
    http.get(`http://127.0.0.1:${port}`, (res) => {
  • 写入本地文件
    main.js:350
    fs.mkdirSync(compileCacheDir, { recursive: true });
  • 执行外部命令来自配置/变量
    main.js:365
    dshProcess = spawn(NODE_BIN, dshArgs, {
  • 发起网络请求
    main.js:808
    const req = http.get(url, (res) => {
  • 写入剪贴板
    main.js:855
    await clipboard.writeText(text);
  • 读取剪贴板
    main.js:865
    return clipboard.readText();
  • 发起网络请求
    dsh-updater.js:110
    https.get(url, { headers: { "User-Agent": USER_AGENT, Accept: "application/json" } }, (res) => {
  • 写入本地文件
    dsh-updater.js:156
    const file = fs.createWriteStream(destPath);
  • 发起网络请求
    dsh-updater.js:157
    const req = https.get(url, { headers: { "User-Agent": USER_AGENT } }, (res) => {
  • 写入本地文件
    dsh-updater.js:214
    fs.mkdirSync(safePath, { recursive: true });
  • 写入本地文件
    dsh-updater.js:216
    fs.mkdirSync(path.dirname(safePath), { recursive: true });
  • 写入本地文件
    dsh-updater.js:217
    fs.writeFileSync(safePath, tarBuf.subarray(offset + 512, offset + 512 + size));
  • 读取本地文件
    dsh-updater.js:300
    if (fs.existsSync(path.join(direct, "package.json"))) return direct;
  • 读取本地文件
    dsh-updater.js:301
    const candidates = fs.readdirSync(extractDir, { withFileTypes: true })
  • 读取本地文件
    dsh-updater.js:304
    .filter((d) => fs.existsSync(path.join(d, "package.json")));
  • 读取本地文件
    dsh-updater.js:331
    const gunzipped = await gunzip(fs.readFileSync(tgzPath));
  • 写入本地文件
    dsh-updater.js:333
    fs.mkdirSync(extractDir, { recursive: true });
  • 读取本地文件
    dsh-updater.js:336
    if (!fs.existsSync(path.join(pkgDir, "package.json"))) {
  • 删除本地文件
    dsh-updater.js:341
    try { fs.rmSync(tmpDir, { recursive: true, force: true }); } catch (e) { }
  • 读取本地文件
    dsh-updater.js:352
    pkg = JSON.parse(fs.readFileSync(pkgJsonPath, "utf8"));
  • 写入本地文件
    dsh-updater.js:399
    fs.mkdirSync(topNms, { recursive: true });
  • 执行外部命令来自配置/变量
    dsh-updater.js:535
    execFile(nodeBin, [binPath, "--version"], { encoding: "utf8" }, (err, stdout) => {
  • 执行外部命令运行时拼接
    build/clean-processes.js:14
    execSync(`taskkill /F /PID ${pid}`, { stdio: "ignore" });
  • 执行外部命令运行时拼接
    build/clean-processes.js:32
    output = execSync(`powershell -Command "${psCommand.replace(/"/g, '\\"')}"`, {
  • 读取本地文件
    build/make-dsh-archive.js:13
    const version = JSON.parse(fs.readFileSync(path.join(DSH_ROOT, "package.json"), "utf8")).version;
  • 读取本地文件
    build/make-dsh-archive.js:17
    if (fs.existsSync(marker)) {
  • 读取本地文件
    build/make-dsh-archive.js:18
    const prev = JSON.parse(fs.readFileSync(marker, "utf8"));
  • 读取本地文件
    build/make-dsh-archive.js:20
    if (prev.version === srcHash && prev.src === DSH_ROOT && fs.existsSync(OUT_ARCHIVE)) {
  • 执行外部命令来自配置/变量
    build/make-dsh-archive.js:28
    execFileSync(SZ_PATH, ["a", "-t7z", "-mx=5", "-bd", "-y", OUT_ARCHIVE, path.join(DSH_ROOT, "*")], {
  • 读取本地文件
    build/make-dsh-archive.js:33
    const sizeMB = (fs.statSync(OUT_ARCHIVE).size / 1024 / 1024).toFixed(1);
  • 写入本地文件
    build/make-dsh-archive.js:34
    fs.writeFileSync(marker, JSON.stringify({ version, src: DSH_ROOT, builtAt: new Date().toISOString() }));
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库

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

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

功能亮点

  • 一键安装桌面端
  • 免配置直接运行

基于 DeepSeek Harness 构建的 Windows 和 macOS 开源桌面客户端。 一键下载,开箱即用。 万物皆「插件」,桌面本身也是「插件」。

README

由 DeepSeek 最新模型翻译生成
DSH Desktop DeepSeek Harness 桌面客户端 — 开箱即用,一键升级 DSH Desktop 是 DeepSeek Harness (DSH) 的桌面客户端,内置 DSH 运行时,支持 Windows 一键安装。不用手动配置 Node.js 或 DSH 环境,装完就能用。 DSH Desktop DSH Desktop ✨ 功能特性 | 功能 | 描述 | | 🚀 一键安装 | DSH 随包分发(~200MB),NSIS 安装器自动解压,无需额外配置 | | 🔄 双模式升级 | 标题栏切换「正式版 / 预发布」,蓝色徽章提示更新,点击即升级 | | 📋 剪贴板桥接 | iframe 内复制按钮可用,跨源 clipboard-write 已打通 | | 🪟 原生体验 | 自定义标题栏,关闭即退出,无残留进程 | | ⚡ 极速启动 | 窗口即时显示,DSH 后台并行加载,V8 编译缓存加速 | 📦 安装 下载安装包 从 GitHub Releases 下载最新版本的 DSH Desktop Setup.exe,双击运行安装。
展开完整文档(README 剩余 1 节)
DSH Desktop

DeepSeek Harness 桌面客户端 — 开箱即用,一键升级

DSH Desktop 是 DeepSeek Harness (DSH) 的桌面客户端,内置 DSH 运行时,支持 Windows 一键安装。不用手动配置 Node.js 或 DSH 环境,装完就能用。

DSH Desktop
DSH Desktop

✨ 功能特性

| 功能 | 描述 |
| 🚀 一键安装 | DSH 随包分发(~200MB),NSIS 安装器自动解压,无需额外配置 |
| 🔄 双模式升级 | 标题栏切换「正式版 / 预发布」,蓝色徽章提示更新,点击即升级 |
| 📋 剪贴板桥接 | iframe 内复制按钮可用,跨源 clipboard-write 已打通 |
| 🪟 原生体验 | 自定义标题栏,关闭即退出,无残留进程 |
| ⚡ 极速启动 | 窗口即时显示,DSH 后台并行加载,V8 编译缓存加速 |

📦 安装

下载安装包

从 GitHub Releases 下载最新版本的 DSH Desktop Setup.exe,双击运行安装。

系统要求

- Windows 10 / 11(64 位)
- 剩余磁盘空间 ≥ 500MB

🛠️ 开发

环境准备

克隆仓库
git clone https://github.com/mkt-agents/dsh-desktop.git
cd dsh-desktop

安装依赖
npm install

启动开发模式

npm start

开发模式使用全局安装的 DSH,升级行为与打包版一致。

构建安装包

构建前请关闭正在运行的 DSH Desktop taskkill /F /IM "DSH Desktop.exe" 2>nul

构建
npm run build

产物位置:release/DSH Desktop Setup <版本>.exe

📁 项目结构

├── assets/ # 图标资源 ├── build/ # 构建脚本 │ ├── make-dsh-archive.js # DSH 打包脚本 │ └── 7za.exe # 7-Zip CLI ├── release/ # 构建产物 ├── renderer/ # 渲染进程(标题栏 + iframe) ├── main.js # 主进程(DSH 管理 / 升级 / IPC) ├── preload.js # 预加载脚本(IPC 桥接) ├── dsh-updater.js # DSH 版本检测 / 升级模块 ├── installer-icon-cache.nsh # NSIS 自定义宏 └── package.json # 项目配置

🏗️ 技术栈

| 组件 | 版本 |
| Electron | 43.4.0 |
| electron-builder | 26.15.3 |
| DeepSeek Harness | 0.1.1-rc.2 |
| 运行时 | Node.js(随包分发) |

- 纯 JavaScript(CommonJS),无编译步骤
- Windows x64 NSIS 安装包,支持 perMachine 安装

📄 许可证

MIT

Built with ❤️ for DeepSeek Harness
预览分享卡片长什么样 ↓mkt-agents/dsh-desktop
分享 · DeepSeek Harness Hub
mkt-agents/dsh-desktop

一键安装桌面端,免配置直接运行 DSH

这是你的仓库?认领条目

回到顶部