前言¶
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