dsh-sidebar-width:DSH 左侧栏分区拖拽与折叠

前言

DeepSeek Harness(DSH)桌面端与 Web 端的左侧栏通常同时承载品牌区、新会话、导航、工作区与会话列表、底部用量与账号等多块内容。默认布局按宿主排版固定高度分配,插件增多后,某一块偏挤或偏空时,往往只能接受裁切、滚动或整体缩放,很难像 VS Code 侧栏那样按块、按行精细调节。

下面介绍社区客户端插件 dsh-sidebar-width(维护者 nullifyi)。仓库名仍沿用 v0.1 的「侧栏宽度」,当前实现已改为侧栏分区模型(VS Code SplitView):块间分割条、行级缝命中拖动、内容等比缩放,以及按块折叠到头像上方图标坞。分类为客户端插件,在 DSH 社区目录中归类为侧栏相关能力。

这是什么

dsh-sidebar-width 在 DSH 左侧栏根节点上识别固定语义区块,并在块与行两个粒度上接管高度与缩放,状态写入 localStorage。它不修改全局 CSS 变量,不接管原生列宽拖拽(v0.1 的 col-resize 已删除),并与远程控制等插件在共享底栏上的布局做了兼容说明。

侧栏默认可识别五块,外加其它插件挂入的自定义块(React 重挂后会重新识别):

区块 id 认出方式 内容
brand logoRow 子串 品牌行与品牌按钮
new newSession 子串(或前两块里的 button) 新会话
nav panelList 子串 插件、自动化任务、任务看板
main regionArea 子串(或 nav 与 foot 之间) 工作区与会话列表
foot footArea 子串 用量卡、远程控制、设置、账号头像
extra:N 不匹配以上规则的 root 直接子元素 其它插件挂进侧栏的自定义块

自 v0.6.4 起,挂在侧栏根下、且非本插件节点的直接子元素会自动成为 extra:N,获得与内置块相同的分割条、拖拽、缩放、行级缝与窄轨让位,无需在本插件登记。

核心功能

块级分割与双击复位

块与块之间悬停会出现 20×4 的居中握把,按住上下拖动可改变相邻块高度。brand|new、new|nav、nav|main 方向为:往下拖则上面一块变高;main|foot 方向相反,往上拖则底部区变高。双击分界可将该块恢复为原生高度。

工作区(main)吸收剩余空间并保底 96px,超出部分可滚动。拖大其它块时先用父容器留白,再从工作区借高度;空间用尽即停止,避免把品牌、新会话或导航一并压成小字。拖动从当前渲染尺寸开始,往返与松手保持连续。

行级调整(不挡点击)

行间缝通过 root 坐标命中(±6px)。鼠标靠近时仅在缝中央浮现 26×3 的小握把,不显示行名或高度文字,也不插入常驻拖动条。拖动超过 3px 才接管,拖完 250ms 内抑制一次 click,避免误触切面板。面板列表、底部区块、用量卡、设置行与账号行均可独立调整;双击行缝复位。用量卡文字随整张卡缩放,不拆成独立分区;文件夹内子对话列表不做行级调整。

内容缩放与下限

被调矮的内容等比缩小(字号、图标、内边距),最紧约 42%;超过原生高度时内容可放大,上限 200%,并受侧栏宽度、换行与内容高度限制。账号与入口图标保持原生尺寸;头像行独立预留高度,其下沿可拖高,不能把头像压扁。

普通行至少 18px 且不低于原尺寸 42%;单行底栏状态保留至少 11px 有效字号。极小窗口装不下下限时,已调整过的侧栏可启用纵向滚动。

折叠与窄轨

每块左侧 12px 内边距内有 11×22 的折叠键(常驻 0.6 透明度)。点击后整块收起,在头像正上方显示图标;悬浮显示「区块名 · 已折叠」及剩余条目名,再点展开。

侧栏被原生折叠为 56px 窄轨(root 带 *_collapsed)时,分界、折叠键与图标坞全部撤掉。

状态持久化与设置页

localStorage 键为 dsh-sidebar-sections:v5(v0.6.19 沿用 v5)。结构示例:

{
  "mode": "keep",
  "heights": { "brand": 60, "nav": 120 },
  "rows": { "nav:0": 30, "foot1:2": 26 },
  "hidden": ["nav"]
}

heights 为块级覆盖(brand / new / nav / foot 等),rows 为行级覆盖(键形如 nav:2、foot:0)。拖回原生高度会删除对应键。

在宿主内打开 设置 → 侧边栏分区(settings.section,id sidebar-sections),可查看已调高度的块、已调行高的行、已折叠的块,并执行「恢复块的原始高度 / 恢复每一行的原始高度 / 展开全部区块 / 全部复位」。

诊断属性

排查时可在 document.documentElement 查看 data-dsh-sw-state(如 panes:nav=62 rows:1 fit:1 hidden:0、rail、no-root、no-blocks)与 data-dsh-sw-fault(apply 抛错摘要)。相关 DOM 上还有 data-dsh-sw-sash、data-dsh-sw-pane、data-dsh-sw-row 等属性,便于在 DevTools 中对照。

安装与启用

本插件通过 dsh-market 索引分发,而非 dsh plugin add github:... 形式的命令行安装。在 DSH 插件 → 发现 中点击「添加索引源」,粘贴下列 URL:

https://raw.githubusercontent.com/nullifyi/dsh-sidebar-width/main/market/index.json

添加后在「发现」中搜索「侧栏分区拖拽」。资料中最新索引条目版本为 0.6.24;已有安装需刷新索引并更新插件,重新加载后生效。package.json 中客户端配置为 platform: web、immediately: true。

DSH 社区目录页:nullifyi/dsh-sidebar-width。源码与完整说明:GitHub — nullifyi/dsh-sidebar-width,许可证 MIT。

典型用法

  1. 安装并重新加载 DSH 后,将鼠标移到侧栏两块内容之间的缝上,出现握把后上下拖动,调整导航区、工作区或底栏相对高度。
  2. 需要只压矮用量卡或某一导航行时,把指针贴近该行与下一行之间的缝(±6px),拖动小握把;不满意则双击该行缝复位。
  3. 某块长期不用时,点块左侧折叠键,改为头像上方的图标;需要时再点图标展开。
  4. 布局乱了或想回到宿主默认时,进入 设置 → 侧边栏分区,使用「全部复位」或分项恢复。

仓库内开发者可运行 Playwright 回归(需 Node ≥ 18):

npm ci
npx playwright install chromium
npm test

也可设置环境变量 DSH_TEST_BROWSER 为本机 Edge/Chrome 可执行文件路径,跳过浏览器下载。

适用场景与注意

适合长期在 DSH 左侧栏同时打开插件列表、任务看板、长会话列表与底部用量/远程控制,且希望按块、按行分配纵向空间、必要时折叠整块的用户。与其它侧栏美化类插件的关系在 README 中写明:不接管原生拖拽,不与 dsh-better-sidebar、ui-theme 的字体设置冲突;对远程控制插件的共享底行使用 display:contents 等兼容处理。

插件以当前 DSH 进程权限在客户端注入运行。安装前应自行阅读 仓库源码 与 MIT 许可证。社区目录(SkillHub)为独立站点,与 DeepSeek / 幻方无官方从属关系。

README 注明:仓库内 tests/sidebar.html 与 Playwright 测试使用真实浏览器 flex/grid/zoom 与 DOM 几何断言,夹具模拟宿主 DOM/CSS,不等于已在真实 DSH 宿主中完成验收。若在特定版本宿主上遇到布局异常,可结合 data-dsh-sw-state 与设置页复位后再反馈维护者。

结尾

dsh-sidebar-width 把 DSH 左侧栏当成可分割、可缩放、可折叠的多块视图,而不是单一固定侧栏。若你主要痛点是「某一块太高/太矮」或「底栏多行挤在一起」,可按上文索引安装,用块分界与行缝拖动先试一轮,再用设置页统一管理保存的高度与折叠状态。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye