dsh-desktop
dataelement/dsh-desktop加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一幕:你周日晚上准备动手做点自己的 Agent 工具,兴致勃勃地打开终端,敲下 npx @deepseek-ai/dsh web。终端刷了一屏依赖安装日志,终于在 127.0.0.1:3080 上冒出一个地址。你复制到浏览器,发现界面确实不错——Agent 在那儿,会话在跑,插件也加载上了。
然后你顺手合上了终端标签页。页面瞬间变成"无法连接"。你想起来:Harness 是本地服务,终端一关,服务就跟着没了。你又不得不把终端重新拉回来,盯着那一行行日志,确保这个"祖传窗口"永远不关。
这就是 DeepSeek Harness 生态在 2026 年下半年遇到的一道真实门槛。Harness 本身是一个相当激进的 Agent 运行时——"万物皆插件",45 万行的工程量,上游仓库两周冲过 19 万 Star——但它的官方入口仍然停留在命令行 + 浏览器网页这个形态。对开发者没问题,对想"点开就用"的人来说,这是一道实实在在的门槛。
DSH Desktop(开源仓库 dataelement/dsh-desktop)就是来解决这道门槛的。它由 Dataelem(数据元素)团队开发,是一个用 Electron 写的桌面外壳,把本地 DeepSeek Harness 封装成安装包:下载 DMG/NSIS 安装器、双击图标、Harness 自动在后台起来、独立的原生窗口直接打开完整界面。仓库 2026 年 8 月 13 日开源,两个多月后星标已经冲到 1.6 万,fork 544,Windows 与 macOS 双端签名发布,官网累计安装包下载量以十万计。

要理解 DSH Desktop,得先理解 DeepSeek Harness(Harness 是 DeepSeek 开源的 Agent 运行时,npm 包名 @deepseek-ai/dsh)。Harness 的核心哲学是"万物皆插件":工具、模型、会话、工具呈现层,全部拆成 Cordis 插件(@deepseek-ai/cordis 插件系统 + @deepseek-ai/cordis-plugin-* 系列),运行时通过事件溯源、单调权限、fail-closed 沙箱来保证"时空可组合性"。
DSH Desktop 的架构文档写得非常克制,第一句话就是自我定位:"DSH Desktop is an Electron host for the existing DeepSeek Harness runtime and Web UI. It does not maintain a second agent runtime or reimplement the Harness frontend."(DSH Desktop 是既有 DeepSeek Harness 运行时与 Web UI 的 Electron 宿主,它不维护第二套 Agent 运行时,也不重写 Harness 前端。)
这是很聪明的选择。不重写意味着不背技术债、不追上游迭代节奏、不重复踩坑——但也意味着你的上限被上游绑死。
运行拓扑长这样:
ELECTRON_RUN_AS_NODE=1 模式启动;Web UI 只绑定在随机 127.0.0.1 端口contextIsolation: true、nodeIntegration: false、开启 web security、禁用 webview、拦截非信任导航与新窗口,外链一律走系统浏览器代码库的语言分布是 JavaScript 2.6MB / TypeScript 2.25MB / HTML 646KB / Python 104KB,用的是 electron-vite 构建、electron-builder 打包、Vitest 跑测试,版本号 0.12.1,MIT 许可。
把 DSH Desktop 想象成"给一台工业发动机装上车身和钥匙"。
Harness 是发动机——动力强劲、结构精密,但只有懂行的人能直接开(命令行)。DSH Desktop 就是那套车身、方向盘、仪表盘和启动按钮:发动机还是原来那台,但你现在可以坐进驾驶座,拧钥匙就走。仪表盘(原生标题栏、菜单栏、主题、品牌)做了 macOS/Windows 双平台适配,中文用户还能在侧边栏看到"应用"/"编辑"原生菜单。
它的"数字钥匙"能力是最有意思的一处:手机协同。在 Harness 菜单里选 "Connect Phone…",手机扫码即可配对。同一 Wi-Fi 下扫码秒连;如果要走公网,默认用 Cloudflare Quick Tunnel 建立临时隧道,若 Cloudflare 起不来(典型场景是国内网络环境),自动降级到免费 Pinggy(约 60 分钟过期)。隧道那条路上还会多一道保险——电脑上会显示一个 6 位配对密码,默认临时(5 分钟、仅存内存),必须用户主动选择才会生成持久密码。断开手机连接会立刻作废该移动端会话。
PPT 生成是当前最抓人的能力。内置 16 套模板、192 种版式,输出的是可编辑的 PPTX,不是一张张贴图。打开 PPT 按钮、选模板、描述需求,产物就能直接在 PowerPoint/Keynote 里继续改。预览用英文,但产出可以用中文(配套了中文字体导出与 EMF 图片、字体访问、OOXML 命名空间一整套测试)。PPT 运行时预装在 packages/ppt-runtime,附带 DOCX/PPTX/XLSX 的离线技能和内置 Python 库。
可移植的 Agent 预设包(.dshpreset)解决的是"我调好的 Agent 配置怎么搬到另一台机器"。完整预设可导入导出,安装前有冲突检查和信任警告。
插件生态接入社区市场 dsh-market,可浏览搜索插件、预览截图、安装更新、启用停用、切换主题;插件的启用开关有单一权威来源——profiles/web/.dsh-market/state.json#disabled,Harness 启动时会跳过被关掉的包。
Safe Mode 与插件恢复是这类"壳 + 插件"应用最怕踩坑的地方,DSH Desktop 给出了一个相当完整的答案:启动失败时收集运行时日志与渲染器证据,通过 profile manifest、lockfile、bundle、加载器 entry ID、槽位冲突、依赖关系和 Cordis patch 行反查到底是哪个插件干的,然后给出定向处置而非让你重装。Safe Mode 会用一份只含官方核心 bundle 的隔离 profile 启动,Agent、会话、模型设置、工作区照常可用,第三方插件被暂时拦在外面,随时可回退。
升级不丢数据这一点做得踏实:profile、插件、工作区、会话、模型配置都存放在 Electron 的 per-user 数据目录(userData/harness/)里,不在安装目录内,应用升级不覆盖这些数据。构建产物也做了目标原生依赖(target-native dependencies),所以每个安装包都在对应操作系统与架构上构建。
对最终用户:门槛确实很低——官网下载稳定版,DMG/NSIS 安装器装完双击即可。macOS 版本有 Apple 代码签名与公证,Windows x64 有代码签名(但 SmartScreen 信誉积累需要时间,README 里明确提示"安全警告可能逐渐减少")。不支持 Linux,不支持 Windows ARM64,这是硬伤。
对开发者:需要 Node.js + npm,npm install 后 npm run dev 走 electron-vite 开发模式,提交前要跑 npm test、npm run typecheck、npm run build。测试目录非常夸张——300 多个测试文件,涵盖 PPT 渲染、字体布局、插件恢复、Safe Mode、手机隧道、签名公证、ASAR 打包布局等。
值得强调的是:仓库采用**补丁层(patch layer)**机制,patches/ + build/dsh-desktop.patch.yml 打在 Harness 上游包上,同时用 patch-package 管理 npm 补丁。这意味着跟踪上游 @deepseek-ai/dsh@0.2.1-rc.2 每次升级都要重打补丁——docs/ 目录里那一长串 harness-0.1.5-rc.1-upgrade.md、harness-0.2.1-rc.2-upgrade.md 就是补丁维护的账本。这是这个项目最实在的长期维护成本。

开源状态与上游版本错位是最直接的质疑点。README 自己写着"an early preview built on the rapidly evolving @deepseek-ai/dsh@0.2.1-rc.2",预览版可能与社区插件不兼容。而 open issues 里排前列的就是"请问,Harness 内核啥时候升级到最新版?"。桌面壳落后于 Agent 内核,对用户来说是相当别扭的体验。
成熟度问题的实证。198 个未关闭 issue,其中带 6-7 条讨论的高热度条目包括:
getUserMedia 被硬拒绝最后一条尤其值得警惕——在"插件化的 Agent 运行时"这个前提下,一个第三方插件的错误能拖垮整个插件加载链。Safe Mode 和恢复流程正是为这种场景设计的,但它们的有效性目前还停留在 issue 讨论阶段。
生态位拥挤。同一个 Harness 生态里至少有三个叫 "DSH Desktop" 的开源项目:anywhere-labs/dsh-desktop(32.1k star,插件生态派)、dataelement/dsh-desktop(原生安全派,本文主角)、以及 DeepSeekHarnessGreen(Python 标准库启动器 + 系统 WebView2)。社区已经有横评文章,结论是"底子一样,体验差不少"——dataelement 版的特点被概括为"Electron 原生体验、Safe Mode 排障、手机协同 + 隧道最成熟"。名字撞车本身就是成熟度问题的另一个注脚。
GitHub 界面上的其他瑕疵:仓库里有明显的提交历史污染痕迹——tags 列表里除正式的 v0.12.1 外,还有 windows-harness-test-20260815.1 到 .4 这类测试分支标签留在公开 tag 列表中;workflows 里有 backfill-archive.yml 这类非产品性质的自动化。这些细节不影响功能,但会让人对工程规范的成熟度打一点折扣。
规模与集中度:仓库 259MB,13,788 次提交,贡献者 23 人。团队规模不大,Harness 上游 rc 迭代频繁,desktop 端的追赶压力是真实的。
DSH Desktop 真正代表的是 2026 年下半年一条清晰的产品化路径:开源 Agent 运行时(CLI/Web)→ 桌面原生壳 → 一键安装的消费者体验。
这个路径的成本极低——不重写内核,只写"最后一公里"的原生壳,于是把"能用命令行"变成"能发给家人"。它的 1.6 万 Star 增长曲线,与 Harness 本体两周 19 万 Star 的爆发是同一条趋势的两段:先是基础设施被造出来,再是有人替普通人把门槛铲平。
同时,"Electron 壳 + 插件化 Agent 运行时 + 社区插件市场"这套组合正在成为一个可复用的模板。DSH Desktop 把手机协同、Safe Mode、补丁层升级、预设包移植、信任警告这些细节都踩过了一遍并开源出来——对于下一个想给某个 Agent 运行时做桌面版的人来说,这份工程文档的价值可能不亚于它的功能本身。
从产业视角看,值得关注的还有一点:DeepSeek 把 Harness 开源出来,社区随即长出了官方之外的桌面客户端、插件市场、预置包分发网络。当一个 Agent 运行时把插件系统做成一等公民,围绕它生长出的生态会在官方节奏之外跑得更快。 这是"开放内核 + 社区外壳"模式的又一次验证。
项目地址:https://github.com/dataelement/dsh-desktop | 官网:https://www.dshdesktop.com | 许可:MIT | 分析时间:2026-10-22