DeepSeek Harness Hub
← 返回列表

桌面窗口外壳kkaktus463/dsh-desktop

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

把命令行服务装进托盘窗口,一键启动看护进程

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/23 · 已提供中文文档

DeepSeek Harness 的原生桌面窗口。一个 Tauri 封装,而非分支。

综合分
28.3
GitHub 分
28.3
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add kkaktus463/dsh-desktop
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

DSH Desktop

基于 Tauri 的 DeepSeek Harness 轻量桌面外壳:一个窗口、一个托盘图标,以及对服务
进程的看护。harness 本身是官方版本 —— 这是外壳,不是分支。

功能

启动时先检查端口。如果 harness 已在运行,应用直接连接过去,退出时不会动它;如果
端口空闲,应用会自行启动 harness,并在退出时结束整个进程树。

关闭窗口只是把它收进托盘,harness 继续运行。通过托盘菜单退出;双击托盘图标可以
重新打开窗口。

两种构建

| 版本 | 适用对象 | 内容 |
|---|---|---|
| lite | 机器上已有 Node 或 harness | 仅应用本体,约 2 MB |
| full | 不想安装任何东西 | 应用 + Node + harness,约 46 MB |

完整版自带 Node 和 harness 软件包,因此无需 Node、无需 npm、无需联网即可运行。
轻量版依赖机器上已有的 harness,按下方的来源顺序查找。

为完整版准备运行时(下载 Node 和软件包):

npm run fetch-runtime

src-tauri/runtime/ 不纳入版本库 —— 该脚本会完整重建它。

从源码运行

npm install
npm run dev

构建

npm run build        # 轻量版
npm run build:full   # 含内置运行时
npm run build:both   # 两者,分别放入 dist/lite 和 dist/full

两种构建写入同一个 target/release/bundle 目录,后者会覆盖前者,因此
build:both 会依次构建并把结果收集到 dist/。

单次构建产生两个文件:

| 内容 | 位置 |
|---|---|
| 安装包 | src-tauri/target/release/bundle/nsis/DSH Desktop_0.1.0_x64-setup.exe |
| 免安装 exe | src-tauri/target/release/dsh-desktop.exe |

免安装版无需安装,但需要 WebView2 运行时 —— Windows 10 和 11 均已自带。安装包在
缺失时会自动获取。

应用未签名,因此首次运行时 SmartScreen 会发出警告。对未签名程序而言这是正常现
象,只有购买代码签名证书才能消除。

语言

界面和所有消息支持中文、英文和俄文。语言取自系统区域设置;无法识别时回退到英文。
覆盖方式:

set DSH_LANG=zh

接受 ru、en、zh。文案集中在 src-tauri/src/i18n.rs 以及
ui/index.html 内的词表中。

图标

源文件为 assets/icon.png。替换后重新生成整套图标:

npx tauri icon assets/icon.png

配置

环境变量:

| 变量 | 含义 |
|---|---|
| DSH_PORT | harness 端口,默认 3080。 |
| DSH_REPO | 本地源码目录 —— 在其中运行 pnpm dsh web。 |
| DSH_COMMAND | 完整的启动命令,优先于其他所有来源。 |
| DSH_LANG | 界面语言:ru、en、zh。 |

未设置变量时,应用会自动查找来源,由快到慢:

0. 内置运行时 —— 仅完整版;
1. PATH 中的 dsh —— 全局安装;
2. 常见位置中的 deepseek-harness 目录(桌面、主目录、Documents、
projects、src),通过根 package.json 识别;
3. npx -y @deepseek-ai/dsh web —— 从 npm 下载。

最后一种方式是为完全没有 harness 的机器准备的。如果应用提示正在下载,而你确实
已经有 harness,说明它不在搜索范围内 —— 请用 DSH_REPO 指明路径。

端口冲突

当端口被 harness 以外的程序占用时,应用既不会崩溃,也不会只丢出一句错误:它会查出
占用端口的程序(名称和进程号),挑选第一个空闲端口,并给出选择 —— 在该端口启动
harness,或直接打开已经在响应的页面。所选端口会被记住,因此只会询问一次。

应用绝不会结束他人的进程。它无法区分被遗忘的旧进程和你正需要的服务器,而判断错误
的代价是丢失工作成果。

端口已打开但尚未响应不算冲突:应用最多等待十秒,因为 harness 会先接受连接,之后
才提供第一个页面。

启动耗时

内置运行时、本地源码目录和自定义命令都从磁盘启动,限时两分钟。npx 方式首次使用
时可能需要下载软件包,限时十分钟;启动画面会说明正在下载,而不是看起来卡住。

诊断

harness 的输出写入 %LOCALAPPDATA%\dsh-desktop\harness.log。GUI 进程没有控制台,
如果没有这个文件,启动失败的原因将无处可查。每次启动都会重写该文件。

同时只运行一个实例:再次启动会唤起已打开的窗口。

结构

src-tauri/src/main.rs      窗口、托盘、退出处理、冲突界面
src-tauri/src/server.rs    来源选择、启动与停止 harness
src-tauri/src/platform.rs  Windows、macOS、Linux 之间的所有差异
src-tauri/src/i18n.rs      消息词表
src-tauri/src/settings.rs  跨次启动保留的内容
ui/index.html              启动画面与冲突界面

启动画面立即显示,harness 在独立线程中启动,就绪后窗口跳转到其地址。就绪的判断标准
是真实的 HTTP 响应,而不仅仅是端口已打开。若启动失败,启动画面会显示错误内容、
所用命令以及日志路径。

平台

所有系统调用都集中在 src-tauri/src/platform.rs:外壳、进程树终止、监听表读取和
数据目录都按 #[cfg] 区分。代码可在 Windows、macOS 和 Linux 上构建,但目前仅在
Windows 上实际验证过。

每种安装包格式只能在对应系统上生成:Windows 生成 .exe,macOS 生成 .dmg,
Linux 生成 .deb 和 .AppImage。Tauri 的交叉构建并不实用,因此
.github/workflows/release.yml 会在相应的 GitHub runner 上构建这三种格式,并收集
到草稿版本中。触发方式为 v* 标签或手动运行。

限制

这里没有插件市场,也没有自动更新 —— 它是外壳,不是分支。密钥和设置仍然保存在
dsh 原本的位置:~/.dsh。

通过任务管理器强制结束应用会让 harness 继续运行:此时任何退出处理都来不及执行。

许可证

MIT,© 2026 kkaktus463。可以自由使用、修改和分发,包括商业用途;唯一的条件是随附
许可证文本。

完整版会分发并非本项目所有的软件,各部分保留各自的许可证:

- Node.js —— 其许可证与二进制文件放在一起:runtime/LICENSE.node.txt;
- harness 软件包及其依赖 —— 许可证文件位于 node_modules 内,随代码一同打包;
- DeepSeek Harness 本身 采用 MIT 许可证,本项目未对其进行修改。

轻量版不含上述任何内容 —— 它只是外壳本身。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(kkaktus463)的其他插件

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群