dsh-desktop
已验证 · 实测可装 ReachGa0
功能简介
Electron桌面壳,无需终端或浏览器运行
可用 — 实测通过,早期项目
Electron桌面壳,无需终端或浏览器运行 实测能干净安装、正常启动。早期项目,但功能可用。
「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
dsh-desktop
English summary · An Electron desktop shell for DeepSeek Harness (dsh web) on Windows — double-click to run the harness in a standalone window. Region screenshot to ask AI, system tray, session manager, auto environment setup. Full English docs: README.en.md
DeepSeek Harness 的 Electron 桌面壳:双击图标,一个独立窗口运行 dsh web —— 不用开终端、不用敲命令、不用切浏览器。
纯壳,不改动 dsh 本身。服务端复用全局安装的 @deepseek-ai/dsh。
✨ 特性
- 📸 选区截图提问:一键截屏 → 全屏遮罩实时框选(GPU 加速、8 方向手柄微调)→ 自动粘贴到聊天框 → AI 直接看图回答;截图时自动隐藏聊天窗口
- 🗂️ 会话管理:
Alt → 文件 → 会话管理…列出所有会话,一键删除(永久清理聊天记录) - 🪟 独立窗口:原生桌面窗口加载 Harness Web UI,可最小化到任务栏
- 🍱 系统托盘:关窗口最小化到托盘常驻,右键菜单可随时显示/退出
- 🔄 便捷刷新:
F5/Ctrl+R/ 右下角悬浮按钮,重新加载 Web UI——前端类插件(皮肤、布局、增强)装完刷新即生效,无需重启应用 - 🧭 环境自动引导:首次启动自动检测 Node.js / dsh,缺失时引导一键安装,小白也能搞定
- 🔧 可换端口:
npm start -- --port 3081解决端口占用 - 🧠 智能复用:检测到已有的 dsh 服务就直接复用,不重复启动
- 🧹 干净退出:关窗口只杀自己启动的 dsh 进程,绝不误杀外部服务
- 🔒 单实例锁:防止双开冲突
- 🎨 安全加固:
contextIsolation+sandbox+ 禁用 Node 集成,外部链接走系统浏览器 - 📦 一键安装包:
npm run dist生成 NSIS 安装程序
原理
- 启动时探测
127.0.0.1:3080是否已有 dsh 服务; - 没有 → 自动执行
dsh web --port 3080(日志在%APPDATA%/DeepSeek Harness Desktop/dsh.log); - 就绪后打开 Electron 窗口加载 Web UI;
- 关窗口 → 自动杀掉由本壳启动的 dsh 进程树(手动起的外部服务不会被误杀)。
📸 选区截图提问

- 点右下角 📸(聊天窗口自动隐藏)
- 全屏遮罩上拖动框选区域(实时显示,画完可拖 8 个手柄微调)
- 点 ✔ 确定(或双击 / 回车)→ 聊天窗口恢复
- 截图自动进入聊天框 → 输入问题 → AI 看图回答
配合 ModLens 等识图插件,DeepSeek 文本模型也能看懂图片。
截图同时自动保存到~/.dsh/screenshots/(托盘右键可打开目录)。
前提
- Node.js ≥ 22(v24 验证通过)
- 全局安装 dsh:
npm i -g @deepseek-ai/dsh(0.1.0-rc.6 验证通过) - 如需覆盖 dsh 路径,设置环境变量
DSH_BIN(例如指向源码构建的apps/cli/src/bin.ts)
安装与运行
cd Desktop\deepseek_work\dsh-desktop
npm install
npm start
国内网络下 Electron 二进制下载可能很慢或失败,用镜像:
set "ELECTRON_MIRROR=https://cdn.npmmirror.com/binaries/electron/" npm install
换端口(3080 被占用时):
npm start -- --port 3081
首次打开后:设置 → 模型 → 填入 DeepSeek API Key,然后选择工作区即可使用。
打包成安装程序
npm run dist
产物在 release/ 下:dsh-desktop-<版本>-setup.exe(NSIS 安装包)。
自定义图标:放一个 assets/icon.ico(≥256×256),并在 package.json 的 build.win 里加 "icon": "assets/icon.ico"。
常见问题
- 启动失败弹窗:看
%APPDATA%/DeepSeek Harness Desktop/dsh.log;确认dsh --version可用。 - 端口被占:用
npm start -- --port <新端口>换一个端口即可。 - 改了 dsh 版本:重新
npm i -g @deepseek-ai/dsh即可,壳无需改动。 - 截图没进聊天框:点一下输入框按
Ctrl+V(截图已在剪贴板)。 - 关闭窗口后应用还在:正常!它最小化到托盘了,右键托盘图标选"退出"。
贡献
欢迎提 Issue 和 PR!项目很小,代码都在 src/ 里,容易上手。
License
安装
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 dsh-desktop」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
该插件是 GitHub 源码(未发 npm)——直接从仓库装:
Web profile:
dsh plugin --profile web add github:ReachGa0/dsh-desktop Headless(CLI)profile:
dsh plugin --profile headless add github:ReachGa0/dsh-desktop 实测报告
验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。
使用场景
把 dsh 跑成原生桌面应用——独立窗口、托盘图标、快捷键——而不是浏览器标签。
适合谁
想要已安装应用的感觉和系统集成(托盘、全局热键、开机自启)的人。
二次开发建议
原生壳是缝——加全局快捷键、通知、单实例锁或按 OS 定制的行为。