前言¶
DeepSeek Harness(DSH)左侧栏里,每个带侧栏入口的插件都会占固定一行:行高 36px,行间距 2px。入口一多,这一列会无条件变长,挤占下方工作区会话列表的可视高度。宿主「更多」菜单里的取消固定既不持久,也无法隐藏 Plugins 入口,排序也改不了。
下面介绍社区插件 dsh-sidebar-layout(维护者 Yu-jianhai,分类:客户端)。它不改宿主侧栏单例槽,在入口列表上叠一层布局控制:限高滚动、拖动排序与调高、逐个显隐,把省下来的纵向空间还给会话列表。
这是什么¶
dsh-sidebar-layout 是 DSH 插件包:通过 dsh.client 与 cordis.patch.yml 注入客户端 bundle(lib/client.js,无需单独构建)。目标很明确——把左侧栏插件入口从「无限长高的一整列」变成「有上限、可滚动、顺序与显隐可持久化」的窗口。
- 仓库:Yu-jianhai/dsh-sidebar-layout
- 目录页:SkillHub 插件页
- 许可证:MIT(© 2026 Ne_Rn)
- 平台要求:
dsh引擎>=0.2.0-rc.1 <0.3.0-0(README 标注 DSH 0.2.x);Node>=20
README 中举例:约八个侧栏入口时,入口列固定占用约 348px,会话列表因此被压缩。本插件通过 nav 的 max-height(按可见行数 3 行起,最多到「一行一个入口」)把多出的入口收进窗口内滚动,而不是继续向侧栏要高度。
核心功能¶
限高与滚动¶
鼠标移到入口列表底部会出现横向热区,上下拖动可改变窗口显示行数;双击可恢复「不限高」。行数下限为 3,上限随当前入口数量变化:最多拖到「全部 N 行」,不会出现空白行;若你主动设了较小的上限,新装的侧栏插件仍追加在列表末尾,留在滚动区外,小上限会被尊重。
拖动排序¶
行内悬浮时右侧出现抓手,按住上下拖即可改顺序,结果写入 localStorage。设置页提供 ↑ / ↓ 作为键盘可达兜底。拖动时:被拖行变为跟手浮卡([data-dsl-drag-card]),原位置用占位([data-dsl-drag-ph])标出落点,其余行以 180ms FLIP 让位,松手先吸附再 persist();按 Esc 取消且不提交。占位形态可在设置中选择实心灰块、虚线框或幽灵行,也可关闭吸附回弹——仅影响观感,不改排序语义。
逐个显隐¶
在 设置 → 侧栏布局 中勾选,或使用侧栏底部三条横线图标打开的浮层,可对每个入口单独开关。隐藏的行使用 display: none。这与宿主「更多」菜单里的 pin 状态不同步(宿主未暴露该 API)。
实验性紧凑密度¶
设置里可开启「实验性」紧凑模式,行高由 36px 变为 28px,对应 nav[data-dsl-density="compact"]。
其它设计要点¶
- 不改宿主宽度与滚动条样式,继承
--dsh-scrollbar-width(5px),仅做横向对齐补偿,使列表滚动条与会话列表对齐。 - 与 dsh-apple-hig 分工:会话树拖拽归 apple-hig,一级导航入口归本插件。
- 找不到侧栏时静默降级,最坏情况等同未安装。
- 设置页若在某 DSH 版本渲染失败,会显示错误文本与
__dsl排查提示,侧栏本身不受影响。
偏好存储键:localStorage['dsh-sidebar-layout:v1'],结构为 { v, order: string[], hidden: string[], maxRows: number|null, density: 'comfortable'|'compact' }。
安装与启用¶
这是本地 profile 依赖方式安装,与其它 DSH 本地插件一致:写入 dependencies 并在 dsh.profile.bundles 中登记 bundle 名,再让 node_modules/dsh-sidebar-layout 指向插件目录(联合或联接均可)。若 DSH 的 HMR 关闭,安装或修改后需重启 DSH。
// ~/.dsh/profiles/desktop/package.json
{
"dependencies": { "dsh-sidebar-layout": "link:/path/to/dsh-sidebar-layout" },
"dsh": { "profile": { "bundles": [ /* … */ "dsh-sidebar-layout" ] } }
}
无构建步骤:lib/client.js 已是 window.__ModuleLoader__.load({…}) 形态的客户端 bundle。
典型用法¶
- 安装并重启(必要时)后,侧栏入口列会受插件管理的
max-height与滚动约束。 - 需要常看的入口拖到靠前位置;不常用的在 设置 → 侧栏布局 或底栏三条线浮层里关闭显示。
- 入口变多时,在列表底边热区拖动调高可见行数,或保持较小上限并在窗口内滚动。
- 调试时在浏览器控制台使用
window.__dsl:
-__dsl.state()— 当前偏好
-__dsl.mapping()— 入口 id 与渲染行对应
-__dsl.nav()— 定位到的nav
-__dsl.align()— 滚动条对齐实测值
-__dsl.caps()— 行数上限派生值
-__dsl.refresh()/__dsl.reset()— 刷新或清空偏好
维护者提供的自检命令(在插件目录内):
node --check lib/client.js
node test/boot-smoke.mjs
卸载时从 bundles 与 dependencies 移除名称、删除目录联接并重启;插件会清理注入的 <style>、行内样式与浮层节点。
适用场景与注意¶
适合侧栏插件入口较多、会话列表经常被挤短的 DSH 0.2.x 桌面 profile 用户。插件以当前 DSH 客户端进程权限运行,安装前应阅读仓库源码并确认 MIT 许可证与 cordis.patch.yml 行为是否符合你的环境。
注意:不要指望与宿主「更多」菜单的隐藏状态一致;Plugins 入口仍受宿主规则约束。社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-sidebar-layout 用叠加层方式整理侧栏插件入口:限高滚动、可排序、可调高、可显隐,把纵向空间还给工作区会话列表。进一步了解可访问 SkillHub 目录页 与 GitHub 仓库。