前言¶
在 DeepSeek Harness(DSH)里长时间切换会话和工作区时,侧栏若一直占宽,主内容区会被挤窄;若完全收起,又要靠点击展开才能看到列表。Claude Code 一类桌面客户端常用「悬停短暂预览、选中后收起、点击固定」的侧栏交互,而 DSH 原生侧栏默认是展开/折叠的点击逻辑,也不自带浏览器式的前进/后退会话栈。
下面介绍社区插件 dsh-sidebar-hover(维护者 ingeb0rga),它在 DSH 客户端 UI 上复刻这类行为:悬停窄轨预览侧栏、点击固定、选中会话后自动收起,并在 macOS 桌面版增加会话历史箭头与快捷键。插件归类为客户端扩展,当前 GitHub 星标为 0;许可证为 MIT,包版本 0.1.24。
这是什么¶
dsh-sidebar-hover 是 DSH 的 runtime client plugin(client-UI extension)。它不改服务端协议,而是在宿主渲染的侧栏与标题栏区域挂载逻辑:悬停折叠侧栏轨(或 macOS 上标题栏重开区)经意图延迟后,以浮层方式预览展开侧栏,不推动主内容 reflow;离开后经宽限期收起;在预览态点击侧栏开关则固定展开,直至再次点击关闭。
插件还实现 session history arrows(← →):因 DSH 本身不维护导航历史,插件在客户端记录 uiWorkspace.selection 形成最多 100 条、会话级的前进/后退栈,并通过 uiWorkspace.openSession() 跳转。该能力在 README 中标注为 macOS 桌面版可用;Web(dsh web)侧栏悬停与设置页共用同一套客户端代码,但 README 标明 Web 悬停与设置未做现场验证,且历史箭头与 ⌘[ / ⌘] 在浏览器中不可用。
核心功能¶
悬停预览与固定¶
默认开启 Hover to reveal sidebar。行为要点(与 README「Behavior」表一致):
- 悬停侧栏轨或(darwin)侧栏开关图标,经可配置意图延迟(默认实现为 180 ms 量级,设置范围 50–1000 ms)后进入 peek。
- Peek 时布局在内部仍展开侧栏,但通过 overlay 将 frame grid 钉在折叠轨道,宽侧栏以不透明填充与阴影叠在内容之上。
- 指针离开 peek 后 250 ms 宽限期收起;重新进入可取消收起。
- 在 peek 中点击侧栏 toggle → pinned;由点击打开或固定的侧栏在关闭前忽略 hover。
- 选中 session/workspace 行、New Session、Settings,或 peek 中按 Esc → 立即收起(行内带
stopPropagation的控件不受影响)。 - Mod+B 在 peek 中可关闭;由用户或宿主触发的 Mod+B / toggle 视为外部折叠,插件不抢权。
启动时 DSH 默认侧栏展开;若首次加载偏好时功能已开启,插件会折叠一次以便悬停逻辑立即可用;会话中途才开启功能则不会强制折叠。
会话历史箭头(macOS 桌面)¶
默认开启 Session history arrows。← → 按钮通过 shell.overlay 放在侧栏 toggle 右侧;桌面端注册 ⌘[ / ⌘] 快捷键(无历史可去时放行给宿主)。已删除、无法打开的条目会从栈中丢弃。
设置与持久化¶
独立设置页:Settings → Sidebar hover,包含:
- 「Hover to reveal sidebar」开关(默认 ON)与悬停延迟;
- 「Session history arrows」开关(默认 ON)。
偏好写入宿主 settings 命名空间 dsh-sidebar-hover 的 volatile 字段(enabled、hoverDelayMs),经 node 半边的插件路由 POST /sidebar-hover/api/prefs.get 与 POST /sidebar-hover/api/prefs.update 读写,并落到 profile 的 cordis.patch.yml 对应 config: 块(路径形如 ~/.dsh/profiles/<name>/cordis.patch.yml)。桌面部署下渲染进程不能直接调用 settings remote,故由插件 HTTP 路由代理。
平台与测试范围¶
README 给出的能力矩阵摘要:
| 能力 | Desktop (macOS) | Web (dsh web) |
|---|---|---|
| 悬停 peek | 悬停 traffic lights 旁侧栏 toggle | 悬停 56 px 折叠轨(未 live 测试) |
| 历史箭头 ← → | 有 | 无 |
| ⌘[ / ⌘] | 有 | 无(浏览器占用) |
| Settings → Sidebar hover | 有 | 同代码路径(未 live 测试) |
已在 DeepSeek Harness macOS 桌面版 0.2.0-rc.2、0.2.1-rc.2 上测试。Windows / Linux 桌面构建未测试。
安装与启用¶
插件通过 DSH 的 Cordis bundle(cordis.patch.yml)注入客户端模块;manifest 中 client.platform 为 web,并依赖 @deepseek-ai/dsh-client-ui-sidebar、@deepseek-ai/dsh-client-ui-settings 等宿主插槽。
本次引用的 GitHub README 与 package.json 片段未给出完整的 CLI 安装命令。 安装步骤请以社区目录 SkillHub 插件页 与 GitHub 仓库 README 当前说明为准,不要自行拼接未在文档中出现的 dsh plugin add 参数。
安装并加载插件后,在应用内打开 Settings → Sidebar hover 即可开关功能并调整延迟。peer 依赖要求 @deepseek-ai/dsh-client-store 与 @deepseek-ai/dsh-client-ui-primitives 为 >=0.2.0-rc.2 <0.3.0-0,与上述测试宿主版本线一致。
典型用法¶
- 日常浏览会话列表:保持侧栏折叠以扩大编辑区;指针移到 macOS 标题栏一侧的侧栏 toggle(或 Web 上 56 px 折叠轨),稍停即可预览列表;移开指针,侧栏自动收回。
- 固定侧栏编辑:预览过程中点击 toggle,侧栏 pinned 展开;再次点击 toggle 或 Mod+B 关闭后,悬停预览恢复可用。
- 选中即走:在 peek 中点击某个 session 或 workspace,侧栏立即收起并进入目标视图。
- macOS 上回溯视图:用标题栏 ← → 或 ⌘[ / ⌘] 在插件维护的 selection 历史栈中前进/后退(仅限桌面版且开关开启时)。
适用场景与注意¶
适合:主要在 DSH 桌面客户端(尤其 macOS)工作、希望侧栏交互接近 Claude Code、且需要在多个 session/workspace 视图间快速来回的用户。
注意:
- 插件代码在 DSH 进程权限下运行,安装前请阅读 GitHub 源码 与 MIT 许可证,并确认与当前 DSH 版本匹配。
- 故意不修改侧栏几何、轨宽、darwin 标题栏契约、Mod+B 绑定等宿主行为;若与另一侧栏类插件同时启用,需自行验证是否冲突。
- SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系;星标与版本以仓库为准(当前 0.1.24)。
- 非 macOS 或未测试平台上的悬停、箭头行为请以实际表现为准,必要时在仓库 Issues 反馈。
结尾¶
dsh-sidebar-hover 把悬停预览、点击固定、选中收起和 macOS 会话历史导航接到 DSH 客户端侧栏上,设置集中在 Settings → Sidebar hover。目录与文档链接:
- SkillHub:https://www.skillhub.cn/plugins/ingeb0rga/dsh-sidebar-hover
- GitHub:https://github.com/ingeb0rga/dsh-sidebar-hover
更细的集成分析与 QA 矩阵见仓库内 FINDINGS.md、QA-CHECKLIST.md 与 DEVELOPMENT.md。