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

桌面壳 xinghaix/deepseek-harness-desktop

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

把本机已装的 DSH 装进独立桌面窗口,带托盘与快捷键

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

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

自动兼容检查未通过:仓库根目录无 package.json,浅层子目录有 4 份 dsh 插件清单(plugins/dsh-mcp-manager/package.json、plugins/dsh-sandbox-escalation-fix/package.json、plugins/dsh-web-fetch-allowlist/package.json 等),无法唯一定位安装名。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add xinghaix/deepseek-harness-desktop
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/19) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

仓库根目录无 package.json,浅层子目录有 4 份 dsh 插件清单(plugins/dsh-mcp-manager/package.json、plugins/dsh-sandbox-escalation-fix/package.json、plugins/dsh-web-fetch-allowlist/package.json 等),无法唯一定位安装名

展开查看检查明细 ↓

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

✗npm 包deepseek-harness-desktop(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

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

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

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

读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 32 处,展示前 29 条)
  • 读取本地文件
    plugins/dsh-mattpocock-skills/lib/catalog.js:204
    const entries = readdirSync(currentDir, { withFileTypes: true }).sort((a, b) =>
  • 读取本地文件
    plugins/dsh-mattpocock-skills/lib/catalog.js:231
    entries = readdirSync(bucketDir, { withFileTypes: true }).sort((a, b) =>
  • 读取本地文件
    plugins/dsh-mattpocock-skills/lib/catalog.js:243
    if (!statSync(skillFile).isFile()) continue;
  • 读取本地文件
    plugins/dsh-mattpocock-skills/lib/catalog.js:247
    const raw = readFileSync(skillFile, "utf8");
  • 读取本地文件
    plugins/dsh-mattpocock-skills/lib/linker.js:33
    st = await lstat(entryPath);
  • 读取本地文件
    plugins/dsh-mattpocock-skills/lib/linker.js:41
    rawTarget = await readlink(entryPath);
  • 读取本地文件
    plugins/dsh-mattpocock-skills/lib/linker.js:60
    const realTarget = await realpath(resolvedTarget);
  • 读取本地文件
    plugins/dsh-mattpocock-skills/lib/linker.js:80
    const realAssetsDir = await realpath(rawAssetsDir).catch(() => rawAssetsDir);
  • 写入本地文件
    plugins/dsh-mattpocock-skills/lib/linker.js:93
    await mkdir(targetSkillsDir, { recursive: true });
  • 读取本地文件
    plugins/dsh-mattpocock-skills/lib/linker.js:97
    existingEntries = await readdir(targetSkillsDir);
  • 删除本地文件
    plugins/dsh-mattpocock-skills/lib/linker.js:113
    await unlink(entryPath);
  • 读取本地文件
    plugins/dsh-mattpocock-skills/lib/linker.js:122
    const currentRaw = await readlink(entryPath).catch(() => "");
  • 删除本地文件
    plugins/dsh-mattpocock-skills/lib/linker.js:133
    await unlink(entryPath);
  • 发起网络请求
    plugins/dsh-mcp-manager/lib/client.js:2285
    const response = await fetch(API + path, body === undefined
  • 写入剪贴板
    plugins/dsh-mcp-manager/lib/client.js:2723
    await primitives.writeClipboard(text);
  • 写入剪贴板
    plugins/dsh-mcp-manager/lib/client.js:2727
    await navigator.clipboard.writeText(text);
  • 读取本地文件
    plugins/dsh-mcp-manager/lib/connections.js:266
    const pkg = JSON.parse(await readFile(join(dir, "package.json"), "utf8"));
  • 读取本地文件
    plugins/dsh-mcp-manager/lib/connections.js:272
    const patch = parseLegacyPatch(await readFile(join(dir, "cordis.patch.yml"), "utf8"));
  • 读取本地文件
    plugins/dsh-mcp-manager/lib/index.js:32
    const raw = JSON.parse(await readFile(prefsFilePath(ctx), "utf8"));
  • 写入本地文件
    plugins/dsh-mcp-manager/lib/index.js:48
    await mkdir(dirname(file), { recursive: true });
  • 写入本地文件
    plugins/dsh-mcp-manager/lib/index.js:49
    await writeFile(file, JSON.stringify(next, null, 2) + "\n", "utf8");
  • 读取本地文件
    plugins/dsh-mcp-manager/lib/index.js:100
    const pkg = JSON.parse(await readFile(join(dir, "package.json"), "utf8"));
  • 读取本地文件
    plugins/dsh-mcp-manager/lib/index.js:223
    const info = await stat(path);
  • 读取本地文件
    plugins/dsh-mcp-manager/lib/index.js:230
    const text = await readFile(path, "utf8");
  • 写入本地文件
    plugins/dsh-mcp-manager/lib/index.js:268
    await mkdir(dir, { recursive: true });
  • 写入本地文件
    plugins/dsh-mcp-manager/lib/index.js:269
    await writeFile(join(dir, "package.json"), files.packageJson);
  • 写入本地文件
    plugins/dsh-mcp-manager/lib/index.js:270
    await writeFile(join(dir, "cordis.patch.yml"), files.patch);
  • 读取本地文件
    plugins/dsh-mcp-manager/lib/index.js:364
    try { stored = model.bundleSecrets(await readFile(join(dir, "cordis.patch.yml"), "utf8")); } catch { }
  • 删除本地文件递归
    plugins/dsh-mcp-manager/lib/index.js:437
    await rm(join(profileDir(ctx), "mcp-bundles", name), { recursive: true, force: true });
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

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

功能亮点

  • 封装本机命令行工具
  • 独立桌面窗口
  • 托盘与快捷键

README

由 DeepSeek 最新模型翻译生成
Deepseek Harness Desktop English · 中文 把本机已安装的 DSH 放进桌面窗口里用:不另装 CLI、不搬配置、不改你的 DSH Home。 当前版本见 Releases。参与开发 / 架构说明见 AGENTS.md。 它适合谁 - 已经用 npm / 其它方式装好了 dsh,希望有独立桌面窗口、托盘和系统快捷键 - 想在 Chat 里顺手管理「由这个桌面端拉起」的 DSH(启动 / 停止 / 重启、桌面偏好) 安装 1. 打开 Releases,下载对应平台附件: - macOS:deepseek-harness-desktop-darwin-arm64.dmg(Apple Silicon)或 deepseek-harness-desktop-darwin-amd64.dmg(Intel) - Linux:deepseek-harness-desktop-linux-amd64 或 …-arm64 - Windows:deepseek-harness-desktop-windows-amd64.exe 或 …-arm64.exe 2. macOS:打开 DMG,把应用拖到「应用程序」。若提示来自未识别开发者,可在 Finder 中右键 → 打开。
展开完整文档(README 剩余 1 节)
Deepseek Harness Desktop

English · 中文

把本机已安装的 DSH 放进桌面窗口里用:不另装 CLI、不搬配置、不改你的 DSH Home。

当前版本见 Releases。参与开发 / 架构说明见 AGENTS.md。

它适合谁

- 已经用 npm / 其它方式装好了 dsh,希望有独立桌面窗口、托盘和系统快捷键
- 想在 Chat 里顺手管理「由这个桌面端拉起」的 DSH(启动 / 停止 / 重启、桌面偏好)

安装

1. 打开 Releases,下载对应平台附件:
- macOS:deepseek-harness-desktop-darwin-arm64.dmg(Apple Silicon)或 deepseek-harness-desktop-darwin-amd64.dmg(Intel)
- Linux:deepseek-harness-desktop-linux-amd64 或 …-arm64
- Windows:deepseek-harness-desktop-windows-amd64.exe 或 …-arm64.exe
2. macOS:打开 DMG,把应用拖到「应用程序」。若提示来自未识别开发者,可在 Finder 中右键 → 打开。
3. 发布包为自签名、未公证;Windows 可能被 SmartScreen 拦截,属预期。

也可用源码自行构建,见 AGENTS.md「开发命令 / 发版」。

使用前准备

- 本机已安装可用的 dsh(终端执行 dsh --version 能成功)
- 已有或可创建的 DSH Home(桌面端只把它传给子进程,不会复制一份)

第一次打开

1. 启动应用后,会在常见位置查找 dsh(用户目录、登录 shell 的 PATH、常见 Node 全局目录等)。
2. 找到了:自动启动并打开 Chat。
3. 没找到:进入配置页。选好 dsh 路径、DSH Home、Chat 工作目录后,再启动;成功后会打开 Chat。
4. 启动失败时,配置页会显示已脱敏的错误,可复制完整日志排查;修好后点「重试」。

界面跟随系统浅色 / 深色。Chat 始终在应用内的窗口中打开,不会跳到系统浏览器。

日常使用

打开配置

可用下列任一方式再开桌面配置(改路径、语言、托盘、更新等):

- macOS:应用菜单;Windows / Linux:「文件」菜单
- 快捷键:默认 ⌘, / Ctrl+,(可在设置里改或清除)
- DSH Chat → 设置 → 桌面设置

托盘

在配置或「桌面设置」里可分别控制:

| 选项 | 作用 |
| 开启系统托盘 | 总开关;关闭后不显示托盘图标 |
| 任务显示数量 | 托盘菜单里「最近会话」条数(0 表示不显示列表) |
| 关闭窗口到托盘 | 点 Chat 窗口 关闭按钮 时隐藏到托盘,而不是退出 |

补充说明:

- ⌘W / Ctrl+W(若未清除)会隐藏 Chat;只有开启了托盘时才会用到托盘图标,否则回到程序坞 / 任务栏。
- 托盘菜单可打开 Chat、桌面配置、最近会话,以及退出。
- 有任务在跑时,菜单栏图标右上角会显示翠绿角标;最近会话里运行中为 🟢,出错为 🔴。

Linux 托盘依赖桌面环境的 StatusNotifier / AppIndicator 支持。

快捷键

在配置页或「桌面设置 → 快捷键」中可以:

- 点击按键位录制新组合;未按下新组合时点击空白处取消,不保存
- 清除某项(清除后该加速键不再生效,菜单里仍可点)
- 恢复默认还原该条内置绑定

默认包括:打开桌面设置、关闭/隐藏 Chat、退出;macOS 另有系统「隐藏应用 / 隐藏其他」。与其它项冲突时会提示且不保存。

更新

可在配置页手动检查更新,或开启「每天自动检查」。发现新版本后不会自动安装,由你确认后再装。

Chat 里的「桌面设置」

DSH Chat 设置左侧有一级入口「桌面设置」(与模型、插件同级),可查看与桌面端的连接状态,并管理本应用拉起的 DSH 进程与桌面偏好。桥接由桌面端自动注入,一般不必再手动装插件。

若升级后看不到新选项,请重启桌面应用,或在 Chat 中重新加载 / 重新打开 Chat。

隐私与边界(使用者视角)

- 只管理本应用启动的那一个 DSH;不会去结束其它终端里自己开的 dsh。
- 不会扫描工作区去读你的对话内容,也不会改写 DSH 凭据或另存一份配置。
- 桌面自己的偏好存在 DSH Home 下的桌面运行目录里;DSH 自己的数据仍由 DSH 管理。

需要帮助?

- 发行说明与下载:Releases
- 问题反馈:仓库 Issues
- 架构、进程边界、构建与发版:AGENTS.md
预览分享卡片长什么样 ↓xinghaix/deepseek-harness-desktop
分享 · DeepSeek Harness Hub
xinghaix/deepseek-harness-desktop

把本机已装的 DSH 装进独立桌面窗口,带托盘与快捷键

这是你的仓库?认领条目

回到顶部