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

桌面外壳 RINGOLINK/dsh-desktop-shell

DeepSeek Harnessv1.1.3
RINGOLINK50 天前有提交已提供中文文档扫描:含敏感能力

把网页界面变成独立窗口应用,常驻托盘

29.9/100
综合分
0
GitHub 星标
111
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-desktop-shell
npm 源 · dsh-desktop-shell 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/10/23·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 50 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

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

✓npm 包dsh-desktop-shell @ 1.1.3
✓Node 引擎要求 >=22 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/21 23:42:58

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 50 处,展示前 32 条)
  • 读取本地文件
    lib/index.js:53
    if (pinned !== "" && existsSync(pinned)) return pinned;
  • 读取本地文件
    lib/index.js:55
    if (argv1.endsWith("bin.js") && existsSync(argv1)) return argv1;
  • 读取本地文件
    lib/index.js:58
    if (existsSync(cache)) {
  • 读取本地文件
    lib/index.js:59
    const candidates = readdirSync(cache)
  • 读取本地文件
    lib/index.js:61
    .filter((candidate) => existsSync(candidate));
  • 读取本地文件
    lib/index.js:63
    candidates.sort((a, b) => statSync(b).mtimeMs - statSync(a).mtimeMs);
  • 写入本地文件
    lib/index.js:139
    mkdirSync(home, { recursive: true });
  • 写入本地文件
    lib/index.js:140
    writeFileSync(join(home, "command.json"), JSON.stringify({ action, mode, source, ts: Date.now() }), "utf8");
  • 写入本地文件
    lib/index.js:178
    mkdirSync(home, { recursive: true });
  • 写入本地文件
    lib/index.js:179
    writeFileSync(path, lines.join("\r\n") + "\r\n", "utf8");
  • 执行外部命令固定命令
    lib/index.js:181
    const child = spawn("cmd.exe", ["/c", path], { detached: true, stdio: "ignore", windowsHide: true, cwd: home });
  • 发起网络请求
    lib/client.js:112
    const response = await fetch(STATUS_URL, { cache: "no-store" });
  • 发起网络请求
    lib/client.js:120
    const response = await fetch(url, {
  • 读取本地文件
    lib/install.js:81
    try { raw = JSON.parse(readFileSync(join(home, PREFERENCES_FILE), "utf8")); } catch { }
  • 写入本地文件
    lib/install.js:94
    mkdirSync(home, { recursive: true });
  • 写入本地文件
    lib/install.js:95
    writeFileSync(join(home, PREFERENCES_FILE), JSON.stringify(next, null, 2) + "\n", "utf8");
  • 写入本地文件
    lib/install.js:166
    mkdirSync(dirname(plan.to), { recursive: true });
  • 删除本地文件
    lib/install.js:168
    try { rmSync(fresh, { force: true }); } catch { }
  • 删除本地文件
    lib/install.js:175
    try { rmSync(parked, { force: true }); } catch { }
  • 删除本地文件
    lib/install.js:178
    try { rmSync(parked, { force: true }); } catch { }
  • 写入本地文件
    lib/install.js:191
    mkdirSync(plan.home, { recursive: true });
  • 写入本地文件
    lib/install.js:192
    mkdirSync(plan.logsDir, { recursive: true });
  • 写入本地文件
    lib/install.js:201
    writeFileSync(plan.configPath, JSON.stringify(plan.config, null, 2) + "\n", "utf8");
  • 读取本地文件
    lib/install.js:302
    const raw = JSON.parse(readFileSync(join(home, SHORTCUT_MANIFEST), "utf8"));
  • 读取本地文件
    lib/install.js:358
    const created = expected.filter((path) => existsSync(path));
  • 读取本地文件
    lib/install.js:410
    const created = existsSync(startupLink) ? [startupLink] : [];
  • 读取本地文件
    lib/install.js:457
    if (!existsSync(path)) continue;
  • 删除本地文件
    lib/install.js:459
    rmSync(path, { force: true });
  • 读取本地文件
    lib/install.js:517
    try { if (existsSync(path)) rmSync(path, { force: true }); }
  • 删除本地文件
    lib/install.js:517
    try { if (existsSync(path)) rmSync(path, { force: true }); }
  • 删除本地文件递归
    lib/install.js:521
    rmSync(home, { recursive: true, force: true });
  • 执行外部命令来自配置/变量
    lib/install.js:547
    const result = spawnSync(command, args, {
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 网页界面转独立窗口
  • 托盘常驻
  • 无痕启动
展开完整介绍(183 字)↓

把 DeepSeek Harness 的 WebUI 爆改成真正的桌面应用(DSH 插件):WebView2 独立窗口 + 托盘常驻 + 无痕启动 + 就绪门控 + 调试模式;零 Electron 依赖,载荷仅 1.2MB。在 DSH 内部把 DSH Web UI 变成真正的桌面应用:WebView2 窗口、托盘常驻、静默启动、调试控制台,不用 Electron。

v1.1.32026-09-15
修复快捷方式处理的安全与正确性问题;启动器(exe)不变。 · 调试快捷方式现在叫 DeepSeek Harness (Debug).lnk。WScript.Shell 会把链接路径经 ANSI 代码页转码,所以在任何非中日韩 Windows 上,原先中文名的链接到 COM 层就成了 DeepSeek Harness (????).lnk,Save() 抛 FileNotFoundException,脚本中止,开始菜单链接被跳过。1.1.3 之前的中文名旧链接会被迁移走。 · 开启登录自启动时不再跳过开始菜单快捷方式(生成的脚本给自己的 [switch]$Startup 参数赋了字符串;PowerShell 变量名不区分大小写)。脚本还支持 -DesktopPath/-StartupPath/-ProgramsPath 覆盖。 · 清理只能删本次安装创建的链接:每个启动器主目录在 shortcuts.json 里记录自己创建的绝对路径,removeShortcuts / cleanup 只删这些(没有清单的旧安装回退到默认名称)。破坏性辅助函数也遵守测试接缝:DSH_DESKTOP_TEST=1 时返回 wouldRemove 而不删除,除非显式 dryRun: false。什么都没装时 POST /api/dsh-desktop/cleanup 返回 409。 · 清单重新记录调试链接:条目由请求的文件夹算出并在磁盘上确认,不再解析 PowerShell 标准输出(两个脚本现在都强制 UTF-8 控制台输出)。 · 测试:50 → 57 项,包括对沙箱文件夹的真实 PowerShell 运行、带逃逸断言的沙箱 USERPROFILE/APPDATA、dry-run 接缝和按清单限定范围的删除。 通过 npm 可信发布(OIDC)发布,带来源证明。
v1.1.22026-09-15
修复窄设置栏里设置行的布局问题,外加一个紧凑的状态/说明块。 · 六按钮控件组原先固定了 flexShrink: 0,因此保持 max-content 宽度:它溢出设置栏(最后一个按钮渲染到面板外),还把标签列挤成零宽,标题和描述变成一行一个字。现在这一行会换行(flex-wrap: wrap,标签列保留 1 1 260px 基准,控件组为 0 1 auto 并自行换行按钮),按钮标签内部不再断行。 · 在发布产物的字节上验证:570px 宽的设置栏里,标签宽度从 0px 变成 568px,水平溢出和按钮裁切从 43px / 1 降到 0 / 0,六个按钮排成两行。新增布局回归测试锁定这一约定。 · 状态块每行显示一条信息,不再用 · 拼成一句话;较长的行为说明收进「行为说明(点击展开)」/ "Behaviour notes (click to expand)" 折叠区。 · 按钮标签更短(「安装 / 修复」「调试重启」/ "Install / repair"、"Debug restart");破坏性操作放在最后。 · 测试:49 → 50 项检查。启动器(exe)无改动。 通过 npm trusted publishing(OIDC)带 provenance 发布。
v1.1.12026-09-14
1.1.0 设置行与文档润色,启动器(exe)不变。 · 管理操作(重建快捷方式、自启动开关、卸载、两个重启按钮)在 shell 安装前保持禁用;宿主端现在对 POST /api/dsh-desktop/autostart {enabled:true} 和 POST /api/dsh-desktop/shortcuts 也返回 409,这样直接调 API 也无法创建指向不存在启动器的快捷方式。 · 自启动开关把 1.1 之前版本安装残留的启动项快捷方式视为开启,点一下「禁用」就能删掉(以前这行显示「关闭」,快捷方式却还在)。 · 文档:「卸载安装」现在写明会一并删除保存的 WebView2 会话,并写明下次宿主启动会重新部署,只要插件还装着(要让卸载真正生效,就卸载插件,或设置 DSH_DESKTOP_NO_AUTOINSTALL=1)。 · 新增浏览器端测试(桩模块加载器):模块 id、中英文字典一致性、设置行注册、操作门控辅助函数,外加一项校验,把 lib/install.js 的 VERSION 钉到 package.json。检查项从 40 增至 49。 通过 npm 可信发布(OIDC)带来源证明发布。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-desktop-shell — 中文文档 中文说明(详细安装步骤、常见问题 FAQ、工作原理)已并入仓库默认首页 README.md——这样在 GitHub 打开仓库就能直接看到完整中文,不需要再点进子文件。 本文件保留仅为兼容历史链接。 English documentation: 见 README.md 末尾的折叠区块。
预览分享卡片长什么样 ↓RINGOLINK/dsh-desktop-shell
分享 · DeepSeek Harness Hub
RINGOLINK/dsh-desktop-shell

把网页界面变成独立窗口应用,常驻托盘

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部