内置 Node 运行时,免安装直接运行桌面应用
28.1/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add weichi-ai/dshd该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · desktop
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 74 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/7) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 111 处,展示前 99 条)
- 发起网络请求dsh-about/lib/client.js:70
fetch("/dshd-about") - 发起网络请求dsh-about/lib/client.js:80
fetch("/dshd-about/check") - 发起网络请求dsh-about/lib/client.js:90
fetch("/dshd-about/open", { - 发起网络请求dsh-about/lib/index.js:65
const response = await fetch(API_LATEST, { - 执行外部命令固定命令dsh-about/lib/index.js:167
spawn("cmd", ["/c", "start", "", url], { windowsHide: true, detached: true, stdio: "ignore" }).unref(); - 执行外部命令固定命令dsh-about/lib/index.js:169
spawn("open", [url], { detached: true, stdio: "ignore" }).unref(); - 读取本地文件dshd-package/_icodb.js:11
const buf = fs.readFileSync(icoPath); - 读取本地文件dshd-package/_icodb.js:68
const exe = fs.readFileSync(exePath); - 写入本地文件dshd-package/_icodb.js:190
fs.writeFileSync(exePath, out); - 读取本地文件dshd-package/_icodb.js:201
const exe = fs.readFileSync(exePath); - 写入本地文件dshd-package/electron/anim-verify.js:10
fs.mkdirSync(outDir, { recursive: true }); - 写入本地文件dshd-package/electron/anim-verify.js:11
fs.writeFileSync(path.join(outDir, name), JSON.stringify(value, null, 2)); - 写入本地文件dshd-package/electron/anim-verify.js:46
fs.writeFileSync(path.join(outDir, 'shot.png'), img.toPNG()); - 读取本地文件dshd-package/electron/bootstrap.js:33
if (!fs.existsSync(nodeModules)) return paths; - 读取本地文件dshd-package/electron/bootstrap.js:34
for (const entry of fs.readdirSync(nodeModules, { withFileTypes: true })) { - 读取本地文件dshd-package/electron/bootstrap.js:38
for (const child of fs.readdirSync(scope, { withFileTypes: true })) { - 写入本地文件dshd-package/electron/bootstrap.js:69
fs.mkdirSync(path.dirname(destination), { recursive: true }); - 读取本地文件dshd-package/electron/bootstrap.js:72
try { stat = fs.lstatSync(destination); } catch (err) { - 删除本地文件dshd-package/electron/bootstrap.js:79
fs.unlinkSync(destination); - 读取本地文件dshd-package/electron/bootstrap.js:87
while (fs.existsSync(backup)) backup = path.join(backupRoot, relative + '.' + suffix++); - 写入本地文件dshd-package/electron/bootstrap.js:88
fs.mkdirSync(path.dirname(backup), { recursive: true }); - 写入本地文件dshd-package/electron/bootstrap.js:89
fs.renameSync(destination, backup); - 写入本地文件dshd-package/electron/bootstrap.js:104
fs.mkdirSync(path.join(profiles, 'web'), { recursive: true }); - 写入本地文件dshd-package/electron/bootstrap.js:105
fs.mkdirSync(path.join(profiles, 'node_modules'), { recursive: true }); - 写入本地文件dshd-package/electron/bootstrap.js:108
fs.writeFileSync(pkgPath, JSON.stringify(PROFILE_PKG, null, 2) + '\n'); - 读取本地文件dshd-package/electron/bootstrap.js:118
if (!fs.existsSync(src)) continue; - 删除本地文件dshd-package/electron/bootstrap.js:131
fs.rmSync(tmp, { recursive: true, force: true }); - 删除本地文件dshd-package/electron/bootstrap.js:133
fs.rmSync(dst, { recursive: true, force: true }); - 写入本地文件dshd-package/electron/capture.js:11
fs.mkdirSync(outDir, { recursive: true }); - 写入本地文件dshd-package/electron/capture.js:15
fs.writeFileSync(path.join(outDir, 'console.log'), consoleLog.join('\n')); - 写入本地文件dshd-package/electron/capture.js:18
fs.writeFileSync(path.join(outDir, 'renderer-gone.json'), JSON.stringify(details)); - 写入本地文件dshd-package/electron/capture.js:24
fs.writeFileSync(path.join(outDir, name), img.toPNG()); - 写入本地文件dshd-package/electron/capture.js:26
fs.writeFileSync(path.join(outDir, name + '.err'), String(e)); - 写入本地文件dshd-package/electron/capture.js:30
fs.writeFileSync(path.join(outDir, name), JSON.stringify(value, null, 2)); - 写入本地文件dshd-package/electron/main.js:18
fs.mkdirSync(path.dirname(process.env.DSDH_DEBUG_FILE), { recursive: true }); - 写入本地文件dshd-package/electron/main.js:19
debugLog = fs.createWriteStream(process.env.DSDH_DEBUG_FILE, { flags: 'a' }); - 执行外部命令来自配置/变量dshd-package/electron/main.js:115
dshProc = spawn(nodeExe, [binJs, 'web', '--host', '127.0.0.1', '--port', String(port), '--no-open'], { - 读取本地文件dshd-package/fix-pe-size.js:5
const exe = fs.readFileSync(exePath); - 写入本地文件dshd-package/fix-pe-size.js:31
fs.writeFileSync(exePath, exe); - 读取本地文件dshd-package/make-mac-zip.js:29
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { - 读取本地文件dshd-package/make-mac-zip.js:36
const data = fs.readFileSync(full); - 写入本地文件dshd-package/make-mac-zip.js:156
fs.mkdirSync(path.dirname(outZip), { recursive: true }); - 写入本地文件dshd-package/make-mac-zip.js:157
const out = fs.createWriteStream(outZip); - 读取本地文件dshd-package/make-mac-zip.js:163
const size = fs.statSync(outZip).size; - 读取本地文件dshd-package/patch-exe-icon.js:14
const buf = fs.readFileSync(icoPath); - 读取本地文件dshd-package/patch-exe-icon.js:71
const exe = fs.readFileSync(exePath); - 写入本地文件dshd-package/patch-exe-icon.js:226
fs.writeFileSync(exePath, extended); - 读取本地文件whale-logo/build-colorful.js:3
const src = fs.readFileSync('favicon-api-docs.svg', 'utf8'); - 写入本地文件whale-logo/build-colorful.js:26
fs.writeFileSync('deepseek-whale-colorful.svg', colorful); - 读取本地文件whale-logo/build-icon.js:3
const src = fs.readFileSync('reference/favicon-api-docs.svg', 'utf8'); - 写入本地文件whale-logo/build-icon.js:41
fs.writeFileSync('deepseek-whale-icon.svg', dark); - 写入本地文件whale-logo/build-icon.js:64
fs.writeFileSync('deepseek-whale-icon-white.svg', white); - 读取本地文件whale-logo/build-icons.js:6
const svg = fs.readFileSync('deepseek-whale-icon-white.svg', 'utf8'); - 写入本地文件whale-logo/build-icons.js:45
fs.writeFileSync('deepseek-whale-icon-white.ico', ico); - 写入本地文件whale-logo/build-icons.js:76
fs.writeFileSync('deepseek-whale-icon-white.icns', icns); - 读取本地文件whale-logo/build-icons.js:82
const r = new Resvg(fs.readFileSync('deepseek-whale-colorful.svg', 'utf8'), { fitTo: { mode: 'width', value: s } }).render(); - 写入本地文件whale-logo/build-icons.js:83
fs.writeFileSync(`deepseek-whale-colorful-${s}.png`, r.asPng()); - 发起网络请求whale-logo/check-server.js:3
const res = await fetch('http://127.0.0.1:3080/favicon.svg'); - 发起网络请求whale-logo/check-server.js:8
const html = await (await fetch('http://127.0.0.1:3080/')).text(); - 读取本地文件whale-logo/check-server.js:13
const dist = fs.readFileSync('D:/Users/Administrator/AppData/Roaming/npm/node_modules/@deepseek-ai/dsh/node_modules/@deepseek-ai/dsh-web-frontend/dist - 发起网络请求whale-logo/check-server.js:16
const jsRes = await fetch('http://127.0.0.1:3080/' + m[0]); - 发起网络请求whale-logo/check-server2.js:2
const html = await (await fetch('http://127.0.0.1:3080/')).text(); - 发起网络请求whale-logo/check-server2.js:6
const js = await (await fetch('http://127.0.0.1:3080/' + jsRef)).text(); - 发起网络请求whale-logo/check-server2.js:11
const oldJs = await fetch('http://127.0.0.1:3080/assets/index-Dqw48FrP.js'); - 发起网络请求whale-logo/check-server2.js:14
const fav = await (await fetch('http://127.0.0.1:3080/favicon.svg')).text(); - 发起网络请求whale-logo/fetch-logo.js:11
const res = await fetch(url, { headers: { 'user-agent': 'Mozilla/5.0' }, redirect: 'follow' }); - 请求外部主机www.deepseek.comwhale-logo/fetch-logo.js:21
const res = await fetch('https://www.deepseek.com/', { headers: { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' } }); - 发起网络请求whale-logo/fetch-logo.js:21
const res = await fetch('https://www.deepseek.com/', { headers: { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' } }); - 读取本地文件whale-logo/patch-apiproxy.js:12
if (!fs.existsSync(apiproxy)) { console.error('apiproxy not found: ' + apiproxy); process.exit(1); } - 读取本地文件whale-logo/patch-apiproxy.js:15
if (!fs.existsSync(bak)) { fs.copyFileSync(apiproxy, bak); console.log('backup:', bak); } - 写入本地文件whale-logo/patch-apiproxy.js:16
fs.copyFileSync(bak, apiproxy); - 读取本地文件whale-logo/patch-apiproxy.js:18
let js = fs.readFileSync(apiproxy, 'utf8'); - 写入本地文件whale-logo/patch-apiproxy.js:41
fs.writeFileSync(apiproxy, js); - 读取本地文件whale-logo/patch-apiproxy.js:44
const patched = fs.readFileSync(apiproxy, 'utf8'); - 读取本地文件whale-logo/patch-frontend.js:16
if (!fs.existsSync(dist)) { console.error('dist not found: ' + dist); process.exit(1); } - 读取本地文件whale-logo/patch-frontend.js:20
if (!fs.existsSync(bak)) { fs.copyFileSync(p, bak); console.log('backup:', bak); } - 读取本地文件whale-logo/patch-frontend.js:25
if (fs.existsSync(bak)) { fs.copyFileSync(bak, p); } - 读取本地文件whale-logo/patch-frontend.js:35
if (fs.existsSync(favPath)) { - 写入本地文件whale-logo/patch-frontend.js:38
fs.copyFileSync(path.join(ws, 'deepseek-whale-colorful.svg'), favPath); - 读取本地文件whale-logo/patch-frontend.js:44
if (fs.existsSync(htmlPath)) { - 读取本地文件whale-logo/patch-frontend.js:47
let html = fs.readFileSync(htmlPath, 'utf8'); - 写入本地文件whale-logo/patch-frontend.js:49
fs.writeFileSync(htmlPath, html); - 写入本地文件whale-logo/patch-frontend.js:61
fs.writeFileSync(mfPath, JSON.stringify(mf, null, 2)); - 写入本地文件whale-logo/patch-frontend.js:118
fs.writeFileSync(jsPath, js); - 写入本地文件whale-logo/patch-frontend.js:127
fs.writeFileSync(tmp, patched); - 执行外部命令来自配置/变量whale-logo/patch-frontend.js:129
cp.execFileSync(process.execPath, ['--check', tmp], { stdio: 'ignore' }); - 删除本地文件whale-logo/patch-frontend.js:135
fs.rmSync(tmp, { force: true }); - 读取本地文件whale-logo/patch-harness.js:13
if (!fs.existsSync(bak)) fs.copyFileSync(p, bak); - 写入本地文件whale-logo/patch-harness.js:18
fs.copyFileSync(ws + '/deepseek-whale-colorful.svg', favPath); - 读取本地文件whale-logo/patch-harness.js:22
let js = fs.readFileSync(jsPath, 'utf8'); - 写入本地文件whale-logo/patch-harness.js:68
fs.writeFileSync(jsPath, js); - 读取本地文件whale-logo/patch-harness.js:72
const patched = fs.readFileSync(jsPath, 'utf8'); - 读取本地文件whale-logo/render-final.js:6
const svg = fs.readFileSync(svgFile, 'utf8'); - 写入本地文件whale-logo/render-final.js:18
fs.writeFileSync(pngFile, PNG.sync.write(png)); - 写入本地文件whale-logo/render-final.js:50
fs.writeFileSync('comparison.png', PNG.sync.write(out)); - 读取本地文件whale-logo/test-gf.js:5
const js = fs.readFileSync('D:/Users/Administrator/AppData/Roaming/npm/node_modules/@deepseek-ai/dsh/node_modules/@deepseek-ai/dsh-web-frontend/dist/a - 写入本地文件whale-logo/test-gf.js:25
fs.writeFileSync('test-gf.svg', testSvg); - 写入本地文件whale-logo/test-gf.js:28
fs.writeFileSync('test-gf.png', r.asPng()); - 读取本地文件whale-logo/verify.js:5
const svg = fs.readFileSync(svgFile, 'utf8');
扫描于 2026/11/3(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
涉及外部主机:www.deepseek.com
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 内置Node运行时
- 免安装运行桌面应用
README
由 DeepSeek 最新模型翻译生成鲸彩世界 DSHD · DeepSeek Harness Desktop
为热爱探索的你而生 — DeepSeek Harness Desktop, for everyone. 基于 DeepSeek Harness 的桌面发行版,内置 Node 运行时与 dsh,免安装、开箱即用。
⬇ 下载 · 🚀 快速开始 · ✨ 功能特性 · 🖼 界面预览 · ❓ 常见问题 · 🛠 开发者 · 💬 社区
简体中文 · English
🐳 项目简介
鲸彩世界 DSHD 是 DeepSeek Harness 的桌面发行版,把 Harness 的能力装进一个开箱即用的桌面应用:
- 免安装环境:内置 Node 运行时与 dsh 程序,无需安装 Node.js / npm
- 小彩鲸品牌:官方鲸鱼配色,鲸彩世界欢迎页
- 数据全本地:会话、配置、插件都存于用户目录,程序目录只读不改
- 升级不丢数据:用新版安装包覆盖安装即可,数据完整保留
✨ 功能特性
- 🐳 鲸彩世界欢迎页:小彩鲸动画 + 「开启鲸彩之旅」按钮,仅首次启动展示,可随时重新打开
- 🎨 7 套内置皮肤:午夜 / 冷杉 / 暖纸 / 紫罗兰 / 卡通 / 可爱 / 深蓝,点选实时预览、一键应用,另预留自定义槽位
- 🌗 深色 / 浅色模式:随系统或手动切换
展开完整文档(README 剩余 1 节)
鲸彩世界 DSHD · DeepSeek Harness Desktop 为热爱探索的你而生 — DeepSeek Harness Desktop, for everyone. 基于 DeepSeek Harness 的桌面发行版,内置 Node 运行时与 dsh,免安装、开箱即用。 ⬇ 下载 · 🚀 快速开始 · ✨ 功能特性 · 🖼 界面预览 · ❓ 常见问题 · 🛠 开发者 · 💬 社区 简体中文 · English 🐳 项目简介 鲸彩世界 DSHD 是 DeepSeek Harness 的桌面发行版,把 Harness 的能力装进一个开箱即用的桌面应用: - 免安装环境:内置 Node 运行时与 dsh 程序,无需安装 Node.js / npm - 小彩鲸品牌:官方鲸鱼配色,鲸彩世界欢迎页 - 数据全本地:会话、配置、插件都存于用户目录,程序目录只读不改 - 升级不丢数据:用新版安装包覆盖安装即可,数据完整保留 ✨ 功能特性 - 🐳 鲸彩世界欢迎页:小彩鲸动画 + 「开启鲸彩之旅」按钮,仅首次启动展示,可随时重新打开 - 🎨 7 套内置皮肤:午夜 / 冷杉 / 暖纸 / 紫罗兰 / 卡通 / 可爱 / 深蓝,点选实时预览、一键应用,另预留自定义槽位 - 🌗 深色 / 浅色模式:随系统或手动切换 - 🔒 本地优先:数据保存在 %USERPROFILE%\.dsh,程序目录只读 - 🖥 Windows / macOS 双平台:x64 / ARM64 全覆盖 ⬇ 下载 安装包托管在 GitHub Releases: | 平台 | 安装包 | 说明 | | Windows | DSHD-setup-win-x64.exe | 安装向导,开始菜单/桌面快捷方式启动 | | Windows | 鲸彩世界DSHD(免安装版) | 解压即用,直接运行 鲸彩世界DSHD.exe | | macOS | DSHD-mac-arm64.zip | Apple Silicon(M 系列芯片) | | macOS | DSHD-mac-x64.zip | Intel | 🚀 快速开始 1. 下载对应平台的安装包并安装 2. 启动应用,首次打开看到鲸彩世界欢迎页,点击「开启鲸彩之旅」进入主界面 3. 在设置中填写 API Key / 模型配置,开始探索 macOS 未签名版本首次打开请 右键 → 打开,并执行一次: xattr -dr com.apple.quarantine /Applications/DSHD.app 🖼 界面预览 | 欢迎页 | 主页 · 深色模式 | | 欢迎页 | 深色主页 | | 主页 · 浅色模式 | 皮肤设置页 | | 浅色主页 | 皮肤设置 | ⚙️ 使用 - 欢迎页:设置 → 通用 → 欢迎页 → 「重新显示欢迎页」 - 换肤:设置 → 通用 → 皮肤包,7 套皮肤点选预览、确认应用 - 数据目录:%USERPROFILE%\.dsh(会话、配置、插件) ❓ 常见问题 | 问题 | 解决 | | 杀毒软件 / Defender 提示 | 程序未签名,加入白名单放行即可;正式分发将做代码签名 | | 双击没反应 | 确认安装完整(查看 resources\app\vendor\node 与 vendor\app 是否存在) | | 想用命令行 dsh | 在终端运行 resources\app\vendor\node\node.exe resources\app\vendor\app\node_modules\@deepseek-ai\dsh\lib\bin.js | | 升级会丢数据吗 | 不会。程序目录只读,升级 = 覆盖安装,用户数据在 %USERPROFILE%\.dsh | 🛠 开发者 仓库结构 dshd/ ├── dshd-package/ # Electron 打包工程(Windows / macOS 构建脚本) ├── dsh-welcome/ # 欢迎页插件(小彩鲸动画 + CTA) ├── dsh-skin-pack/ # 皮肤包插件(7 套内置皮肤 + 自定义槽位) ├── whale-logo/ # 品牌资源:小彩鲸 Logo 生成与前端补丁脚本 └── docs/ # 官网静态站(GitHub Pages 发布) 构建 Windows 安装包(产物在 dist\) powershell -NoProfile -ExecutionPolicy Bypass -File dshd-package/build.ps1 macOS 安装包(需要网络下载 darwin 版 Electron/Node) powershell -NoProfile -ExecutionPolicy Bypass -File dshd-package/build-mac.ps1 品牌与插件 - 品牌补丁:whale-logo/patch-frontend.js(前端标题 / 图标 / 鲸鱼渐变) - 插件源码:dsh-skin-pack(皮肤包)、dsh-welcome(欢迎页),均为 Cordis 插件,MIT 协议 📦 官网 官网(本仓库 docs/ 目录)部署于 GitHub Pages: 🌐 weichi-ai.github.io/dshd 💬 社区 | 渠道 | 方式 | | QQ 交流群 | 929082451 | | 微信群 | 请访问官网扫码加入 | | 邮箱 | 2078580136@qq.com | ⭐ 支持我们 如果这个项目对你有帮助,欢迎 Star ⭐ 并分享给更多热爱探索的朋友,你的支持是我们持续前进的动力! 📄 License MIT © 2026 weichi-ai
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
weichi-ai/dshd
内置 Node 运行时,免安装直接运行桌面应用
相关插件 · 桌面端
Codex 任务面板chuspeeism/dashi-taskboard
现代化可灵活嵌入的任务面板,支持 Codex、DeepSeek Harness
★ 3,409已汉化DSH
71.7
多智能体自进化开发平台Prism-Shadow/penguin-harness
统一、稳定的 Agent 自进化框架全自动优化:任意模型 · 任意算法 · 任意 Benchmark
★ 3,125已汉化DSH
71.1
桌面宠物PC2005-cloud/dsh-pet
DSH 桌面宠物:一行命令装好即用的透明动画小桌宠,支持多开、大小位置随心配置;还内置 DIY 素材链,能用 AI…
★ 5,465已汉化DSH
71
多端 Agent 工作台GCWing/OpenBitFun
OpenBitFun 是一个高度可定制的开源 Agent 工作台,让任务按你的方式持续推进。
★ 3,457已汉化DSH
70.8
DSH Desktopanywhere-labs/dsh-desktop
为 DeepSeek Harness DSH 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 34,710已汉化DSH
70.7
桌面宠物伴侣OpenPetsHQ/openpets
桌面伴侣平台,带宠物、插件,还能选配本地智能体集成。
★ 1,353已汉化DSH
70.2
这是你的仓库?认领条目