把 DSH 装进 Electron 桌面应用,提供原生窗口、托盘、profile 切换、独立终端与更新检查,无需在浏览器里打开网页版。
- 语言
- TypeScript
- License
- MIT
- 分支
- master
安装
$ dsh plugin --profile web add github:anywhere-labs/deepseek-harness-desktop/dsh-plugin-desktop在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
一句话定位
把 DeepSeek Harness 装进一个 Electron 桌面应用,用原生窗口和系统托盘替代"在浏览器里打开本地网页"的使用方式。安装后的应用名为 DSH Desktop,界面内容仍然是 DSH 官方的那一套。
核心能力
- 以桌面应用形式启动 DSH:进程内起一个只监听本机回环地址的服务,再用原生窗口加载它,导航被限制在这个地址内
- 提供系统托盘菜单:重新打开窗口、切换 profile、打开专用终端、检查更新、切换界面模式、退出应用
- 在托盘里切换 profile(插件组合),切换以"先保存、再有序重启"的方式生效,启动失败会自动回滚一次
- 提供两套界面外观:兼容模式沿用系统原生边框与官方界面;高级模式在 macOS 使用毛玻璃标题栏、在 Windows 使用 Mica 材质
- 在 macOS/Windows 打开一个以当前 profile 为工作目录的系统终端,其中
dsh命令默认作用于当前 profile - 检查并下载新版本安装包:定时静默检查,手动检查则一定给出结果对话框
技术实现
- 语言: TypeScript
- 关键依赖: electron(宿主运行时,peer 依赖)、@deepseek-ai/cordis(插件编排)、@deepseek-ai/dsh 系列 0.1.0-rc.6(Host 与 Web 客户端能力)、koffi(Windows 卷信息诊断)
- 架构模式: 打包后的可执行文件只做最小启动:抢单实例锁、解析当前 profile、装好原生运行时能力,然后在 Electron 主进程里启动 Cordis 根。功能通过
cordis.patch.yml以多行插件形式插入(桌面壳、终端、包管理、profile、更新),窗口与托盘由带清理逻辑的 effect 持有;界面通过回环 HTTP/WebSocket 加载,不使用 preload 桥,渲染进程开启上下文隔离与沙箱、关闭 Node 集成 - 入口文件:
src/main.ts(Electron 启动器)、src/index.ts(桌面壳插件)、src/bin.ts(无图形环境也能跑的命令行入口)
适用场景
适合已经在用 DSH、但不想每次都开浏览器标签页的人:装上后就有一个可以放在 Dock 或任务栏里的独立应用,窗口关掉还留在托盘里。也适合需要在多套插件组合之间来回切换的用户,托盘的 profile 菜单比手工改配置再重启更省事。如果你只在服务器上跑无界面的 DSH,这个插件对你没有意义。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| Node.js | ^22.19.0 或 >=24.0.0 | 由包的 engines 字段声明 |
| DSH | 0.1.0-rc.6 | 固定依赖该版本的 DSH 包族,未声明宽松范围 |
| Electron | 43.4.0 | peer 依赖;用 npm 全局安装会自动带上,在 profile 里安装需手动补装 |
| 平台 | macOS / Windows / Linux | 三端可运行,但 Linux 只有兼容模式,且没有托盘终端与更新下载 |
| 原生模块 | koffi、node-pty | koffi 用于 Windows 卷诊断;打包产物包含 node-pty 预编译二进制 |
安装方式
dsh plugin --profile web add github:anywhere-labs/deepseek-harness-desktop/dsh-plugin-desktop
配置项
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| 界面模式 | compatibility | advanced | 选择原生外观:兼容模式用系统边框加载官方界面,高级模式换成桌面专属外观;修改后重启生效,Linux 不接受高级模式 | compatibility |
| 窗口宽度 | 数字(CSS 像素) | 首次打开时的窗口宽度,不小于 800 | 1280 |
| 窗口高度 | 数字(CSS 像素) | 首次打开时的窗口高度,不小于 600 | 840 |
| 最小宽度 | 数字(CSS 像素) | 允许缩到的最窄宽度,不小于 640 | 900 |
| 最小高度 | 数字(CSS 像素) | 允许缩到的最矮高度,不小于 480 | 640 |
| 后台检查更新 | 布尔 | 关闭后打包版不再定时查新版本,托盘手动检查仍可用 | true |
| 首次检查延迟 | 毫秒 | 启动后等多久做第一次更新检查 | 60000 |
| 检查间隔 | 毫秒 | 一次检查结束到下一次检查之间的等待时间 | 21600000(6 小时) |
| 单次请求超时 | 毫秒 | 一次版本查询的最长等待时间,超时按静默失败处理 | 15000 |
界面模式还可以直接写在 DSH home 的 settings.yaml 里(dsh-desktop.mode),托盘里的选择改的是同一份文件。
常见问题
Q: 安装这个插件后就能直接双击打开桌面应用吗?
A: 不一定。启动需要 electron 存在:用 npm install -g dsh-plugin-desktop 会自动装上 electron,而通过 profile 安装时不会自动装,需要再补一次 dsh plugin --profile <name> add electron。缺少时命令只打印安装指引,不会抛模块错误。
Q: 桌面版看到的界面和网页版一样吗?
A: 默认的兼容模式就是加载官方网页界面,只是外面套了带系统边框的原生窗口,macOS 会隐藏页面标题、Windows 会去掉菜单栏。切到高级模式后,macOS 换成透明标题栏加侧边栏毛玻璃,Windows 换成 Mica 背景。
Q: 怎么切换界面模式?
A: 从托盘菜单里选,或手工编辑 DSH home 的 settings.yaml,把 dsh-desktop.mode 写成 compatibility 或 advanced。两种方式改的都是同一份文件,提交后应用会有序重启,不会在运行中热切换。
Q: Linux 能用吗?
A: 能启动,但只支持兼容模式,写成高级模式会被拒绝而不是降级;托盘里的"打开 DSH 终端"命令在 Linux 上不组合进来,更新包下载也不提供。
Q: 切换 profile 会丢聊天记录吗?
A: 不会。官方 profile 默认共用同一个 DSH home 下的会话、设置与存储,切换只是换一套插件组合并重启,不会复制或迁移数据。自定义 profile 可以主动把某个存储位置改到别处。
Q: 我给 profile 新加了插件,为什么桌面应用里没看到?
A: 启动器不监听 profile 清单的变化,增删插件后需要重启桌面应用才会生效;从托盘切换一次 profile 也会顺带完成这次重启。
Q: 更新是自动装好的吗?
A: 不是。打包版启动 60 秒后查一次,之后每次检查完成 6 小时再查;发现更新才提示下载。macOS 会打开下载好的 DMG,需要你手动替换应用;Windows 需要确认后才运行安装器。检查失败、无网络或版本相同时全程静默。
Q: 关掉窗口是不是就退出程序了?
A: 不是。关闭窗口只是把窗口隐藏,后台的 Cordis 树继续运行,可从托盘重新打开;真正退出要在托盘里选择退出命令,或发送 SIGINT/SIGTERM。
上手难度
入门 — 装好后从托盘就能完成模式切换、profile 切换和更新检查,默认配置即可运行;只有在 profile 内安装时需要额外补一个 electron 依赖。
已知问题与限制
- 增删 profile 里的插件后必须重启应用,启动器不监听 profile 清单变化
- 切换兼容/高级模式必然重启应用,运行中的窗口不会热切换外观或插件行
- Linux 不支持高级模式,也没有托盘终端命令和更新包下载
- Windows 上暴露给环境的
pnpm与 Node 辅助命令是.cmd脚本,第三方插件若以不走 shell 的方式直接调用会失败,应改用受管服务或走 shell 的启动方式 - 更新流程只校验下载文件的完整性,不校验发布者身份;本地构建的 Windows 安装包未签名,可能触发未知发布者或 SmartScreen 警告
- 界面与后台之间走的是本机回环 HTTP/WebSocket,而不是 Electron IPC,替换它需要上游 DSH 提供传输扩展点
- 依赖固定在已发布的 DSH 0.1.0-rc.6 包族上,未声明更宽的版本范围
- 第三方市场包
dshmarket@1.2.3未预装且不兼容本插件提供的 profile 与包管理能力,需等其发布适配版本
DeepSeek Harness Desktop(DSH Desktop)
面向 Windows 和 macOS 的开源 DeepSeek Harness 桌面客户端。
一键下载,开箱即用。
万物皆「插件」,桌面本身也是「插件」。
社区维护的开源项目,并非 DeepSeek 官方产品。中文 · English
DSH Desktop 把 DeepSeek Harness 的本地 Web UI、Host 服务和插件系统装进原生桌面应用。官方 Harness 以固定版本原样运行;Desktop 负责窗口、托盘、终端、更新和工作配置,并通过官方插件机制与 Harness 组合。
下载与安装
当前正式安装包支持 Windows x64 和搭载 Apple 芯片的 macOS。普通用户不需要单独安装 Node.js、pnpm 或 DSH。
| 平台 | 下载 | 安装方式 |
|---|---|---|
| Windows x64 | 下载安装程序 | 运行 NSIS 安装程序并按提示完成安装 |
| macOS Apple Silicon | 下载 DMG | 打开 DMG,将 DSH Desktop 拖入 Applications |
也可以从 GitHub Releases 获取安装包和 SHA-256 摘要。首次启动会创建默认 desktop profile,并在本机启动官方 DSH Web 界面。详细步骤、插件命令和故障排查见用户指南与常见问题。
我们希望和所有插件作者一起,构建一个开放、可组合、可持续的 DSH 插件生态,让每个插件都能与其他插件共同进步:DSH 插件生态倡议书。
文档
普通用户从用户指南开始即可;开发者文档只在需要扩展或维护时才需要阅读。
用户文档
| 目标 | 入口 |
|---|---|
| 安装和日常使用 | 用户指南 |
| 快速确认平台、环境和使用边界 | 常见问题 |
| 了解项目为什么存在 | 为什么做 DSH Desktop |
| 查看全部文档与 README 分工 | 文档索引 |
开发者与维护者文档
| 目标 | 入口 |
|---|---|
| 阅读插件生态倡议书 | 插件生态倡议书 |
| 编写普通或 Desktop 插件 | 插件开发 |
| 参与统一插件 contract 讨论 | DSH Community Fabric Draft |
| 了解统一插件框架为什么这样设计 | 成熟框架与真实插件调研 |
| 查看插件市场的产品与安全设计 | DSH Community Market |
| 了解桌面插件可以使用的能力 | 桌面插件接口说明 |
| 了解桌面应用如何工作 | 架构说明 |
| 查阅包级构建与发布细节 | dsh-plugin-desktop/README.md |
主要功能
Desktop把官方 DeepSeek Harness 的本地 Web UI 带到原生桌面。应用自动启动和管理本地 Harness 服务,集成系统托盘与桌面窗口,无需安装 Node.js 或执行命令。 |
手机远程控制
通过 iOS 和 Android 远程连接 Desktop,在手机上发起任务、查看 Agent 进度,并在需要时继续跟进。 |
插件市场
我们正在通过 DSH Community Market 设计插件发现、详情和确认安装体验。当前只有产品与安全文档,尚未提供可用市场页面。 |
共建插件生态DSH 的插件生态由社区共同建设。官方、桌面和第三方插件遵循统一的约定,装在一起也能一起工作、互不干扰;欢迎加入共建,详见 DSH 插件生态倡议书。 |
插件生态
插件是给 DSH 添加能力的扩展包——模型、工具、界面、工作流都可以做成插件,像搭积木一样自由组合。
DSH Desktop 没有魔改上游源码,也不是一个固定写死的外壳。官方 DeepSeek Harness 以固定版本原样运行;桌面壳本身——窗口、托盘、终端、更新、工作配置——就是一个合法的 DSH 插件,通过官方插件机制与官方能力组合进同一个运行时。从核心 agent 到桌面外壳,整个产品遵守同一条"一切皆插件"的规则:官方生态里的插件可以直接用,桌面能力也按插件的方式组合、替换和演进。
我们希望插件生态像手机应用一样:每个插件按同一套规则开发,装在一起也能一起工作、互不干扰。
给开发者
与许多其他项目不同,这个项目本身就是一个 DSH 插件:桌面壳与第三方插件走同一条官方组合路径。Desktop 的插件能力已经可以使用。我们提供了 Desktop 服务,让插件开发者能够把插件与桌面能力集成起来:例如查看和切换工作配置,或在当前配置中安装、更新和移除插件。完整用法见桌面插件接口说明。为什么选择这样的边界、哪些能力不会暴露给第三方插件,见为什么做 DSH Desktop和插件开发指南。
与官方项目的关系
本项目基于 deepseek-ai/deepseek-harness 构建。
本项目是基于 DeepSeek Harness 和 Cordis 插件思想的实现,旨在成为 DSH 桌面体验的基础设施。
官方项目提供核心的智能体能力、插件系统和 Web UI。本项目主要负责:
- 桌面应用封装
- 本地服务的启动、停止与恢复
- 桌面窗口和系统托盘集成
- macOS、Windows 安装包构建与发布
- 更适合桌面使用的界面体验
如果你希望通过命令行运行 Harness,或者参与核心功能开发,请优先查看官方仓库。
特别感谢
特别感谢 DeepSeek Harness 原始仓库 和 DeepSeek AI 团队。DSH Desktop 基于固定版本的上游源码构建,核心的智能体、模型、工具、会话、Web UI 和插件生态都来自这个项目。
同时感谢 Cordis 项目提供的插件化基础。没有这些开源项目,就不会有 DSH Desktop。
也感谢 Koishi.js 项目和社区长期积累的插件化实践、工具与经验,以及所有参与讨论、测试、反馈和插件开发的社区成员。
以及每一个使用、支持和参与共建的你。
开发
桌面端代码位于 dsh-plugin-desktop/,外层仓库使用 Yarn,固定的 deepseek-harness/ 子模块继续使用自己的 pnpm workspace。从仓库根目录执行:
git submodule update --init --recursive
corepack yarn install --immutable
corepack yarn dev
headless 检查使用 corepack yarn check;完整的构建、测试和发布边界见架构说明和包级 README。如何参与贡献见 CONTRIBUTING.md。
社区交流
可选择常用的平台参与讨论,交流使用问题、插件开发和项目进展。
| 微信群 | QQ群 |
|---|---|
![]() | ![]() |
Discord:加入 DeepSeek Harness Desktop 社区
如果您希望加入我们的技术团队,也欢迎通过 t4wefan@qq.com 联系我们。
友情链接
这里收录 DeepSeek Harness 生态项目及开发者工具。
| 项目 | 简介 | 链接 |
|---|---|---|
| dshfind | DeepSeek Harness(DSH)学习与分享社区。 | GitHub |
| DSH 1024Store | 面向 DeepSeek Harness(dsh)生态的社区插件目录(收录 4120 个插件),并开源了在线插件市场、目录流水线与公开查询 API,可 fork 自建市场。 | GitHub |
| ModLens | 为 DeepSeek Harness 和纯文本 Coding Agent 提供 OCR、版面与语义识别能力。 | GitHub · 官网 |
| DeepSeek Harness 橙皮书 | DeepSeek Harness 社区实测手册。 | GitHub |
| dsh-web-ui | DeepSeek Harness Web UI 插件与皮肤合集。 | GitHub · 展示站 |
| dsh-TUI | DeepSeek Harness 全屏交互式终端界面。 | GitHub |
| dsh-tianshu-tui | DSH Web 端交互式终端极简风格 UI 插件,自研 ANSI 渲染核心、极致丝滑流畅;在官方基础上增加了 TDD、证据门、视觉图像模块等工作流。 | GitHub |
| Agents-Anywhere | 从手机远程控制电脑上的 Coding Agent。 | GitHub |
| DSH-better-sidebar | DeepSeek Harness 侧边栏工作台,集成文件、终端、Git 和子代理。 | GitHub |
| Awesome DeepSeek Harness | DeepSeek Harness 插件、工具与基础设施精选列表。 | GitHub · 官网 |
| MkSaaS · TanStarter(赞助商) | 面向独立开发者的商业 SaaS 启动模板。MkSaaS 基于 Next.js,TanStarter 基于 TanStack Start 与 Cloudflare,内置 AI、认证、支付和后台等常用能力。 | MkSaaS · TanStarter |
如果希望收录您的项目,欢迎加入微信群并私信 @王博升Benson,或联系 t4wefan@qq.com,或提出 issue。
License
本项目遵循 MIT License。
本项目是基于 DeepSeek Harness 构建的社区桌面版本,并非 DeepSeek 官方产品。
本项目完全开源免费。如果有人向您以任何形式出售此软件,请拒绝交易。
DeepSeek 是 DeepSeek AI 的商标。DSH Desktop 是独立的社区项目,与 DeepSeek 官方没有隶属关系,也未获得其背书。

