内置运行时一键安装,免配置启动 dsh 服务
30.2/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add mannixS/DSH-Desktop该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · desktop
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 53 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-desktop-client(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/7 10:40:26
🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0🔴 扫描:高危尚无人工评估
静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。
命令参数由运行时变量拼接读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 53 处,展示前 39 条)
- 发起网络请求src/main/kernel-manager.js:97
const res = await fetch(`${url}/${DSH_PACKAGE}/latest`, { - 读取本地文件src/main/kernel-manager.js:142
return JSON.parse(await fsp.readFile(this.alignMarkPath, 'utf8')); - 写入本地文件src/main/kernel-manager.js:151
await fsp.writeFile( - 读取本地文件src/main/kernel-manager.js:232
const pkgRaw = await fsp.readFile(this.dshPkgJsonPath, 'utf8'); - 读取本地文件src/main/kernel-manager.js:250
await fsp.access(this.dshBinPath, fs.constants.R_OK); - 读取本地文件src/main/kernel-manager.js:276
const infoRaw = await fsp.readFile(path.join(dir, 'bundle-info.json'), 'utf8'); - 读取本地文件src/main/kernel-manager.js:282
const pkgRaw = await fsp.readFile( - 读取本地文件src/main/kernel-manager.js:317
if (!fs.existsSync(bundled.dir)) { - 写入本地文件src/main/kernel-manager.js:390
await fsp.mkdir(importTmp, { recursive: true }); - 写入本地文件src/main/kernel-manager.js:410
await fsp.rename(importTmp, this.kernelDir); - 执行外部命令来自配置/变量src/main/kernel-manager.js:445
const child = spawn(tarCmd, ['-xzf', archiveRel], { - 写入本地文件src/main/kernel-manager.js:494
await fsp.mkdir(to, { recursive: true }); - 写入本地文件src/main/kernel-manager.js:507
await fsp.copyFile(srcPath, destPath); - 发起网络请求src/main/kernel-manager.js:534
const res = await fetch(`${base}/${DSH_PACKAGE}`, { - 执行外部命令来自配置/变量src/main/kernel-manager.js:695
const child = spawn(cmd, args, { - 写入本地文件src/main/kernel-manager.js:760
await fsp.mkdir(this.tmpDir, { recursive: true }); - 执行外部命令来自配置/变量src/main/kernel-manager.js:913
child = spawn(nodeCmd, [npmCli, ...args], { - 执行外部命令来自配置/变量src/main/kernel-manager.js:922
child = spawn(npmCmd, args, { - 执行外部命令来自配置/变量src/main/kernel-manager.js:1039
const child = spawn(this._getNodeCmd(), [binPath, '--version'], { - 删除本地文件src/main/kernel-manager.js:1071
await fsp.rm(target, { recursive: true, force: true }); - 读取本地文件src/main/dsh-host.js:72
if (fs.existsSync(bundled)) return bundled; - 读取本地文件src/main/dsh-host.js:93
if (!fs.existsSync(startup)) return false; - 读取本地文件src/main/dsh-host.js:94
const src = fs.readFileSync(startup, 'utf8'); - 读取本地文件src/main/dsh-host.js:118
const src = fs.readFileSync(file, 'utf8'); - 读取本地文件src/main/dsh-host.js:187
if (!fs.existsSync(binPath)) { - 执行外部命令来自配置/变量src/main/dsh-host.js:244
this.child = spawn(nodeCmd, cliArgs, { - 发起网络请求src/main/dsh-host.js:339
const res = await fetch(`http://127.0.0.1:${port}`, { - 执行外部命令运行时拼接src/main/dsh-host.js:432
exec(`taskkill /pid ${pid} ${flags}`, { windowsHide: true }, () => {}); - 发起网络请求src/main/dsh-host.js:453
const res = await fetch(`http://127.0.0.1:${p}`, { signal: AbortSignal.timeout(800) }); - 执行外部命令运行时拼接src/main/dsh-host.js:471
exec(`taskkill /pid ${pid} /T /F`, { windowsHide: true }, () => {}); - 执行外部命令运行时拼接src/main/dsh-host.js:505
const ps = execSync( - 执行外部命令运行时拼接src/main/dsh-host.js:518
const ps = execSync(`ps -eo pid,command | grep -F -- '${kernelMarker}' | grep -v grep`, { encoding: 'utf8' }); - 读取本地文件src/main/settings.js:63
const raw = await fsp.readFile(this.filePath, 'utf8'); - 写入本地文件src/main/settings.js:77
await fsp.mkdir(path.dirname(this.filePath), { recursive: true }); - 写入本地文件src/main/settings.js:78
await fsp.writeFile(this.filePath, JSON.stringify(this.data, null, 2), 'utf8'); - 发起网络请求src/main/app-updater.js:212
const res = await fetch(source.base + manifest, { - 读取本地文件src/main/app-updater.js:314
if (!src || !fs.existsSync(src)) throw new Error('未找到已下载的安装包'); - 写入本地文件src/main/app-updater.js:316
if (path.resolve(src) !== path.resolve(dest)) fs.copyFileSync(src, dest); - 写入剪贴板renderer/renderer.js:709
await navigator.clipboard.writeText(logCache.join('\n'));
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 内置运行时一键安装
- 免配置启动dsh服务
- 跨平台桌面客户端
README
由 DeepSeek 最新模型翻译生成DSH Desktop
DeepSeek Harness(dsh)跨平台桌面客户端 —— 把 dsh 装进一个开箱即用的桌面应用,安装即用,无需配置 Node.js 等任何环境。
支持 Windows 10/11 x64 与 macOS 12+(Apple Silicon / Intel)。
✨ 功能特性
- 🚀 开箱即用:安装包内置 dsh 内核与 Node.js 运行时,安装后自动导入并启动服务,无需联网下载、无需预装环境
- 🖥️ 全屏工作台:内嵌 dsh Web 界面,服务就绪后自动呈现;启动全程有加载提示,不黑屏、不闪白
- 🎨 主题跟随:客户端外观自动跟随 dsh 的深/浅色切换,也可在设置中固定深色、浅色或跟随系统
- 🔄 内核管理:一键检查、更新、回滚 dsh 内核;支持 latest(含 RC)/ stable(仅正式版)双通道与定时自动检查
- ⬆️ 程序自更新:检测到新版本自动下载;Windows 点「安装并重启」即可升级,macOS 为引导式手动更新(详见常见问题)
- 🇨🇳 国内加速更新源:支持 CNB 镜像(cnb.cool),与 GitHub 双源并发测速择优;国内网络无需代理即可快速检查与下载
- 📊 实时状态:底部状态栏随时显示服务运行状态、进程 PID 与端口;启动 / 停止 / 重启一键操作
展开完整文档(README 剩余 1 节)
DSH Desktop DeepSeek Harness(dsh)跨平台桌面客户端 —— 把 dsh 装进一个开箱即用的桌面应用,安装即用,无需配置 Node.js 等任何环境。 支持 Windows 10/11 x64 与 macOS 12+(Apple Silicon / Intel)。 ✨ 功能特性 - 🚀 开箱即用:安装包内置 dsh 内核与 Node.js 运行时,安装后自动导入并启动服务,无需联网下载、无需预装环境 - 🖥️ 全屏工作台:内嵌 dsh Web 界面,服务就绪后自动呈现;启动全程有加载提示,不黑屏、不闪白 - 🎨 主题跟随:客户端外观自动跟随 dsh 的深/浅色切换,也可在设置中固定深色、浅色或跟随系统 - 🔄 内核管理:一键检查、更新、回滚 dsh 内核;支持 latest(含 RC)/ stable(仅正式版)双通道与定时自动检查 - ⬆️ 程序自更新:检测到新版本自动下载;Windows 点「安装并重启」即可升级,macOS 为引导式手动更新(详见常见问题) - 🇨🇳 国内加速更新源:支持 CNB 镜像(cnb.cool),与 GitHub 双源并发测速择优;国内网络无需代理即可快速检查与下载 - 📊 实时状态:底部状态栏随时显示服务运行状态、进程 PID 与端口;启动 / 停止 / 重启一键操作 - 📜 运行日志:客户端与 dsh 的完整输出实时滚动展示,支持一键复制,方便排查问题 - 🧹 退出不残留:关闭客户端时自动结束 dsh 及其全部子进程,不占用端口、不留后台进程 📥 下载安装 从 Releases 页面下载对应平台的安装包: | 平台 | 文件 | 说明 | | Windows x64 | DSH-Desktop--win-x64.exe | 双击安装(NSIS 安装向导) | | macOS Apple Silicon | DSH-Desktop--mac-arm64.dmg | 双击直接安装(推荐) | | macOS Apple Silicon(解压版) | DSH-Desktop--mac-arm64.zip | 解压后拖入「应用程序」 | | macOS Intel | DSH-Desktop--mac-x64.zip | 解压后拖入「应用程序」 | 国内用户可改用 CNB 镜像(cnb.cool)下载,速度更快且无需代理: https://cnb.cool/mannixS/DSH-Desktop/-/releases macOS 首次打开提示「已损坏/无法验证开发者」? 应用未做 Apple 签名公证,属 Gatekeeper 正常拦截,并非文件损坏。在终端执行: sudo xattr -cr "/Applications/DSH Desktop.app" 然后重新打开即可。也可右键应用 →「打开」→「打开」放行。 🚀 快速上手 1. 安装并启动客户端,内置内核自动导入、dsh 服务自动运行; 2. 首次使用在工作台中填入 API Key(DeepSeek 或兼容模型),选择工作目录; 3. 开始使用。所有配置(端口、主题、更新等)集中在「设置」中。 ❓ 常见问题 - 杀毒软件提示「正在修改 DLL 文件」? 覆盖升级时安装程序会替换 Electron 运行组件(如 d3dcompiler_47.dll),属正常现象,选择允许/信任即可。 - 检查更新提示 404? 请确认「设置 → 程序更新」中的 GitHub 仓库填写为 owner/repo 格式,且对应仓库已发布 Release。 - 国内检查更新慢或超时? 「设置 → 程序更新 → 程序更新源」默认为自动(测速优选):客户端会并发探测 GitHub 与 CNB 镜像的清单响应时间并选用最快可用的一方,国内网络通常自动命中 CNB 镜像(cnb.cool),无需代理;也可手动固定为「CNB 国内镜像」。详见 docs/cnb-mirror.md。 - 更新内核后工作台提示 dsh web authentication required; reopen the URL printed by dsh web.? 新版内核为 Web UI 增加了 browser-auth:访问必须使用启动时打印的带 token URL 兑换签名 cookie,直接访问裸地址会被 401 拒绝。客户端已自动接管该流程(捕获并加载认证 URL),请升级客户端到最新版本。 - macOS 更新失败,提示 Code signature ... did not pass validation? macOS 的自动安装依赖 Squirrel ShipIt 的代码签名校验,而本项目未使用 Apple 开发者证书(只能 ad-hoc 签名,其校验基准是内容哈希,新版本必然不匹配),因此 mac 端改为引导式手动更新:点击「下载安装包」后安装包会保存到「下载」目录并自动打开,把 DSH Desktop.app 拖入「应用程序」覆盖即可。Windows 端不受影响。 📄 许可证 MIT。基于上游项目 deepseek-ai/deepseek-harness 构建。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
mannixS/DSH-Desktop
内置运行时一键安装,免配置启动 dsh 服务
相关插件 · 桌面端
Codex 任务面板chuspeeism/dashi-taskboard
现代化可灵活嵌入的任务面板,支持 Codex、DeepSeek Harness
★ 3,409已汉化DSH
71.7
多智能体自进化开发平台Prism-Shadow/penguin-harness
统一、稳定的 Agent 自进化框架全自动优化:任意模型 · 任意算法 · 任意 Benchmark
★ 3,111已汉化DSH
71.1
桌面宠物PC2005-cloud/dsh-pet
DSH 桌面宠物:一行命令装好即用的透明动画小桌宠,支持多开、大小位置随心配置;还内置 DIY 素材链,能用 AI…
★ 5,341已汉化DSH
71
多端 Agent 工作台GCWing/OpenBitFun
OpenBitFun 是一个高度可定制的开源 Agent 工作台,让任务按你的方式持续推进。
★ 3,449已汉化DSH
70.8
DSH Desktopanywhere-labs/dsh-desktop
为 DeepSeek Harness DSH 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 34,532已汉化DSH
70.7
桌面宠物伴侣OpenPetsHQ/openpets
桌面伴侣平台,带宠物、插件,还能选配本地智能体集成。
★ 1,353已汉化DSH
70.2
这是你的仓库?认领条目