前言¶
用 DSH(DeepSeek Harness)时,右侧栏一旦被切成全屏,会盖住整个视口,屏幕上只剩右上角那两个面板控件可以点。想退出全屏,得把鼠标移到角落找小按钮。如果右侧栏窗口拉得很宽,或者屏幕上同时开着别的窗口,这个操作并不顺手。
dsh-rightbar-exit-strip 就是针对这个场景的客户端插件:它在全屏右侧栏的左边缘加一条可点击的退出竖条,并支持双击会话与右侧栏之间的分割线直接进入全屏。维护者是 2315137135,分类为客户端,纯 JavaScript 实现,无需构建。
这是什么¶
一句话定位:给 DSH 右侧栏全屏状态补上更顺手的进、退入口。
它解决的问题很具体:全屏面板盖住视口后,可用出口只剩右上角的面板控件;本插件补的入口是①全屏中左边缘的退出条,②双击分割线进入全屏。
需要说明的是,插件本身不改右侧栏布局,也不新增面板,只是在既有 DOM 标记之上增加了两个交互入口。
核心功能¶
支持的手势与结果如下:
| 手势 | 结果 |
|---|---|
| 双击会话与右侧栏之间的拖拽分割线 | 进入全屏 |
| 全屏中悬停左侧竖条 → 点击 | 退出全屏 |
| 全屏中 | 分割线不渲染,退出只能走竖条或右上角的面板按钮 |
竖条的视觉与交互细节:
- 平时是 5px 半透明竖条。
- 悬停变宽成 11px,显示右向箭头,并转成品牌色。
- 上下各留 18%,避开页签条和面板左下角的缩放控件。
- 键盘聚焦同样会展开竖条,回车即可退出。
进出全屏走的是同一条路径:都调用 ctx.sidebarRight.commandTarget() 加 toggleFullscreen(),与面板上的按钮一致,会记入布局历史;服务不可用时退回点击面板自己的 [data-sidebar-right-mode] 控件。
安装与启用¶
从 GitHub 安装,纯 JavaScript,无需构建:
plugin_manager install_bundle
target: github:2315137135/dsh-rightbar-exit-strip
也可以使用 git+https://github.com/2315137135/dsh-rightbar-exit-strip.git,或克隆到本地后用绝对目录安装。安装后刷新 Harness 页面。
仓库:https://github.com/2315137135/dsh-rightbar-exit-strip,许可证为 MIT。插件当前版本号为 0.1.0(见 package.json 的 version 字段),在 Harness 中无需再做额外配置,刷新页面即生效。
典型用法¶
安装并刷新页面后,按下面的顺序验证两个入口即可:
1、把右侧栏拉成全屏:进入会话视图,点击右侧栏右上角的形态切换按钮,或直接双击会话与右侧栏之间的拖拽分割线。
2、确认左边缘出现退出竖条:此时视口被面板盖住,左侧能看到 5px 的半透明竖条;把鼠标移过去,竖条变宽为 11px 并显示右向箭头。
3、点竖条退出全屏:点击后面板回到正常宽度。
4、用键盘退出:用 Tab 把焦点移到竖条上,竖条同样展开,按回车退出。
如果只想进全屏不想退出,第 2 步和第 3 步可以跳过;纯键盘操作时,第 4 步是主要路径。
实现要点¶
这一节说明插件是怎么做到“跟随面板走”的,便于判断它在你的环境里是否稳定。
只在全屏时渲染¶
插件检测 [data-sidebar-right-panel="fullscreen"],位置取自该面板的 getBoundingClientRect()。所以 Windows 桌面端的标题栏内缩、左侧栏展开宽度、窗口缩放都自动跟随。同时另挂了 ResizeObserver、窗口 resize 与 MutationObserver。
为什么 portal 到 document.body¶
shell.overlay 容器是 z-index:20 的层叠上下文,而全屏面板内部的 ._tabCell 用 z-index: var(--dsh-dockkit-dock-layer)(全屏为 40)参与同一个层叠上下文。浮层里的元素再高的 z-index 也压不过面板。跳出这个上下文,把竖条挂到 document.body 才是正解。
为什么不用 dblclick¶
分割线是框架的 [data-side="rightbar"] 拖拽柄,它在 pointerdown 里调用了 preventDefault(),兼容性鼠标事件会被抑制,因此 dblclick 不可靠。插件自己在捕获阶段数左键 pointerdown:500ms 内、6px 范围内两次即判定为双击。
依赖的出厂契约¶
插件读的是面板的 DOM 标记与 ARIA 属性。Harness 大版本升级后若这些标记改名,需要同步调整:
[data-sidebar-right-panel="fullscreen"]—— 全屏形态标记[data-side]等于rightbar—— 会话与右侧栏之间的拖拽分割线[data-sidebar-right-mode]—— 面板右上角的形态切换按钮(值为下一个形态)
换句话说,这套交互依赖框架侧的稳定标记,升级 Harness 后建议先跑一遍上面的验证步骤。
适用场景与注意¶
适合的场景:经常使用右侧栏并切成全屏,或者窗口布局复杂、角落按钮不好点的开发者。
需要注意:
- 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证(本插件为 MIT)。
- 插件读的是框架的 DOM 标记与 ARIA 属性,Harness 大版本升级后若标记改名,需要同步调整。
- 全屏状态下分割线不渲染,退出只能走左边缘竖条或右上角面板按钮;这是插件的限制,不是配置项。
结尾¶
dsh-rightbar-exit-strip 的价值不在于新增面板,而在于给已有的全屏右侧栏补上顺手的进、退入口:进屏双击分割线,退屏点左边缘竖条或按回车,不改变原有布局。如果你主要用右侧栏全屏工作,值得装来试试。
目录页:https://www.skillhub.cn/plugins/2315137135/dsh-rightbar-exit-strip
GitHub:https://github.com/2315137135/dsh-rightbar-exit-strip