liudapeng0311/dsh-pwa-launcher ↗★ 0
dsh-pwa-launcher
把 DeepSeek Harness 变成桌面应用:桌面/开始菜单上的图标双击即静默拉起 dsh web 服务,再以浏览器应用窗口打开界面;网页右上角提供一键「真正重启」,并常驻一个「更新」入口可随时检查 dsh 新版本、一键自助升级(停服务→安装→校验→重启,失败自动回滚)。Windows 专用。 适合Windows用户将Harness作为桌面应用运行,并享受一键重启与自助升级。
설치
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:liudapeng0311/dsh-pwa-launcher配置
改本包里的 cordis.patch.yml 中 pwa-launcher 那一行的 config,重启一次 dsh 生效。
| 键 | 默认 | 说明 |
|---|---|---|
shortcutName | DeepSeek Harness | 图标名字,也是「优先接管哪个」的依据 |
adoptBrowserShortcut | true | 接管浏览器给你的 PWA 快捷方式(保留其图标)。false = 自己新建一个 |
desktop / startMenu | true | 往哪几个地方放图标 |
browser | auto | auto / edge / chrome / default |
appMode | true | 应用窗口(无地址栏,和 PWA 一样)还是普通标签页 |
startTimeoutSec | 120 | 等服务就绪的上限 |
avoidAppButtons | true | 顶栏避让:dsh 顶栏控件出现时把两个控件左移让开,消失后回原位 |
installDir | '' | 留空 = %LOCALAPPDATA%\DeepSeekHarness |
checkForUpdates | true | 关掉则既不查、也不注入更新控件、还不注册相关路由 |
allowSelfUpdate | true | 允许「更新到此版本」触发外部升级;false = 只提醒、不给升级按钮 |
updatePackage | @deepseek-ai/dsh | 拿哪个包的 dist-tags 当「可升版本」来源 |
updateVersionPackage | @deepseek-ai/dsh-base | 拿哪个包的安装版本当「当前版本」(真正跑的应用核心) |
updateChannels | [latest, next, alpha] | 关注哪些通道,顺序 = 保守 → 激进,第一个是「推荐」 |
updateNotify | all | all = 任一通道有更新都提醒;recommended-only = 只按主通道 |
updateRegistry | https://registry.npmjs.org | 镜像 / 私有源改这里 |
updateCheckTimeoutMs | 12000 | 单次查询超时;超时按「本次没查到」安静跳过(会自动重试) |
为什么「当前版本」默认取
dsh-base而不是@deepseek-ai/dsh? dsh 有两棵版本树: CLI 包@deepseek-ai/dsh是启动器壳,而实际渲染界面的应用核心是@deepseek-ai/dsh-base, 两者版本可能不一致。控件显示的是你真正在跑的应用那一个。 「可升版本」则取自 CLI 包的 dist-tags(它的latest/next/alpha标签是干净的)。
顶栏避让。 dsh 自己的顶栏控件(文件、窗口等)是开始对话之后才出现的, 位置正好和这两个控件重叠。所以它们会自己探测:先看右上角有没有东西 —— 有就让开,没有就保持贴右原位。判定不认 dsh 的内部 class(版本一变就会失效), 而是问浏览器「右上角这块地方归谁」,所以对 dsh 升级是稳的。
那个「先看右上角」的锚点很关键:一些插件的页面是居中列 (
max-width+margin:0 auto),正文和页头按钮都够不到窗口右缘。 没有锚点的话,这些正文会被误判成顶栏控件,两个控件就会被推到页面中间 并盖住对方标题。另外让位距离有上限,不会被推到屏幕中部。