前言¶
在 DSH Web 里,凡是注册了全局面板的已安装插件,都会在左侧边栏占一行。装到十来条以后,工作区和会话列表往往被顶下去。官方侧栏只能整列收成约 56px 的窄轨,而 More 菜单也不负责管理单条入口的显隐。若你不想卸掉插件、只希望侧栏干净一些,dsh-nav-tidy 做的是「只藏入口、插件照常加载」这一层。
这是什么¶
dsh-nav-tidy 是社区维护者 AD199-gif 发布的 DSH 客户端插件(当前包版本 0.3.0,MIT 许可)。它不改变插件是否启用,只控制侧栏里某条面板入口是否在 UI 上显示;背后插件仍会加载,面板仍可通过其它方式触达(若插件本身提供)。
核心功能¶
下面几项能力在 README 中有明确说明,安装后即可使用。
勾选面板¶
侧栏 More → 侧栏入口… 打开底部勾选面板。取消勾选某行即隐藏对应侧栏按钮;重新勾选可恢复。「全部显示」会清空隐藏列表。新装插件新注册的入口默认都会显示,是否隐藏由你决定,插件不会出厂就替你藏掉任何一项。
控制台 API¶
同一套隐藏状态可通过浏览器控制台脚本操作,全局对象为 dshNavTidy:
dshNavTidy.open() // 打开勾选面板
dshNavTidy.list() // 当前已隐藏的入口
dshNavTidy.hide('SSH') // 隐藏标签包含 "SSH" 的行(子串、不区分大小写)
dshNavTidy.show('SSH') // 恢复
dshNavTidy.reset() // 恢复默认(全部显示)
匹配规则是子串、忽略大小写:例如 SSH 会同时命中 SSH tunnel;插件 也可能连带隐藏 插件市场。之后新安装的插件若注册了侧栏行,会自动出现在面板里,无需改本插件代码。
持久化¶
隐藏列表写在 localStorage 键 dsh-nav-tidy:hidden 下,重启 dsh 后仍生效。
实现要点(便于排错)¶
插件给侧栏根节点打 data-nav-tidy-scope,再注入样式规则,按 button 的 aria-label 子串隐藏对应行;用 MutationObserver 在 React 替换侧栏子树时重新挂上标记。勾选面板注册在 sidebar.panellist.actions 插槽(与官方 More 菜单同类位置),以普通 DOM 覆盖层渲染。不 patch dsh 源码,加载时不强制依赖 @deepseek-ai/*;菜单行可选使用 @deepseek-ai/dsh-client-ui-primitives,缺失时回退为普通按钮。
安装与启用¶
按你的 profile 名称替换下面的 desktop(若使用 dsh web,可改为 web 等)。
从 GitHub 安装:
dsh plugin --profile desktop add github:AD199-gif/dsh-nav-tidy
或使用发布页预构建包:
dsh plugin --profile desktop add https://github.com/AD199-gif/dsh-nav-tidy/releases/latest/download/dsh-nav-tidy.tgz
安装后需重启 dsh,客户端 bundle 才会被加载。
插件以当前 dsh 进程与 Web 端的权限运行。安装前建议在 GitHub 仓库 查看源码与 MIT 许可证,自行判断是否符合环境要求。
典型用法¶
- 安装并重启 dsh Web 或 Desktop。
- 侧栏打开 More → 侧栏入口…,对暂时不用的入口取消勾选。
- 若需批量或自动化,在开发者工具控制台调用
dshNavTidy.hide('某标签片段');用dshNavTidy.list()核对当前隐藏项。
要确认某条侧栏按钮实际暴露的标签,可在控制台执行:
[...document.querySelectorAll('nav button')].map(b => b.getAttribute('aria-label'))
没有 aria-label 的入口无法被本插件按标签命中。
环境与限制¶
要求: dsh Web(桌面应用或 dsh web profile),且存在 sidebar.panellist.actions 插槽——README 写明该插槽在 @deepseek-ai/dsh-client-ui-sidebar 0.2.2-rc.1 及附带 dsh-client-ui-entry-customization 的构建中可用;作者在 Windows 上于 DSH Desktop 0.2.2-rc.1 做过测试。
限制:
- 仅视觉隐藏。 被藏入口对应的插件仍会加载并占用内存;若要释放资源,需在插件管理里禁用插件本身。官方整列折叠与本插件「按行管理」是两套能力。
- 匹配依赖侧栏按钮的
aria-label;无法靶向无标签的行。 - More 那一行本身不能隐藏,否则无法再回到勾选面板。
结尾¶
dsh-nav-tidy 适合侧栏插件较多、又不想为清爽界面逐个禁用插件的 DSH 用户:用勾选面板或 dshNavTidy API 管理入口显隐,状态落在本地 localStorage。