把本机已装的 DSH 装进独立桌面窗口,带托盘与快捷键
数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
dsh plugin --profile web add xinghaix/deepseek-harness-desktop状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
安装兼容性检查需源码安装仓库根目录无 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 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
源码安装时若 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 });
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
功能亮点
- 封装本机命令行工具
- 独立桌面窗口
- 托盘与快捷键
README
由 DeepSeek 最新模型翻译生成展开完整文档(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
预览分享卡片长什么样 ↓
把本机已装的 DSH 装进独立桌面窗口,带托盘与快捷键
相关插件 · 桌面端
这是你的仓库?认领条目