Featured image of post DeepSeek Harness 桌面端开源:Electron 客户端登场,自定义协议替代本地 Web 服务

DeepSeek Harness 桌面端开源:Electron 客户端登场,自定义协议替代本地 Web 服务

DeepSeek 正式开源其桌面客户端实现,采用 Electron 封装,内置 Node.js 运行时并启用安全沙箱。

桌面端正式开源:Developer Preview 阶段

桌面端正式开源:Developer Preview 阶段
桌面端正式开源:Developer Preview 阶段|新闻截图

DeepSeek Harness 官方仓库 apps 目录已加入 desktop 子项目,标志着 DeepSeek 首款桌面客户端的开源。该项目目前处于 Developer Preview 状态,GitHub Releases 尚未提供可直接下载安装的 DMG 或 EXE 包件。

  • 开发启动方式:pnpm install && pnpm run dev:desktop
  • 发布状态:Developer Preview(存在破坏性兼容变更风险)
  • 支持平台:macOS arm64、macOS x64、Windows x64(暂不支持 Linux)
  • 正式发布障碍:macOS 需签名公证,Windows 需 EV 签名

Git 历史显示,首批 Electron 打包代码于 8 月下旬进入仓库,后续补全了 Windows 构建、macOS 签名公证、自动更新与启动恢复功能。

架构突破:无本地 Web 服务的桌面设计

架构突破:无本地 Web 服务的桌面设计
架构突破:无本地 Web 服务的桌面设计|新闻截图

桌面端最显著的技术反差在于:界面几乎与 Web 端一致,但完全不启动本地 Web 服务。传统 Electron 应用常通过 http://127.0.0.1:xxxx 加载 Web UI,而 DeepSeek 采用全新链路:

1
浏览器 Renderer → dsh-app:// 自定义协议 → Electron 主进程 → Node.js 子进程 → dsh Runtime

具体实现解析:

  • dsh-app:// 二合一分离协议:dsh-app://shell 提供启动页与插件管理器;dsh-app://app 转发 API 请求至后端
  • 独立 Node.js 运行时:内置固定版本 Node.js、pnpm 及完整生产依赖树,规避 Electron 自带 Node ABI 与系统 Node 版本不确定性
  • 数据流隔离:Fetch 请求通过带版本分帧字节管道(单帧 ≤64KiB)传输;IPC 仅处理 ready/fatal/shutdown 生命周期消息
  • 严格安全沙箱:nodeIntegration: false,contextIsolation: true,sandbox: true,webSecurity: true

功能差异:共享 UI,独占壳层能力

桌面端与 Web 端业务功能高度一致(对话/轨迹/会话/模型/权限/工具展示),真正新增功能集中在“桌面壳”层:

  • 原生工作区选择:使用操作系统原生目录选择窗口
  • 独立插件管理器:支持安装/删除/更新/启用/停用插件;失败后保留现场供人工修复
  • 启动失败恢复页:不依赖 Harness Host,提供重启/禁用插件/重置配置选项
  • 集成自动更新:electron-updater 更新包裹 Electron Shell + 匹配版 dsh + Node.js + pnpm + 依赖树整体(避免版本错配)

Desktop 与 CLI/SDK 共享 $DSH_HOME 下数据(会话/设置/凭据/工作区),但隔离运行时依赖(插件激活状态/锁文件/node_modules)

用户落地建议

用户落地建议
用户落地建议|新闻截图

建议再等等的用户:

  • 普通终端用户:Developer Preview 阶段不稳定,暂无正式安装包
  • Linux 用户:当前暂无构建支持

可立即体验的用户:

  • Coding Agent 桌面客户端开发者:可参考 Electron 封装与插件隔离方案
  • 桌面 Agent Runtime 研究者:可学习 Node.js 子进程嵌入与 IPC 设计
  • 插件系统架构师:可借鉴插件管理失败保留现场与热重启机制

写在最后

DeepSeek 正在将 CLI 工具形态的 Harness 框架,演进为具备完整产品宿主边界的本地 Agent 平台。此次桌面端开源,意味着其桌面壳层技术栈已趋成熟,为未来扩展系统级能力(通知/托盘/跨应用集成)预留了 architecture runway,而无需重构底层 Agent Runtime。