前言¶
DeepSeek Harness(DSH)的 Web GUI 在重啓後會重置界面狀態,例如側邊欄自動收起、寬度重置,以及對話滾動位置回到頂部。dsh-ui-state 插件負責將這些狀態持久化到配置文件中,並在重啓後自動恢復,從而保持用戶界面的連續性。
插件定位¶
這是一個面向 DSH Web GUI 的界面狀態持久化插件,由開發者 zink-ning-lkr 維護。它的核心作用是確保側邊欄與詳情面板的開合狀態及寬度在重啓後自動恢復。
核心功能¶
插件主要提供以下能力:
1. 側邊欄狀態恢復:自動保存側邊欄的展開/收起狀態,並持久化拖拽後的寬度(264–420px 官方契約範圍)。重啓後通過模擬拖拽手柄動作恢復到上次寬度。
2. 詳情面板恢復:自動記錄並恢復右側詳情面板的開合狀態(僅在存在會話時記錄)。
3. 對話滾動位置:頁面切走或隱藏時保存閱讀位置(基於 anchor 對齊),視圖重連後自動恢復,新消息追加時不會錯位。
4. 性能優化:採用事件驅動機制,無空閒輪詢,變更合併爲單次批量寫入。
安裝與啓用¶
安裝過程不需要手動配置,直接使用官方 CLI 命令即可:
dsh plugin --profile web add @zink-ning-lkr/dsh-ui-state
如果是通過 npm 安裝,需要在 profile 的 package.json 中將依賴加入 dsh.profile.bundles。也可以手動下載 dsh-ui-state-0.3.0.tgz 並使用上述命令安裝。
兼容性與注意事項¶
- 版本要求:已驗證兼容 DSH 0.1.x 版本線,最低支持
0.1.0-rc.8。依賴範圍設置爲雙線>=0.1.0-rc.8 <0.2.0 || >=0.1.1-rc.0,這是爲了避免雙實例導致的SettingsConflictError。 - 移動端邏輯:當視口小於 1024px 時,官方 UI 會自動摺疊側邊欄。此時插件不會持久化或恢復該狀態,以避免與官方自動行爲衝突。
- 容錯處理:如果
settings.yaml被手動修改、舊版本或其他插件寫入導致字段越界或類型錯誤,插件會將該字段降級爲未記錄,不會導致整個 namespace 註冊失敗。
總結¶
該插件通過事件驅動和批量寫入機制,解決了 DSH Web GUI 重啓後狀態丟失的問題,適合需要維持固定工作流的開發者使用。