前言¶
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 重启后状态丢失的问题,适合需要维持固定工作流的开发者使用。