dsh-window-keeper:让 DSH 桌面窗口记住上次的位置和大小

前言

DSH 桌面端每次启动时,建窗代码写死了 width: 1280, height: 820,也没有任何持久化逻辑。结果是每次重启客户端,窗口都会缩回默认大小;如果你习惯把窗口拖到副屏、拉高到能看到完整对话,就得重新拖一次。dsh-window-keeper 补的就是这件事:记住 DeepSeek Harness 桌面窗口的位置、大小和最大化状态,下次启动回到你上次离开的地方。

下面介绍这个插件的定位、安装方式、工作流程和已知限制。

这是什么

dsh-window-keeper(版本 0.1.2,许可证 MIT)是社区维护的 DSH 插件,目录页归类为「客户端」,由 mm24trg2gy-star 维护。它的功能范围很窄,只做一件事:把窗口几何写盘,在下次启动时还原。

插件采用了「双轨」设计:真正的窗口逻辑是一个 PowerShell 脚本,只使用 Win32 API,不依赖 DSH 客户端版本;插件壳只负责安装、开机自启和设置页开关,不含窗口逻辑。因此 DSH 客户端怎么升级,窗口记忆本身都不受影响。README 致谢中将窗口逻辑的作者署名为大肥鱼(鲸鱼娘 · CETACEA_LOLI)。

核心能力

1、关窗即自动记住,无需手动保存;
2、还原的位置、尺寸、最大化状态,包括最大化;
3、保存的位置若跑到当前虚拟屏之外(换显示器、断屏),直接作废回退默认,不会把窗口放到看不见的地方;
4、不绑定客户端版本;
5、只认标题以 DeepSeek Harness 结尾的窗口,不碰其它程序。

README 中给出的同类对比(myxiyues/dsh-window-size、flying4055/dsh-window-bounds),本插件在「关窗自动记住、还原最大化、不绑客户端版本」三条上都对齐或超出。

安装与启用

插件提供两条安装路径,按使用偏好选择。

脚本轨适合想一劳永逸、不在乎多一个后台进程的人:

powershell -NoProfile -ExecutionPolicy Bypass -File scripts/install.ps1

脚本会装到 %LOCALAPPDATA%\dsh-window-keeper,并在「启动」文件夹放入自启项。卸载:

powershell -NoProfile -ExecutionPolicy Bypass -File scripts/install.ps1 -Uninstall

插件壳适合想一键装、想要设置页开关的人:

dsh plugin --profile desktop add dsh-window-keeper

装完重启客户端,在「设置 → 窗口记忆」里开关。插件壳本身不含窗口逻辑,它把脚本铺到 %LOCALAPPDATA%\dsh-window-keeper,管开机自启,再给设置页一个开关。

package.json 中声明的运行条件是 Node >= 20、dsh >= 0.2.0-rc.2。

配置

配置文件在 %LOCALAPPDATA%\dsh-window-keeper\config.json:

{ "enabled": true, "autostart": true }

enabled: false 时守护进程启动即退出,不会动窗口。这个开关在脚本轨和插件壳下都生效。

工作原理

1、常驻脚本每约 0.9 秒读一次窗口状态(GetWindowPlacement);
2、尺寸、位置、最大化状态有变化就写进 window-state.json;
3、检测到 DSH 重新开窗后,等待约 1.2 秒,把上次的几何套回去(MoveWindow + ShowWindow(SW_MAXIMIZE));
4、如果保存的位置跑出了当前虚拟屏,直接作废并回退默认。

代码组织如下:

lib/index.js     Host 半部:装/卸载脚本、自启、HTTP 接口
lib/client.js    设置页「窗口记忆」
assets/window-keeper.ps1   真正的窗口逻辑
scripts/install.ps1        独立安装器(脚本轨)

已知限制

  • 仅 Windows(Win32),不支持 macOS 和 Linux。
  • 启动时会有约 1.2 秒的跳变:脚本必须等窗口显示后才能动手。要彻底无跳变得改壳的显示时机,插件做不到。
  • 插件壳的设置页依赖 DSH 插件生态约定(slots / webServer),客户端大版本换代时可能需要更新;脚本轨不受影响。

适用场景与注意

适合已经在用 DSH 桌面端、且习惯自定义窗口大小的人。它的能力边界就是窗口几何,不涉及任何会话、模型或工具调用逻辑。

两点提醒:

1、插件以安装它的 dsh 进程权限运行,脚本轨则会常驻后台并写入「启动」文件夹。安装前应打开源码核对 scripts/install.ps1 和 assets/window-keeper.ps1,确认没有别的副作用。许可证为 MIT,可以自由阅读。
2、如果只想验证效果不想常驻,可以先用插件壳路径装,在「设置 → 窗口记忆」里关掉开关,观察 %LOCALAPPDATA%\dsh-window-keeper 下的 window-state.json 是否按预期生成。

小结

dsh-window-keeper 解决的是一个很具体的问题:DSH 桌面窗口没有持久化。它用不绑客户端版本的脚本轨加上可选的插件壳,把这个缺口补齐,代价是一个后台守护进程和启动时约 1.2 秒的跳变。目录页与源码见:

  • 目录页:https://www.skillhub.cn/plugins/mm24trg2gy-star/dsh-window-keeper
  • GitHub:https://github.com/mm24trg2gy-star/dsh-window-keeper
羽毛球分组比赛记分
小程序二维码

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

小夜