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