把网页运行时装进原生窗口,一键启动对话
27.5/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add cmmnhm/DeepSeek-Harness-Desktop该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · desktop
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 80 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 7 处,展示前 7 条)
- 读取本地文件main.mjs:48
if (!existsSync(bin)) { - 读取本地文件main.mjs:66
if (!existsSync(bin)) { - 读取本地文件main.mjs:76
const nodeExe = existsSync(bundledNode) ? bundledNode : 'node' - 读取本地文件main.mjs:83
if (existsSync(bundledNodeDir)) { - 读取本地文件main.mjs:89
if (existsSync(path.join(bundledPython, 'python.exe'))) { - 执行外部命令来自配置/变量main.mjs:113
const child = spawn(launch.command, launch.args, { - 执行外部命令固定命令main.mjs:188
spawn('taskkill', ['/pid', String(child.pid), '/T', '/F'], {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 网页运行时装入原生窗口
- 一键启动对话
把 DeepSeek Harness 的 `dsh web` 运行时以原生窗口形式交付的 **Electron 薄外壳**
README
由 DeepSeek 最新模型翻译生成DeepSeek Harness — 桌面客户端(Electron 薄外壳)
⚠️ 注意:本程序不是独立项目。需要先 git clone https://github.com/deepseek-ai/deepseek-harness.git 编译 Harness 源码,再将本目录(desktop/)拷贝到 Harness 仓库中进行编译,生成客户端可执行文件。
把 DeepSeek Harness 的 dsh web 运行时以原生窗口形式交付的 Electron 薄外壳。
主界面
对话界面
设置界面
Harness 本体是一个 Node 进程(dsh web = --profile web,boot host 运行时 + webserver + 构建好的 React 前端,监听 http://127.0.0.1:3080)。所有重活都在这个进程里;本外壳只负责:
1. 拉起 harness 运行时(desktop/main.mjs)
2. 等待其打印的地址(默认 http://127.0.0.1:3080)
3. 在原生 BrowserWindow 中渲染该地址,并管理 harness 子进程的生命周期
这个方案贴合项目官方设计路线:架构笔记《GUI 分层与 RPC 协议》明确预留了 “在 Electron 中使用与 dsh web 相同的 Web 技术启动”。
展开完整文档(README 剩余 1 节)
DeepSeek Harness — 桌面客户端(Electron 薄外壳)
⚠️ 注意:本程序不是独立项目。需要先 git clone https://github.com/deepseek-ai/deepseek-harness.git 编译 Harness 源码,再将本目录(desktop/)拷贝到 Harness 仓库中进行编译,生成客户端可执行文件。
把 DeepSeek Harness 的 dsh web 运行时以原生窗口形式交付的 Electron 薄外壳。
主界面
对话界面
设置界面
Harness 本体是一个 Node 进程(dsh web = --profile web,boot host 运行时 + webserver + 构建好的 React 前端,监听 http://127.0.0.1:3080)。所有重活都在这个进程里;本外壳只负责:
1. 拉起 harness 运行时(desktop/main.mjs)
2. 等待其打印的地址(默认 http://127.0.0.1:3080)
3. 在原生 BrowserWindow 中渲染该地址,并管理 harness 子进程的生命周期
这个方案贴合项目官方设计路线:架构笔记《GUI 分层与 RPC 协议》明确预留了 “在 Electron 中使用与 dsh web 相同的 Web 技术启动”。本外壳复用现有的 host/client 全部能力,无需重复实现任何业务逻辑。
两种运行模式
| 模式 | 判定 | harness 来源 | Node 来源 |
| 开发 | app.isPackaged === false(或 DSH_DEV=1) | 检出的仓库 apps/cli/lib/bin.js --profile web | 系统 node(复用仓库 node_modules 与原生插件) |
| 打包 | app.isPackaged === true | resources/runtime 部署闭包 | resources/node(可选,本地捆绑) |
目录结构
desktop/
main.mjs Electron 主进程(薄外壳) electron-builder.yml 打包配置(Windows x64: nsis + portable) package.json 仅含 electron / electron-builder 开发依赖 scripts/ dev.mjs 开发模式启动 prepare-runtime.mjs 预安装全部依赖 + 可选 Node/Python 运行时
resources/ (gitignore) 预安装的运行时载荷
runtime/ harness 部署闭包:node_modules + dsh bin + web dist
node/ (可选) 捆绑的 Node 运行时
python/ (可选) 捆绑的 Python 运行时
快速开始
前置
- 仓库根目录已 pnpm install 且 pnpm build(apps/cli/lib 与 apps/web/dist 已生成)。
- 首次运行需在 desktop/ 安装外壳依赖:
pnpm --dir desktop install # 或 cd desktop && npm install
开发模式(验证本地可启动)
pnpm --dir desktop dev
会拉起仓库的 dsh web 并打开原生窗口加载 UI。开发模式直接复用仓库现有 node_modules 与原生插件,不压缩、不生成产物——用于快速验证。
预安装全部依赖与运行时
pnpm --dir desktop prepare:runtime
该脚本会把:
- 全部 Node 依赖(@deepseek-ai/* 插件 + 三方依赖 + Web 前端 dist)通过
pnpm deploy 物化为自包含的 resources/runtime 闭包——即“预先安装所有依赖”。
前端 dist 经 require.resolve('@deepseek-ai/dsh-web-frontend/dist/index.html') 通过 node_modules 解析,因此闭包天然自包含,无需改路径。
- Node 运行时(可选):设置 DSH_VENDOR_NODE=1 会下载 Node win-x64 到 resources/node,让最终用户无需安装 Node。
- Python 运行时(可选):设置 DSH_PYTHON_SOURCE= 会将其拷贝到 resources/python(供 Python SDK / code-runtime 离线使用)。
说明:为免影响你正在快速迭代的仓库,desktop/ 不在 pnpm workspace 里,是独立自包含工程,拥有自己的依赖与忽略规则。
打包 Windows 安装器
先 prepare:runtime 生成载荷,再:
pnpm --dir desktop build:win
在 desktop/dist/ 生成 DeepSeek Harness-Setup-.exe(nsis 安装器)与 DeepSeek Harness-Portable-.exe(绿色版)。二者都内嵌 resources/runtime (+ 可选的 node/python),离线可用。
一次性说明 / 注意
- 原生插件 ABI:prepare:runtime 物化的 node_modules 里的原生模块(node-pty、koffi、better-sqlite3 等)是在打包机器的 Node 版本下构建的。若最终用户机不装 Node,请在打包机用 DSH_VENDOR_NODE=1 捆绑同一个 Node 版本,使 ABI 匹配。开发模式不受此影响(直接用系统 Node)。
- Visual C++ 运行时(重要):闭包内的原生模块(尤其 koffi 驱动的“打开文件夹” 对话框)依赖 msvcp140.dll / vcruntime140.dll / vcruntime140_1.dll(VC++ 2015-2022 Redistributable)。未安装该运行时的机器上,目录选择会失败,报 ... worker exited before reporting a result。prepare:runtime 会自动从构建机 System32 把这几个可再分发 DLL 拷贝到 resources/node/,main.mjs 将 resources/node 注入 harness 的 PATH;因此无需用户另行安装运行库。这些 DLL 属于可再分发组件,可随客户端分发。
- 原生选择器自动降级:Windows 原生“打开文件夹”对话框在子进程里用 koffi 驱动 COM。若某台机器上它的依赖无论如何无法初始化(CRT/ABI 损坏、shell COM 异常等), harness 启动时会先对原生对话框做一次无窗口自检;自检失败则自动改用 browse 交互(客户端内置的纯 Web 目录树,不依赖任何原生组件),保证在所有机器上都能选择文件夹,而不是抛 worker exited before reporting a result。启动日志会打印 falling back to the browse picker 提示。
- 退出清理:窗口关闭/应用退出时,外壳会 taskkill /T /F 拉起的 harness 进程组,避免遗留 node-pty / sandbox 子进程。
- 自定义图标:把 desktop/assets/icon.ico 放入并在 electron-builder.yml 的 win.icon 上引用(当前用 Electron 默认图标)。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
cmmnhm/DeepSeek-Harness-Desktop
把网页运行时装进原生窗口,一键启动对话
相关插件 · 桌面端
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
这是你的仓库?认领条目