DeepSeek Harness 插件:DSH-Launcher(零依赖、零残留的 Windows 启动器)

DSH 采用“一切皆插件”的理念。在 Windows 环境下,直接启动 dsh web 往往面临依赖复杂、进程残留或窗口闪烁等问题。dsh-launcher 作为一个轻量级启动器,旨在解决这些问题,提供一个无需额外运行时、关闭浏览器即自动清理的启动方案。

这是什么

dsh-launcher 是一个用 Rust 编写的单文件 Windows OS 启动器,专门用于启动 dsh (DeepSeek Harness) 的 Web UI。它不依赖 WebView2,不携带额外的运行时依赖,体积仅几百 KB。

安装与启用

该插件以 dsh 插件的形式分发,安装过程无额外拦截。

dsh plugin --profile web add github:alvinpro/dsh-launcher

安装后,可执行文件会随包进入 node_modules\dsh-launcher\dist\dsh-launcher.exe。

基本用法

1. 默认启动

双击 dsh-launcher.exe 即可运行。无需配置文件,默认以 dsh web 启动,监听端口 3080。

2. 命令行启动

如需自定义端口或参数,可通过命令行覆盖。

dsh-launcher.exe --port 8899 --args "web --port 8899"

3. 配置文件(可选)

config.json 是可选的。优先级顺序为:命令行参数 > config.json > 内置默认值。

若需固定端口或参数,可复制 config.example.json 并修改。

{
  "dsh_path": "",
  "url": "http://127.0.0.1:8899",
  "port": 8899,
  "timeout_secs": 40,
  "package": "dsh",
  "args": ["web", "--port", "8899"]
}

4. 验证解析链

在不实际启动的情况下,仅验证 dsh 命令的解析链。

.\dsh-launcher.exe --check

工作原理

该启动器通过六个步骤管理 dsh 的生命周期:

  1. 探测:检查端口是否已就绪。若已就绪,直接打开浏览器并退出,避免重复启动。
  2. 解析:按顺序尝试从配置路径、本地离线包 (vendor\dsh\)、系统 PATH 以及 npx 获取 dsh,并用 dsh --version 校验可用性。
  3. 拉起:使用 CREATE_NO_WINDOW 隐藏窗口拉起 cmd.exe,并立即绑定 JobObject,确保后续的进程树管理。
  4. 就绪:进行 TCP 连通性检查与 HTTP 响应双重校验(端口通 ≠ 服务就绪)。校验通过后,使用 ShellExecuteExW 前台唤起浏览器。
  5. 联动:关闭拉起的浏览器会导致 dsh 自动停服;若浏览器本就在运行,则进入常驻模式,通过托盘图标退出。
  6. 清理:无论通过何种方式退出(正常、托盘、强杀),JobObject 均会终止整个进程树,实现零残留。

核心特性

  • 自动发现:支持配置路径、本地离线包、系统 PATH 和 npx 的自动发现,无需全局安装。
  • 真实就绪探测:采用 TCP + HTTP 双重校验,并具备自适应退避和超时保护机制。
  • 零残留:利用 JobObject 的 KILL_ON_JOB_CLOSE 属性,确保任何退出路径下进程树被彻底清理。
  • 浏览器联动:关闭浏览器自动停服,共享实例则进入常驻模式,不会误杀正在使用的浏览器窗口。
  • 调用系统默认浏览器:不捆绑浏览器,直接调用系统默认浏览器打开服务地址。
  • 无窗体验:GUI 子系统运行,无控制台窗口,无黑屏闪烁。日志落盘于 dsh-launcher.log,出错时弹窗提示。
  • 异常守护:探测期 dsh 提前退出或超时均有明确的错误处理逻辑。
  • 单文件:约 360KB 的 exe,内嵌图标,零运行时依赖。
  • 不依赖 WebView2:原生 Win32 托盘与弹窗,无需安装 Edge/WebView2 运行时,兼容 Windows 7+。

退出码说明

退出码 含义
0 正常退出
1 配置错误或 dsh 启动失败
2 端口已就绪但服务响应异常
3 等待服务超时
4 dsh 进程提前或异常退出
5 dsh 命令解析或自动安装失败(含 npm 不存在)

适用场景与注意事项

  • 系统要求:仅支持 Windows 7 及以上系统。
  • 权限说明:插件以当前 dsh 进程的权限运行。安装前建议检查源码与许可证(MIT)。
  • 快捷方式:首次运行 dsh plugin add 后,桌面快捷方式会自动创建一次,指向随包附带的 exe,之后不再重建。

总结

DSH-Launcher 解决了 Windows 下启动 DSH Web UI 的核心痛点:依赖复杂、进程残留和窗口闪烁。通过 Rust 实现的单文件、零依赖设计,它提供了一个极简且可靠的启动方案。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜