dsh-yinji: Selective Hiding of Workspace and File Tree in DSH

前言

在 DSH Desktop 里同时挂着多个工作区、大仓库文件树很长时,左侧列表和右侧「文件」标签页会占满视线,但多数条目只是「暂时不想看」,并不等于要从 DSH 里删掉工作区或从磁盘上删文件。DSH 自带的工作区删除会改变注册关系;模型侧的 read、glob、grep 和 @ 引用仍会把整个树当作可用资源。若你只想在界面上收一收、把注意力留给当前任务,需要一层只作用于 UI 的隐藏,而不是权限或隐私隔离。

下面介绍社区插件 隐几(dsh-yinji,维护者 Landau1994)。它在左侧栏隐藏选定工作区(含组内会话),在右侧文件树隐藏选定目录与文件;名单存在浏览器 localStorage,刷新或重开仍有效。插件分类为客户端,许可证 MIT,当前 package 版本 0.2.0,目标运行时 DSH 0.2.x。

这是什么

隐几给 DSH 提供两层「选择性隐藏」:左侧针对工作区列表,右侧接管「文件」标签页并在原文件树交互之上增加隐藏操作。README 明确说明:只影响界面,不影响模型——隐藏名单仅作用于左侧列表与右侧文件树;模型的读写与搜索、会话数据、工作区注册、预览与 shell 访问均不受影响。它是视觉降噪与界面收纳,不是权限控制。

名字取自《庄子·齐物论》「隐几而坐」——把几案收一收,眼前就清了。

核心功能

左侧栏:隐藏工作区

鼠标移到左侧「工作区」列表中某一真实工作区行上,行尾会出现「眼睛划斜线」按钮;点击后该工作区连同组内会话从列表消失(对应 groupSection 整块隐藏,未分组桶不受影响)。

「工作区」标题栏会出现眼睛加计数按钮(如「已隐藏 N 个工作区」),点开可逐项恢复或「全部恢复」;Esc 或点击弹层外关闭。隐藏名单按 workspace id 写入 localStorage(key:dsh-yinji.workspaces.v1),按工作区独立存储,多窗口间通过 storage 事件同步。切换「按工作区 / 按工作区树 / 单列表」、展开折叠或搜索后,隐藏状态仍保持。隐藏当前会话所在工作区只会收起左侧对应行,主会话区不受影响。

右侧栏:隐藏文件与目录

插件通过 DSH 官方的 tab-type extension 机制,在 files kind 上以 priority: 'extension' 遮蔽内置文件树;外观、打开文件、目录展开与自动刷新保持原样,行尾增加隐藏操作。

  • 单个隐藏:悬停目录或文件行,点行尾眼睛按钮;隐藏目录等于隐藏整棵子树。
  • 多选隐藏:标题栏勾选按钮进入选择模式,勾选若干行后点底部「隐藏所选」。
  • 恢复:标题栏眼睛计数打开「已隐藏的项目」面板,逐项恢复或「全部恢复」;父目录行尾有小计数,提示其下仍有隐藏项。

名单按工作区根目录路径存 localStorage(key:dsh-yinji.v1)。插件不写宿主配置文件、不向服务器发送数据。

安装与启用

前置:DSH Desktop 0.2.x。插件为纯浏览器插件,无构建步骤与运行时依赖;官方提供的桌面安装脚本为 Windows PowerShell,其它平台用手动步骤。

Windows 上可先克隆仓库再执行安装脚本(脚本会调用 dsh plugin --profile desktop add 登记本地链接并校验 dsh.profile.bundles):

git clone https://github.com/Landau1994/dsh-yinji.git
cd dsh-yinji
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\install-desktop.ps1

# 装完手动重启 DSH Desktop

若 HTTPS 连 GitHub 不稳,README 建议改用 SSH 克隆地址 git@github.com:Landau1994/dsh-yinji.git。脚本支持 -WhatIf 预览、-Profile <名字> 换 profile、-Dsh <dsh.cmd 路径> 指定 CLI。

任意平台手动安装:

# 1) 登记本地链接
dsh plugin --profile desktop add /path/to/dsh-yinji

# 2) 在 profile 的 package.json → dsh.profile.bundles 里加上 "dsh-yinji"
#    (Windows 下常见路径:%USERPROFILE%\.dsh\profiles\desktop\package.json)

# 3) 重启 DSH Desktop

卸载可用 scripts/uninstall-desktop.ps1,或:

dsh plugin --profile desktop remove dsh-yinji

同样需要重启 DSH Desktop。卸载后内置文件树自动恢复;localStorage 中的隐藏名单仍保留但不再生效。

安装前建议阅读仓库源码与 MIT 许可证;插件随 DSH 客户端在本地运行,与所有 DSH 插件一样,应确认你信任维护者与代码行为。

典型用法

左侧栏

  1. 鼠标移到「工作区」某一行,点行尾眼睛按钮隐藏。
  2. 点标题栏右侧眼睛与数字,打开管理弹层。
  3. 对某行点 × 恢复单个,或「全部恢复」;Esc 或点外面关闭。

单列表或搜索视图下没有工作区行可操作,但 header 计数仍可打开管理;切回「按工作区」或「按工作区树」可见隐藏效果。

右侧栏

  1. 打开右侧栏,在 guide 页点「工作区文件」。
  2. 悬停一行点眼睛隐藏;目录会连带子树一起隐藏。
  3. 用标题栏眼睛计数管理已隐藏项;勾选按钮进入多选,底部「隐藏所选」批量隐藏。

适用场景与注意

适合谁:长期多工作区并行、单仓库目录极深、希望左侧和文件树「少而精」但不改变模型能访问的范围的 DSH 用户。

务必知晓的限制(均来自 README「已知限制」):

  • 隐藏后模型仍可通过工具读文件;左侧隐藏也不删除工作区或会话。
  • 新会话 hero 的工作区选择器、hover 卡片等其它界面不受影响;要全局移除工作区需用 DSH 自带删除。
  • 左侧隐藏按钮依赖行 hover(内置 rowActions 行为),纯键盘暂不能触发隐藏;管理弹层可键盘操作。
  • 接管后的文件 tab 不显示 0.2.x 内置的「在文件管理器中打开」(插件为避免与子槽重复注册而刻意不声明该子槽)。
  • 同一工作区在两个右侧栏面板同时打开「文件」时,一处隐藏后另一处需刷新或重新打开才同步。
  • 上游 DSH 大版本若改动左侧 DOM 锚点或右侧 tab extension 契约,需要插件适配。

社区插件目录页:skillhub.cn/plugins/Landau1994/dsh-yinji。该站点为社区生态索引,与 DeepSeek / 幻方无官方从属关系;DSH 本身遵循「一切皆插件」的扩展思路。

结尾

隐几把「不想看的工作区」和「不想看的目录/文件」收进本地名单,让 DSH 界面更干净,同时不改变模型与宿主对资源的实际访问。若你需要的是界面收纳而非删数据或拦模型,可按上文步骤在 desktop profile 安装 0.2.0 并重启客户端。

  • 目录页:https://www.skillhub.cn/plugins/Landau1994/dsh-yinji
  • 源码与完整说明:https://github.com/Landau1994/dsh-yinji
羽毛球分组比赛记分
小程序二维码

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

Xiaoye