双击启动原生窗口运行 dsh 网页界面
29.5/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Aliarrrrr/dsh-desktop该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · vision
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 47 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 29 处,展示前 28 条)
- 读取本地文件src/main.js:83
const parsed = JSON.parse(fs.readFileSync(settingsPath, 'utf8')) - 写入本地文件src/main.js:92
fs.mkdirSync(path.dirname(settingsPath), { recursive: true }) - 写入本地文件src/main.js:93
fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2), 'utf8') - 读取本地文件src/main.js:112
const id = crypto.createHash('sha256').update(fs.readFileSync(sourcePath)).digest('hex').slice(0, 16) - 写入本地文件src/main.js:114
fs.mkdirSync(backgroundsDir(), { recursive: true }) - 读取本地文件src/main.js:115
if (!fs.existsSync(target)) fs.copyFileSync(sourcePath, target) - 读取本地文件src/main.js:130
if (!file || !fs.existsSync(file)) return null - 读取本地文件src/main.js:132
return 'data:image/' + ext + ';base64,' + fs.readFileSync(file).toString('base64') - 删除本地文件src/main.js:174
fs.rmSync(path.join(backgroundsDir(), previous), { force: true }) - 读取本地文件src/main.js:437
const injectScript = fs.readFileSync(path.join(__dirname, 'inject.js'), 'utf8') - 写入本地文件src/main.js:677
fs.writeFileSync(path.join(SMOKE_ROOT, 'smoke-shot-ui.png'), shotUi.toPNG()) - 写入本地文件src/main.js:748
fs.writeFileSync(path.join(SMOKE_ROOT, 'smoke-shot.png'), shot.toPNG()) - 写入本地文件src/main.js:780
fs.writeFileSync(path.join(SMOKE_ROOT, 'smoke-shot-bg.png'), shot2.toPNG()) - 读取本地文件src/server.js:85
if (fs.existsSync(nodeExe) && fs.existsSync(bin)) { - 读取本地文件src/server.js:96
if (envRepo && fs.existsSync(path.join(envRepo, 'apps', 'cli', 'lib', 'bin.js'))) { - 读取本地文件src/server.js:114
if (fs.existsSync(bin) && fs.existsSync(path.join(repo, 'node_modules'))) { - 发起网络请求src/server.js:153
const res = await fetch(url, { signal: controller.signal, redirect: 'manual' }) - 执行外部命令来自配置/变量src/server.js:267
const child = spawn(spec.cmd, spec.args, { - 执行外部命令固定命令src/server.js:421
spawn('taskkill', ['/pid', String(this.child.pid), '/T', '/F'], { windowsHide: true, stdio: 'ignore' }) - 读取本地文件src/version.js:20
const parsed = JSON.parse(fs.readFileSync(path.join(root, 'bundle', 'manifest.json'), 'utf8')) - 读取本地文件src/recovery.js:26
return JSON.parse(fs.readFileSync(file, 'utf8')) - 写入本地文件src/recovery.js:33
fs.mkdirSync(path.dirname(file), { recursive: true }) - 写入本地文件src/recovery.js:34
fs.writeFileSync(file, JSON.stringify(value, null, 2) + '\n', 'utf8') - 写入本地文件src/log.js:23
fs.mkdirSync(dir, { recursive: true }) - 读取本地文件src/log.js:25
fileSize = fs.existsSync(filePath) ? fs.statSync(filePath).size : 0 - 写入本地文件src/log.js:27
fs.renameSync(filePath, filePath + '.1') - 写入本地文件src/log.js:38
fs.renameSync(filePath, filePath + '.1') - 写入本地文件src/log.js:51
fs.appendFileSync(filePath, line)
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 原生窗口运行网页界面
- 自定义背景图
DeepSeek Harness 桌面应用:套在 dsh web UI 外面的 ChatGPT 风格轻量窗口,支持自定义背景图。
README
由 DeepSeek 最新模型翻译生成dsh-desktop — DeepSeek Harness 桌面版
把「命令行跑 dsh web,再开浏览器访问」变成双击即用的原生窗口:窗口里就是 DeepSeek Harness 的 Web UI(逐字节一致),外加自定义背景图片。
桌面设置面板
早期预览版,目前仅支持 Windows。安装包未做代码签名,首次运行可能触发 SmartScreen 提示。
这是什么
它不是 dsh 的另一套前端,而是一个托管本地 dsh 服务的原生外壳:
┌───────────────────────────────────────┐
│ Electron 窗口 │ 原生窗口 / 托盘 / 菜单 / 单实例 │ └── 加载 dsh 的 Web UI │ └──────────────┬────────────────────────┘ │ http://127.0.0.1:/?token=…
展开完整文档(README 剩余 1 节)
dsh-desktop — DeepSeek Harness 桌面版 把「命令行跑 dsh web,再开浏览器访问」变成双击即用的原生窗口:窗口里就是 DeepSeek Harness 的 Web UI(逐字节一致),外加自定义背景图片。 桌面设置面板 早期预览版,目前仅支持 Windows。安装包未做代码签名,首次运行可能触发 SmartScreen 提示。 这是什么 它不是 dsh 的另一套前端,而是一个托管本地 dsh 服务的原生外壳: ┌───────────────────────────────────────┐ │ Electron 窗口 │ 原生窗口 / 托盘 / 菜单 / 单实例 │ └── 加载 dsh 的 Web UI │ └──────────────┬────────────────────────┘ │ http://127.0.0.1:/?token=… ┌──────────────▼────────────────────────┐ │ dsh 服务(子进程,受监督) │ 真身在这里 │ DSH_HOME = ~/.dsh │ 与 CLI 共享会话与凭据 └───────────────────────────────────────┘ 所以任务管理器里会有两个 node.exe(Electron 外壳 + dsh 服务),这是设计如此——不是「桌面端和 web 版各跑了一份」。服务只监听 127.0.0.1 的随机端口,不对外暴露。 快速开始 安装版 1. 运行 DeepSeek Harness Setup.exe(或从 Releases 下载) 2. 双击桌面 / 开始菜单的「DeepSeek Harness」 安装体积约 450 MB,内含 Electron、便携 Node.js 22 与 @deepseek-ai/dsh 运行时——不需要预装 Node,也不需要联网(除调用模型 API 外,首次启动会在 %USERPROFILE%\.dsh 建立本地配置)。 从源码运行 git clone https://github.com/Aliarrrrr/dsh-desktop.git cd dsh-desktop npm install npm run bundle:server # 构建内置运行时(便携 Node + dsh),约 260 MB npm start bundle:server 是推荐的一步:跑过之后桌面端自带运行时,不依赖系统 Node、也不依赖你其他的 dsh 安装。跳过它也能跑——此时会依次回退到「指向 deepseek-harness 检出」和 npx。 功能 桌面体验 - 真正的窗口,不是浏览器 --app= 伪装:原生菜单、托盘、单实例、窗口尺寸记忆 - 托盘常驻:关窗不结束应用,长时间任务继续跑;托盘提示显示服务状态与端口 - UI 与浏览器一致:Web 代码零改动——直接访问同一个服务,界面逐字节相同 可靠性 - 服务受监督:意外退出或连续两次探活失败即自动重启,指数退避(1/2/4/8 秒),最多 3 次后停手(避免坏插件导致每秒起一个进程) - 启动失败有出路:恢复页提供三个可逆动作 - 重试启动 - 安全模式启动:只加载官方核心插件,会话与模型配置照常可用 - 禁用第三方插件:把插件条目移入备份字段(不删文件),可随时恢复 - 服务地址用 dsh 独有指纹确认,不会因为「某个前端恰好监听 3080」而误连 - 会话令牌不落日志:日志与界面只暴露 origin 个性化 - 自定义背景图片:右下角齿轮 →「桌面设置」 - 本地图片(png / jpg / webp / gif / bmp)、四种显示方式 - 背景淡化滑杆(0–90%):只淡化背景层,UI 文字始终清晰 - 图片按内容哈希去重,替换时清理上一张 - 与主题插件兼容:未设背景时不覆盖任何样式;设了也只接管主表面 token (bg-base / bg-layer-1 / sidebar-fill),其余 token 仍由主题插件控制 安全 - 渲染进程隔离:contextIsolation 开启、无 Node 能力、桥接 API 固定且不可篡改 - IPC 固定白名单(8 通道)+ 参数校验 + 路径穿越防护;无 eval、无 shell 拼接 - 恢复动作只读写 profile 文件,不启动任何进程,且全部可逆 - 注入脚本只注入 http(s) 页面,本地恢复页不会长出设置面板 - 详见 SECURITY.md(含威胁模型与已知边界) 版本管理 桌面端使用内置的固定 dsh 版本,与系统里 CLI 安装的 dsh 相互独立。 - 版本钉在 package.json 的 dshRuntime 字段(当前 0.1.6-alpha.1),安装时用 --save-exact:同一份源码永远构建出同一套运行时 - 每次构建写入 bundle/manifest.json(应用 / dsh / Node / 平台 / 构建时间),应用启动时读取,显示在设置面板底部并写入日志 - 两者共享 ~/.dsh 下的会话与凭据,但插件档(profile)各自管理 - 升级内置版本:改 dshRuntime → npm run bundle:server --force → 重新打包,并在 CHANGELOG 记录 - 临时试某个版本:npm run bundle:server -- --force --dsh-version=0.1.5-rc.2 数据位置 | 内容 | 位置 | | dsh 会话 / 凭据 / 插件档 | %USERPROFILE%\.dsh(DSH_HOME,与 CLI 共享) | | 桌面设置 | %APPDATA%\DeepSeek Harness\settings.json | | 背景图片 | %APPDATA%\DeepSeek Harness\backgrounds\ | | 运行日志 | %APPDATA%\DeepSeek Harness\logs\desktop.log(超过 2 MB 轮转) | 从源码 npm start 运行时,userData 是 %APPDATA%\dsh-desktop(Electron 取 package.json 的 name);打包安装版才是 %APPDATA%\DeepSeek Harness。 排查问题时两个位置都看一下,改动时间最新的那个才是刚跑的。 开发 常用命令 npm start # 运行桌面端 npm test # 功能单元检查(12 项,纯 Node,可在无 GUI 环境跑) npm run security-check # 静态安全审计(54 项断言) npm run verify # 上面两项,CI 在打包前执行 npm run smoke # 端到端冒烟:真实启动应用、注入、背景、持久化 + 截图 改了代码后,至少跑一遍 npm run verify;涉及 IPC 通道或桥接 API 的改动,要同步更新 scripts/verify-security.mjs 里的白名单,否则断言会红。 构建安装包 npm run bundle:server # 拉取内置运行时到 bundle/ npm run dist # 生成 NSIS 安装包(release/) npm run dist:dir # 只生成免安装目录(release/win-unpacked/) bundle:server 结束前会真实启动一次服务做自检:如果裁剪或安装把依赖弄坏了,构建会直接失败,而不是等你打开应用才发现。 网络受限时 构建需要下载便携 Node 与 dsh 依赖,两步都支持镜像回退: | 用途 | 默认 | 回退 | 环境变量 | | 便携 Node | nodejs.org | npmmirror → 阿里云 | DSH_DESKTOP_NODE_MIRROR | | npm 依赖 | registry.npmjs.org | npmmirror | DSH_DESKTOP_NPM_REGISTRY | 例:全程走国内镜像 export DSH_DESKTOP_NPM_REGISTRY=https://registry.npmmirror.com/ npm run bundle:server --force 某些网络下官方 npm registry 会挂起而不报错,构建看起来像卡死。 遇到就显式指定镜像;脚本对单个请求设了 60 秒超时,会较快失败并尝试下一个源。 常见问题 启动后有个服务在监听端口,是不是多跑了一个? 不是。那是桌面端自己的后端(见上文「这是什么」)。想彻底停掉(连服务一起):托盘图标右键 →「退出」;直接关窗口只是收进托盘,服务会继续跑。 能让它复用手动跑着的 dsh web 吗? 会。若 127.0.0.1:3080 上有 dsh 服务,桌面端会复用它而不是再起一个(避免两个进程写同一份会话)。设 DSH_DESKTOP_NO_REUSE=1 可关闭。注意:如果那个实例需要令牌,桌面端拿不到,会改为启动自己的实例。 启动失败进不去界面? 应用会显示恢复页,依次尝试「重试启动」→「安全模式启动」→「禁用第三方插件」。 诊断信息与日志路径都在恢复页上。 服务中途挂了? 会自动重启,最多 3 次;状态显示在托盘提示与「帮助」菜单里。 怎么知道用的是哪个 dsh 版本? 右下角齿轮 →「桌面设置」面板底部;构建产物里也有 bundle/manifest.json。 杀软 / SmartScreen 提示未知发布者? 安装包未签名。正式分发前需要补代码签名证书。 想用本地仓库而不是内置运行时? 设 DSH_DESKTOP_REPO 指向一个已安装依赖(有 node_modules)的 deepseek-harness 检出即可;服务定位优先级见 src/server.js。没有依赖的源码树会被跳过。 项目结构 dsh-desktop/ ├─ src/ │ ├─ main.js # 主进程:窗口、托盘、IPC、状态同步、恢复动作 │ ├─ server.js # dsh 子进程:命令解析、探活、崩溃重启、终止 │ ├─ recovery.js # 恢复动作:安全模式 profile、可逆禁用插件 │ ├─ version.js # 读取 bundle/manifest.json │ ├─ log.js # 日志落盘(2 MB 轮转,写失败不影响主流程) │ ├─ preload.js # 渲染进程桥接(固定 API) │ └─ inject.js # 注入页面脚本:背景应用器 + 桌面设置面板 ├─ assets/ # 图标、启动闪屏、启动失败恢复页 ├─ scripts/ # bundle 构建、冒烟、单元检查、安全审计 ├─ bundle/ # 内置运行时 + manifest.json(构建生成,不入库) └─ release/ # 打包产物(不入库) 许可 MIT License,版权归 Aliarrrrr 所有(见 LICENSE)。 第三方依赖许可见 THIRD_PARTY_NOTICES.md。 本项目封装自 @deepseek-ai/dsh(DeepSeek Harness,MIT);Electron(MIT)与 Chromium 组件的许可见各自项目。本项目是独立的社区项目,不代表 DeepSeek 官方发行或背书。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Aliarrrrr/dsh-desktop
双击启动原生窗口运行 dsh 网页界面
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,364已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,709已汉化DSH
71.8
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,319已汉化DSH
71.5
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,533已汉化DSH
71.1
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 93,105已汉化DSH
71.1
这是你的仓库?认领条目