dsh-pwa-launcher:把浏览器 PWA 快捷方式变成真正的 DSH 桌面启动器

前言

在 Windows 上把 DeepSeek Harness(DSH)用 Edge 或 Chrome「安装为应用」后,桌面或任务栏会多一个看起来像独立软件的图标。双击它执行的其实是浏览器代理命令,目标只是 http://127.0.0.1:3080/ 这类本地地址;dsh web 没跑起来时,点图标只会看到错误页。浏览器出于安全设计,不允许 PWA 快捷方式直接拉起本机进程,所以「点图标就顺带把服务拉起来」不能指望快捷方式本身完成。

社区插件 dsh-pwa-launcher(维护者 liudapeng0311,分类:客户端)接管的正是这一次双击:保留你已有的图标与外观,把背后要执行的逻辑换成启动器;并在 Web 界面会话标题右侧增加「重启 | 版本」胶囊,用于整进程重启与 dsh 自助升级(含失败回滚)。仅支持 Windows 10/11,许可证为 MIT。插件以当前 dsh 进程权限运行,安装前请自行查看源码与许可证。

这是什么

dsh-pwa-launcher 是 DSH 的 web profile 插件(包名 dsh-pwa-launcher,当前资料中版本为 1.11.0)。它做两件事:

  1. 桌面侧:识别并接管浏览器生成的 PWA 快捷方式(可配置为自行新建),部署 %LOCALAPPDATA%\DeepSeekHarness 下的启动脚本;双击时若服务未就绪则静默拉起 dsh web,就绪后再用浏览器应用窗口打开界面。
  2. Web 侧:在 dsh 官方扩展槽 conversation.session.header.utilities 注册 UI,提供重启与版本检查/升级,不修改 dsh 核心、也不 import dsh 内部包。

DeepSeek Harness 生态强调「一切皆插件」;SkillHub 目录页 是社区站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

双击图标:拉起服务再开窗

装插件之前,服务未运行 → 双击 → 错误页。装之后:

双击桌面图标
装之前 服务没跑 → 错误页
装之后 服务没跑 → 自动拉起 → 界面打开;关掉应用窗口后服务仍在

行为要点(来自 README):

  • 服务已在运行 → 直接开窗,延迟在毫秒级。
  • 端口被其他程序占用 → 弹窗说明,不强行占用。
  • 链路概览:快捷方式 → launcher.vbs(无窗口)→ launch.ps1 → 必要时隐藏启动 dsh web → HTTP 就绪后用带令牌的 app URL 开窗。

会话头部「⟳ 重启 | 版本」胶囊

入口在有会话时会话标题右侧,与 dsh 自带的「在文件资源管理器中打开工作目录」同一行。空白会话时 dsh 会隐藏整个会话头部,此时看不到该胶囊;发一条消息后即可出现。

重启:二次确认后整进程重启(当前任务/会话会停),窗口轮询新服务并重连;完成判据包含进程指纹变化,避免老进程仍应答 ready 时误刷新。

版本:启动后宿主在后台只读查询 npm registry(默认包 @deepseek-ai/dsh 的 dist-tags,当前运行版本默认对照 @deepseek-ai/dsh-base),关注 latest / next / alpha;可多候选时弹出选版卡。一键升级流程为停服务 → 备份 → npm install → 校验 → 重启;任一步失败自动回滚。allowSelfUpdate: false 时仅提醒不安装。

安装与启用

该包尚未发布到 npm,需用 GitHub 源码 tarball 直链安装(避免 github: 形式触发 pnpm 的 SSH 解析)。在已安装 DSH 的环境中执行:

dsh plugin --profile web add https://github.com/liudapeng0311/dsh-pwa-launcher/archive/refs/heads/main.tar.gz

安装完成后重启一次 dsh(Ctrl+C 停掉再启动)。插件会在 dsh 启动时部署启动器并接管/创建快捷方式;首次生效后桌面或开始菜单会出现 DeepSeek Harness 图标(名称可在配置里改)。

若你平时是手动跑 Web 服务,可继续:

dsh web

跟到特定版本时,将 URL 中的 main 换成对应 tag 名即可。

典型用法

日常:双击桌面图标

与装 PWA 后习惯一致,无需额外命令;差异在于背后会先保证本地 dsh web 可用。

卸载(顺序勿反)

先还原快捷方式,再从 profile 移除插件:

powershell -File "$env:LOCALAPPDATA\DeepSeekHarness\scripts\shortcut.ps1" -Action Uninstall
dsh plugin --profile web remove dsh-pwa-launcher

若先 remove 插件,桌面图标可能仍指向旧启动器,且不再有组件刷新它。

手动脚本(PowerShell)

不经过双击、或需要只停服务时使用:

# 只拉服务不开窗
powershell -File "$env:LOCALAPPDATA\DeepSeekHarness\scripts\launch.ps1" -NoOpen -Visible

# 停服务
powershell -File "$env:LOCALAPPDATA\DeepSeekHarness\scripts\stop.ps1"

# 重新接管 / 还原快捷方式
powershell -File "$env:LOCALAPPDATA\DeepSeekHarness\scripts\shortcut.ps1" -Action Install
powershell -File "$env:LOCALAPPDATA\DeepSeekHarness\scripts\shortcut.ps1" -Action Uninstall

配置

修改插件包内 cordis.patch.yml 中 pwa-launcher 一行的 config,重启 dsh 生效;若在设置 GUI 中改过,用户层配置会覆盖 patch 文件。

常用项示例:

键 默认 说明
shortcutName DeepSeek Harness 快捷方式名称,也是优先接管匹配依据
adoptBrowserShortcut true true 接管浏览器 PWA 图标;false 自建
desktop / startMenu true 图标放置位置
browser auto auto / edge / chrome / default
appMode true 应用窗口或普通标签页
startTimeoutSec 120 等待服务就绪上限(秒)
checkForUpdates true 关闭则版本检查与相关路由不注册
allowSelfUpdate true 是否允许一键升级
updateChannels [latest, next, alpha] 通道顺序即保守 → 激进

完整键表见 GitHub README 配置一节。

适用场景与注意

适合谁:主要在 Windows 上用浏览器「安装为应用」固定 DSH,又希望双击图标等价于「先起服务、再进界面」,并希望在 Web 里重启实例或按通道自助升级 dsh 的用户。

环境要求:package.json 声明 os: ["win32"],engines.node >= 22;非 Windows 平台不在支持范围内。

权限与安全:插件通过 PowerShell 部署启动器、可能执行 npm install 升级 dsh,均以当前运行 dsh 的用户权限执行。安装前请阅读仓库源码与 MIT 许可证,确认可接受本地脚本与网络访问 registry 的行为。

排错:日志与状态文件位于:

%LOCALAPPDATA%\DeepSeekHarness\logs\desktop.log
%LOCALAPPDATA%\DeepSeekHarness\logs\update.log
%LOCALAPPDATA%\DeepSeekHarness\launcher.json

版本胶囊长期显示「检查…」时,优先确认 checkForUpdates 未被关闭,以及 GUI 设置是否覆盖了 patch。会话头部完全没有胶囊时,检查是否已有会话、页面是否完整刷新、控制台是否有 client-modules: 开头报错。

结尾

dsh-pwa-launcher 补上了 PWA 快捷方式无法拉起本机进程这一环:外观仍是原来的桌面图标,行为变成可用的 DSH 启动器,并在会话顶栏提供重启与可回滚的自助升级。进一步了解与 issue 反馈见 SkillHub 目录 与 GitHub 仓库。

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

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

小夜