Back to home

zeckauh

DSH_Desktop

DeepSeek桌面版,支持Windows 10/11(x64)、macOS、Linux(x64)不同操作系统一键安装

Stars
1
Language
JavaScript
Created
Aug 15, 2026
Updated
Aug 15, 2026

Introduction

DeepSeek Harness Desktop

Release License Stars Platforms

👇 快速开始:去 GitHub Releases 下载对应平台的安装包,安装后双击即可使用,无需安装 Node.js。

把官方命令行 @deepseek-ai/dsh 封装成真正的跨平台桌面客户端

  • 原生窗口运行 —— DeepSeek Harness 界面直接显示在应用窗口里,不再跳转到浏览器;
  • 系统托盘 / 原生菜单 / 单实例 / 窗口状态记忆 —— 体验接近 VS Code / Codex 这类桌面 IDE;
  • 内置 dsh 运行时 —— 打包进应用,首次启动无需联网下载;没有安装 Node.js 也能运行;
  • 一键安装 —— Windows .exe、macOS .dmg、Linux .AppImage / .deb
  • 自动更新 —— 启动后后台检查新版本,一键重启安装。

✨ 功能特性

特性说明
🖥️ 原生窗口Harness 界面内嵌应用窗口,无地址栏/标签页/浏览器外壳
🧩 系统托盘常驻关闭窗口最小化到托盘,服务后台继续运行
📦 内置运行时应用自带 Electron 与 dsh,最终用户零依赖
🔄 自动更新基于 GitHub Releases,发现新版自动下载、一键安装
🧠 窗口状态记忆记住位置/大小/最大化状态;显示器变更时自动避让屏幕外
🛡️ 单实例重复启动只聚焦已有窗口
🔗 外链安全窗口内外部链接自动转默认浏览器打开
🔍 插件搜索顶部菜单「搜索」按 topic: dsh-plugin 搜索 GitHub 第三方插件
🌍 三平台Windows x64 / macOS (Intel + Apple Silicon) / Linux x64

一、下载与安装(面向最终用户)

Windows 10/11

  1. 下载 DeepSeek Harness Desktop-<版本>-windows-setup.exe
  2. 双击运行安装程序(可自定义安装目录,自动创建桌面/开始菜单快捷方式);
  3. 双击「DeepSeek Harness」图标即可启动。

若 SmartScreen 提示「未知发布者」,点击「更多信息 → 仍要运行」即可(应用未做代码签名)。

macOS(Intel / Apple Silicon)

  1. 下载对应架构的 DeepSeek Harness Desktop-<版本>-mac-<x64|arm64>.dmg
  2. 双击打开 DMG,把应用拖入「应用程序」;
  3. 首次打开如被 Gatekeeper 拦截,右键应用 →「打开」,再点「打开」确认。

Linux(x64)

  • AppImage:下载后执行 chmod +x *.AppImage 再双击运行,无需安装;
  • deb(Debian/Ubuntu):sudo apt install ./DeepSeek\ Harness\ Desktop-<版本>-linux-amd64.deb

二、使用

  • 启动后应用会在后台拉起 Harness 服务,就绪后自动在窗口内显示界面;
  • 关闭窗口 = 最小化到系统托盘(服务继续后台运行),右键托盘图标可「打开界面 / 退出」;
  • 「退出」会停止后台服务;再次启动即可恢复;
  • 菜单栏「帮助 → 打开日志目录」查看运行日志;
  • 插件搜索:菜单栏「搜索 → 🔍 搜索 dsh-plugin 插件」可搜索 GitHub 上的第三方插件 (topic: dsh-plugin,支持关键词过滤、按 Star 排序);「搜索 → 浏览 dsh-plugin 插件库」 可直接打开 GitHub 插件主题页;
  • 自动更新:安装版启动后会在后台检查新版本(更新源为 GitHub Releases), 发现新版本自动下载,完成后提示一键重启安装;也可通过菜单「帮助 → 检查更新」手动检查;
  • 数据与配置仍保存在 ~/.dshDSH_HOME),与命令行版互通。

三、配置

运行一次后,应用数据目录下会生成可编辑的 config.json

平台位置
Windows%APPDATA%\DeepSeek Harness Desktop\config.json
macOS~/Library/Application Support/DeepSeek Harness Desktop/config.json
Linux~/.config/DeepSeek Harness Desktop/config.json
{
  "port": 3080,
  "host": "127.0.0.1"
}

出于安全,dsh web 只绑定 127.0.0.1host 请保持默认。


四、从源码构建(面向开发者)

环境要求:Node.js 22+(仅构建需要;最终用户不需要)。

# 1. 安装依赖
npm install

# 2. 生成跨平台图标(首次/修改图标后)
npm run icons

# 3. 本地开发运行(原生窗口 + 开发者工具)
npm run start:dev

# 4. 打包安装包
npm run dist:win     # Windows  -> dist/*.exe
npm run dist:mac     # macOS    -> dist/*.dmg(需在 macOS 上执行)
npm run dist:linux   # Linux    -> dist/*.AppImage, dist/*.deb

# 5. 无 GUI 冒烟测试(验证服务拉起,不创建窗口)
npm run smoke

自动构建(GitHub Actions)

推送 v* 标签(或手动触发 workflow)会在三个平台并行构建并发布到 GitHub Release:

git tag v1.0.0 && git push origin v1.0.0

产物:Windows -setup.exe、macOS -dmg(x64/arm64)、Linux .AppImage + .deb


五、工作原理

启动应用
  └─ Electron 主进程
       ├─ ServerManager 解析运行环境(内置 dsh > npx 缓存 > npx 下载)
       ├─ 后台拉起 `dsh web --port <port>`
       ├─ 轮询端口就绪
       └─ BrowserWindow 加载 http://127.0.0.1:<port>(原生窗口,非浏览器)
  • 运行环境优先级:内置 dsh + 系统 Node内置 dsh + Electron 内置 Node(无系统 Node 时)npx 缓存npx 联网下载
  • 若启动时端口已被占用(例如你手动跑着 npx @deepseek-ai/dsh web),应用直接连上现有实例、只显示窗口,退出时不会误杀它;
  • 单实例锁:重复双击只会聚焦已有窗口,不会重复启动。

六、项目结构

electron/
  main.js            主进程:窗口/托盘/菜单/单实例/生命周期
  server-manager.js  跨平台服务管理(定位运行环境、拉起/看护/停止 dsh)
  updater.js         自动更新(electron-updater + GitHub Releases)
  config.js          配置读取
  window-state.js    窗口状态持久化
  menu.js            原生菜单
  preload.js         contextBridge 暴露的只读桌面信息
  loading.html       启动加载页
  error.html         启动失败页
  assets/            运行时图标(由 scripts/generate-icons.js 生成)
  plugins-search.js  GitHub 插件搜索(主进程:GitHub Search API + IPC)
  inject-plugin-search.inject.js  注入「设置 → 插件」页面的搜索面板(浏览器端)
scripts/
  generate-icons.js  零依赖生成 ico/icns/png 图标
  smoke.js           无 GUI 冒烟测试
build/
  entitlements.mac.plist
.github/workflows/build.yml   三平台自动构建与发布

七、历史说明

早期的「后台启动 + 打开浏览器」Windows 脚本封装(launcher.jsstart.vbsstop.vbslogs.vbstray.ps1setup.ps1uninstall.ps1refresh-icon.ps1assets/dsh.iconode-path.txt)已被 Electron 客户端完全取代,并已从仓库移除。


常见问题

Q:应用窗口里显示的是网页吗? 是 Harness 的本地 Web UI,但它运行在应用自带的原生窗口内(无地址栏、无标签页、无浏览器外壳), 并拥有独立应用图标、菜单栏、托盘与单实例行为,等同于一个桌面客户端。

Q:为什么没有代码签名 / 报「未知发布者」? 发布未配置代码签名证书。企业/正式分发时可在 electron-builder 配置中接入 Windows 代码签名、Apple Developer ID 公证等,见 electron-builder 文档


🤝 贡献

欢迎任何形式的贡献:报 Bug、提需求、改进代码、完善文档。

反馈问题 / 提需求

Issues 新建 issue,请选择对应的模板 (Bug 报告 / 功能建议),并尽量附上:

  • 操作系统与版本、应用版本(菜单「帮助 → 关于」可见)
  • 复现步骤、期望行为、实际行为
  • 运行日志(菜单「帮助 → 打开日志目录」)

提交代码

  1. Fork 本仓库并克隆到本地;
  2. 创建功能分支:git checkout -b feature/你的功能
  3. 修改代码,并保证 npm run smoke 冒烟测试通过;
  4. 提交并推送到你的 Fork,然后发起 Pull Request(请填写 PR 模板)。

开发环境

npm install       # 安装依赖
npm run icons     # 生成图标(首次/修改图标后)
npm run start:dev # 本地开发运行
npm run smoke     # 无 GUI 冒烟测试

📄 许可证

MIT © DH_Desktop contributors

使用本项目代码请保留 MIT 版权声明(LICENSE 文件或版权注释)。