前言¶
在 DeepSeek Harness(DSH)里用 Web 或桌面客户端时,左侧栏会依次堆叠品牌行、New Session、各个全局面板入口、工作区列表和 Settings。每装一个会注册面板的插件,侧栏就多一行——插件管理、插件市场、定时任务、MCP Studio、上下文、Skills、系统监控等,十行左右大约占掉 400px 高度,留给会话列表的空间往往只剩几条。若你习惯同时开多个插件面板,又不想改 DSH 本体,就需要一种只动客户端、把「面板入口」收拢的办法。下面介绍社区插件 dsh-sidebar-shelf(侧栏收纳架)的做法。
这是什么¶
dsh-sidebar-shelf 由维护者 wumouren114 发布,分类为客户端插件,MIT 许可证,当前包版本为 0.2.1(以仓库 package.json 为准)。它把侧栏里所有面板注册行折叠成原位置的一行 Panels / 面板,紧挨在 New Session 与工作区列表之上;需要某个面板时再点开收纳架选择,用完后侧栏仍保持紧凑。
插件目录页:skillhub.cn/plugins/wumouren114/dsh-sidebar-shelf。DSH 生态强调「一切皆插件」;SkillHub 等社区目录与 DeepSeek / 幻方无官方从属关系,安装前请自行查看源码与许可证。
核心功能¶
以下能力均来自仓库 README 与实现说明,未在资料中出现的配置项不写。
一行替代整列面板入口¶
收纳架占用的仍是原生面板行的位置、宽度和间距; sibling 面板行被隐藏后,工作区列表直接上移。收纳架本身通过 sidebar.panellist 注册一行(order: -1000,标签为「面板 / Panels」),复用 Shell 的 panelRow 按钮、悬停、36px 轨道形态和 tooltip,而不是另画一条假侧栏。
收纳架内的面板列表¶
- 从
ctx.slots.entriesOfSlot("sidebar.panellist")读取其余面板,按order与注册顺序排序,两列展示,每项使用面板自己注册的图标组件。 - 打开面板走官方 API:
ctx.layout.selectPanel(id);当前选中状态来自ctx.layout.panelInfo,在收纳架内显示 active 标记。 - 面板数量超过七个时出现搜索;支持键盘:
↑/↓移动、Enter打开、Esc关闭,直接输入可过滤。
兼容「直插侧栏」的插件行¶
部分插件不走路由 slot,而是用 data-dsh-*-entry 约定把一行插进侧栏(如 dsh-webchat、taskboard、ssh)。收纳架会在原位隐藏这些行,并在收纳架顶部列出其图标、标签与 active 状态;选中时调用该行自己的 click(),原有开关逻辑不变。
窄轨与主题¶
56px 侧栏轨道模式下,仍显示 Shell 的 36px 图标,收纳架在轨道侧面展开而非盖住轨道。样式仅使用 --dsw-alias-*、--dsw-radius-*、--dsw-shadow-* 等 token,随浅色 / 深色主题切换。
安装与启用¶
需要带 web profile 的 DSH 客户端(桌面应用共用同一套客户端)。CLI 安装 Node.js ≥ 20;客户端要求 DSH 0.2.x。仓库说明该包自带手写 lib/client.js,无 prepare / postinstall,从 GitHub 安装时不会卡在 pnpm 的 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS。
README 中的安装示例使用 desktop profile;若你实际跑的是 web、tui 等,把 --profile 换成对应名称即可:
dsh plugin --profile desktop add github:wumouren114/dsh-sidebar-shelf
安装后请在 Settings → Plugins 中启用(会写入 dsh.profile.bundles),并重新加载页面。
验证: 整列面板入口应变成 New Session 与工作区之间的单行 Panels。点击后能看到所有已注册面板(含 Plugins);选中一项会打开该面板并关闭收纳架。
典型用法¶
- 完成安装与启用并重载页面后,侧栏只保留一行 Panels(或「面板」)。
- 点击该行,在展开的收纳架里点选目标面板(例如插件管理、MCP Studio)。
- 面板较多时用搜索或键盘快速定位;用
Esc关闭收纳架而不切换面板。 - 若同时使用带
data-dsh-*-entry的插件,其入口会出现在收纳架列表顶部,行为与侧栏原按钮一致。
卸载或禁用插件后,标记、事件与样式表会移除,原生多行面板入口恢复显示。
实现要点(供排查问题)¶
插件不修改工作区行、品牌行、Settings 或宿主机行为。核心在 lib/client.js:注册收纳架行 → 在 capture 阶段拦截点击以打开收纳架并避免 Shell 对无效 id 调用 selectPanel → 用 scoped CSS 隐藏同列表内其他行(列表节点仍挂载以保持布局)→ 汇总 slot 与注入行并渲染收纳架 UI。
资料中记录的验证环境包括 DSH 0.2.1-rc.3、Windows、Chromium 1440×900 下的 23 项端到端检查,以及 node test/smoke.mjs 的 10 项 manifest / 接线检查(无浏览器依赖)。
适用场景与注意¶
适合: 已安装多个侧栏面板插件、希望把垂直空间还给工作区列表,且接受「面板入口默认收进收纳架」的 DSH 用户。
务必了解:
- 插件在当前 DSH 进程权限下运行;安装前请阅读 GitHub 源码 与 MIT 许可证。
- 所有其他面板行都会被隐藏,包括 Shell 自带的 “More”(Browse other plugins / Create your plugin);Plugins 面板仍可从收纳架一次点击打开。
- 仅当注入行遵循
data-dsh-*-entry时才会被收纳;无该标记的自定义注入行仍会留在侧栏。 - 暂无「固定某几个面板在侧栏」的策略;需要可在仓库 issue 反馈。
- 不要与同样隐藏面板列表的插件叠用(如
dsh-toomuch-plugins、dsh-sidebar-organizer),只选其一。 - 若未来 DSH 更改侧栏 DOM 结构,最坏情况是列表未被隐藏,而非侧栏损坏。
结尾¶
dsh-sidebar-shelf 用一行原生样式的 Panels 入口,把 DSH 左侧所有面板(含符合约定的注入行)收进可搜索、可键盘操作的收纳架,把侧栏高度还给工作区。需要安装命令、截图与限制说明时,以仓库 README 为准。
- 目录页:https://www.skillhub.cn/plugins/wumouren114/dsh-sidebar-shelf
- GitHub:https://github.com/wumouren114/dsh-sidebar-shelf