我如何把 DeepSeek Harness 做成可双击启动的 Windows Launcher
DeepSeek Harness 已经提供了 Web 使用方式,但“能够运行”和“普通 Windows 用户愿意每天使用”之间,仍然隔着一段体验距离:需要安装运行时、记住启动命令、等待服务准备,还要处理后台进程和网页入口。
我想验证一件事:能不能不重新实现 Harness,只把外围的安装、启动和维护体验补完整?
这就是 DeepSeek Launcher 的出发点。
最终使用体验
Windows 用户安装后,只需要双击桌面的DeepSeek Launcher图标:
- 显示原生启动状态窗口;
- 在后台启动 DeepSeek Harness;
- 确保系统托盘正在运行;
- Harness 准备完成后自动打开 Web 界面;
- 如果启动失败,提供重试、查看日志、复制错误和打开 GitHub 等操作。
命令行没有被移除。交互式 Windows 终端直接运行deepseek会复用同一个启动窗口;需要纯终端输出、调试或脚本调用时,可以使用deepseek start。
1. 为什么不能只使用 windowsHide
最初最明显的问题,是双击快捷方式时会闪出 PowerShell 或 Node.js 终端。仅给 Node.js 子进程设置windowsHide: true,并不能保证整个派生进程树都没有可见控制台。
当前桌面启动链是:
桌面/开始菜单 → wscript.exe launch.vbs → 隐藏、非交互的 Windows PowerShell → startup-ui.ps1 → node deepseek.js startwscript.exe属于 GUI 子系统,不会先创建控制台窗口。它再以隐藏模式启动系统自带的 Windows PowerShell,从入口处避免终端闪窗。
项目没有为了一个启动窗口引入 Electron 或 WebView2。启动界面使用 Windows PowerShell、WinForms 和 GDI+ 本地绘制,安装后无需联网加载动画资源。
2. 启动等待必须让用户看得见
开机重启后的第一次启动通常比重复打开更慢。如果双击以后没有任何反馈,用户很容易认为自己没有点到,于是连续双击,甚至直接结束进程。
因此启动窗口只保留两条正常状态:
- 正在启动 DeepSeek Harness;
- 启动完成,正在打开浏览器。
窗口保持可拖动和响应,重复双击只会把现有窗口带到前台,不会重复启动 Harness。服务已经运行时则直接打开网页。
失败状态也不能只是一个突兀的错误框。当前界面会在相同视觉容器中提供重新启动、查看日志、复制错误信息、打开 GitHub 和退出,让错误成为可以继续处理的流程。
3. 完整版和轻量版为什么要同时存在
普通用户希望“下载以后就能安装”,高级用户则不希望重复携带运行时。因此 Windows Release 同时提供两种安装包:
- 完整版:内置经过固定 SHA-256 校验的官方 Node.js 24 LTS 压缩包,推荐普通用户;
- 轻量版:不包含 Node.js,适合已经安装 Node.js 22 或更高版本的用户。
完整版在安装阶段只复制预压缩的 Node.js 文件,不在 Inno Setup 主界面线程中展开大型node.exe。真正需要私有运行时时,再由独立进度窗口完成校验和准备,从而减少安装器长时间卡住、无法拖动的问题。
轻量版会在图形界面检查 Node.js 版本,缺失时给出官网、winget 命令和重新检测入口,不会静默安装系统依赖或突然弹出终端。
4. Harness 更新与 Launcher 更新必须分开
deepseek update原本用于更新上游@deepseek-ai/dshHarness,这个含义必须保留。
Launcher 自身使用另一组明确命令:
deepseek launcher versiondeepseek launcher update --checkdeepseek launcher updatedeepseek launcher rollback
Launcher 更新只接受本项目 GitHub Release 中的正式安装包和对应.sha256,校验失败立即停止。更新不会静默强制执行,交互模式必须由用户确认;非交互调用也必须明确传入--yes。
自动检查在托盘启动后后台进行,最多每 24 小时一次,不延迟 Harness 启动或网页打开。GitHub 超时、限流或不可达时静默跳过,Launcher 本身仍然正常使用。
5. 回退不能只显示一个“成功”
更新前,Launcher 会记录当前版本并尽量保留对应安装包。用户选择回退时,再次校验旧版安装包并要求确认。
只有下一次启动实际检测到版本变化,状态才会被认为成功。这样可以避免用户取消安装或安装失败后,界面却错误地显示“已经更新”或“已经回退”。
更新与回退只替换 Launcher 程序文件,不会删除、覆盖或重置%USERPROFILE%\.dsh中的模型配置、密钥、聊天数据和日志。
6. 当前限制
这个项目目前仍有明确边界:
- Windows 10 / 11 是完整桌面体验的主要平台;
- Harness 首次启动仍可能需要联网获取上游包;
- 安装包尚未进行商业代码签名,Windows 可能显示 SmartScreen 提示;
- 它是非官方社区 Launcher,不是 DeepSeek 官方客户端。
我更愿意把这些限制直接写清楚。对于安装类开源项目,可信度来自可检查的源码、Release、校验文件和诚实的边界,而不是一句“放心使用”。
项目地址
- GitHub:https://github.com/wyf-777/deepseek-launcher
- 官网:https://wyf-777.github.io/deepseek-launcher/
- License:MIT
如果你正在 Windows 上使用 DeepSeek Harness,欢迎实际体验后提交 Issue,尤其是首次安装、启动速度、网络环境和系统托盘方面的反馈。如果项目确实帮到了你,也欢迎在 GitHub 点一个 Star,让更多需要它的人看到。