DSH Desktop 窗口状态记忆:重启后首帧即恢复尺寸与位置

前言

DeepSeek Harness Desktop 默认会在每次启动时用固定几何(README 中举例为 1280 × 820)创建主窗口,再显示出来。若你习惯把窗口拖到副屏、拉大工作区或保持最大化,每次冷启动都会先看到默认大小和位置,随后才跳到上次布局——视觉上就是一次「闪一下」。DSH 生态里常见做法是写 Host 插件,在窗口仍隐藏时写入 Win32 的窗口放置信息。下面介绍维护者 JaMoLpE88 发布的客户端插件 @jamolpe88/dsh-desktop-windowstatus-saving:它在首帧绘制前恢复主窗口的尺寸、位置与最大化状态,运行中静默保存,无需配置界面。

这是什么

dsh-desktop-windowstatus-saving 是 DeepSeek Harness Desktop 的 Host 插件(npm 包名 @jamolpe88/dsh-desktop-windowstatus-saving,当前版本 0.1.1,MIT 许可证)。它只跟踪 DSH 主产品窗口,记住大小、位置、是否最大化,在窗口仍隐藏时应用保存的几何,使第一次可见帧就是最终布局;不增加 UI、命令或设置项,不启第二个进程,也不发起网络请求。

插件已在 dsh-plugin.org 目录 登记;SkillHub 目录页见 plugins/JaMoLpE88/dsh-desktop-windowstatus-saving。源码与说明见 GitHub:JaMoLpE88/dsh-desktop-windowstatus-saving。

核心功能

README 中列出的能力如下(冲突时以仓库文档为准):

  1. 首帧前恢复:DSH Desktop 先以隐藏状态创建 BrowserWindow,在 window.show() 之前通过 Win32 SetWindowPlacement 应用已保存的 bounds 与 maximized 标志,避免先显示默认 1280 × 820 再 resize 的跳动。
  2. 运行中检测:拖动、缩放、贴边(snap)、最大化等变化会在约一秒内写入状态;正常关闭或托盘退出时会再保存一次。
  3. 最大化与最小化:最小化后退出,下次仍会按「最大化」恢复;README 说明会穿过 minimize 与托盘隐藏保留 maximized 标志。
  4. 多显示器:保存矩形所在显示器上的位置,含主屏左侧或上方的负坐标;若该显示器已不存在,则移到最近工作区并缩小以适应。
  5. 写入策略:仅在几何或 maximized 变化时写盘,关闭时再写一次;原子写入(临时文件 + 重命名);损坏的旧文件会被忽略并在下次保存时替换;较新版本插件写的文件不会被旧版覆盖。

明确不会做的事:不恢复全屏或最小化启动(窗口始终以可见状态打开);不恢复 Windows 11 Snap 布局组;不按 profile 或 session 分别存几何(一个窗口一份状态);不识别其他应用窗口,也不靠窗口标题匹配 DSH。

环境与限制

项 要求
DSH Desktop >= 0.2.1-rc.3,profile 为 desktop(作者仅在 0.2.1-rc.3、Windows 11 上完整验证)
Node >= 22(DSH 自带运行时;package.json 要求 >= 22.19.0)
操作系统 仅 Windows 10/11;不支持 macOS、Linux
实现 Host 插件,经 DSH 自带的 koffi 调用 Win32

其他限制(来自 README「Limits」):使用物理像素,改显示缩放不会按 DIP 重算;若未来 DSH 自身持久化窗口几何,应卸载本插件。状态默认路径为 %USERPROFILE%\.dsh\window-bounds.json;若设置了 DSH_HOME,则为 $DSH_HOME/window-bounds.json。

安装与启用

安装后需重启 DeepSeek Harness Desktop。插件只在启动时恢复;热安装会立刻开始保存,但要等下次启动才看到恢复效果。

从 npm 安装:

dsh plugin --profile desktop add @jamolpe88/dsh-desktop-windowstatus-saving

从 GitHub 仓库安装:

dsh plugin --profile desktop add github:JaMoLpE88/dsh-desktop-windowstatus-saving

本地开发目录(示例为 Windows 路径):

dsh plugin --profile desktop add C:\path\to\dsh-desktop-windowstatus-saving

典型用法

无需配置文件或面板,按 README 的 Usage 即可:

  1. 移动、缩放或最大化 DSH 主窗口。
  2. 正常关闭 DSH,或从托盘退出。
  3. 再次打开 DSH:窗口应已在离开时的几何与显示器上,且首帧即为最终大小。

若要清除记忆,删除上述 window-bounds.json 后重启即可。

状态文件示例(字段含义见 README):

{
  "version": 1,
  "bounds": { "x": -2280, "y": 43, "width": 1943, "height": 1323 },
  "maximized": false,
  "savedAt": "2026-10-26T16:45:43.738Z",
  "restore": { "at": "2026-10-26T16:45:43.738Z", "whileHidden": true }
}

适用场景与注意

适合谁:在 Windows 上长期使用 DSH Desktop、固定多屏或最大化工作布局,希望冷启动不再闪默认窗口的用户。

权限与安全:插件以当前 DSH 进程权限运行,通过 Win32 读写本机窗口状态与本地 JSON;README 声明无网络、无遥测。安装前建议阅读 LICENSE 与源码(lib/ 等),确认符合你的环境策略。

DSH 社区插件目录(如 dsh-plugin.org、SkillHub)由社区维护,与 DeepSeek / 幻方无官方从属关系;安装命令以各插件 README 为准,不要自行拼接未在文档中出现的命令形式。

结尾

dsh-desktop-windowstatus-saving 用零配置的 Host 插件方式,在隐藏阶段恢复主窗口放置,并在一秒级延迟内持久化变化,针对的是 Desktop 默认几何与重启闪屏这一具体痛点。进一步了解可访问 SkillHub 插件页 与 GitHub 仓库。

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

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

小夜