@adamcjm/dsh-workspace-visibility:在 DSH 侧栏隐藏工作区(仅显示层)

前言

DeepSeek Harness(DSH)把能力拆成插件,侧栏里的工作区与会话是日常导航的核心。工作区多了以后,归档、改名、移动都能动到底层数据;若只想暂时从列表里「看不见」某些工作区及其会话,又不想改 workspace、session 或 archive,就需要一种纯展示层的开关。下面介绍社区插件 @adamcjm/dsh-workspace-visibility(维护者 adamcjm,分类:客户端),它只在侧栏过滤显示,并把所有状态写在 Host 侧一个小文件里。

这是什么

@adamcjm/dsh-workspace-visibility 是 DSH 客户端插件:把选定的工作区及其拥有的会话从侧栏隐藏,需要时再通过视图选项全部显示出来以便恢复。设计为 Display-only——不调用归档、解档、重命名、移动、置顶或删除;不修改工作区记录、会话日志或归档集合。npm 包当前版本为 0.2.7(见仓库 package.json),许可证 MIT,Node 要求 >=20。

插件目录页:skillhub.cn/plugins/adamcjm/dsh-workspace-visibility。源码与说明:github.com/adamcjm/dsh-workspace-visibility。DSH 社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

侧栏隐藏与恢复入口

插件在两个你本来就会点到的位置接入:

  1. 工作区行 →「…」菜单 → Hide workspace(在已显示隐藏项时,同一项会显示为 Unhide workspace)。
  2. 侧栏 → View options → Show hidden workspaces (N):持久化开关,用于列出所有已隐藏工作区以便恢复;标签上的 N 是当前隐藏数量。

隐藏后,该工作区行及其下所有会话从侧栏消失;README 截图说明底部会显示与隐藏数量相关的提示。

状态存哪里、如何同步

隐藏的工作区 id 与 Show hidden workspaces 开关属于 Host 状态,不是浏览器 localStorage:

  • 路径:$DSH_HOME/storages/workspace-visibility.json,由插件 Host 半部原子写入(临时文件 + rename)。
  • 浏览器启动时拉取一次状态,随后通过 SSE(/workspace-visibility/stream)跟随变更;与内置的 workspace/follow 推送模型类似。
  • 本地变更经 POST /workspace-visibility/mutate 以增量提交,避免多客户端互相覆盖。
  • 同一 $DSH_HOME 下,DSH Desktop 与 dsh web 是两个 Host 进程,共享该文件并互相广播(通常小于 1 秒);不同 $DSH_HOME(另一台机器、自定义目录、远程 Host)各自一份状态,不做跨机网络同步。
  • desktop / web profile 在相同 DSH_HOME 下共用同一状态文件;未安装本插件的 profile(例如仅 TUI)仍显示全部工作区。

0.1.x 曾用浏览器 localStorage(dsh-workspace-visibility.state.v1);升级后 Host 会一次性清理该键,不迁移旧隐藏列表,升级后原先隐藏的工作区会重新可见。

健壮性(摘要)

状态文件缺失、损坏或过大(> 1 MiB)时按空状态处理并记日志,不会让 Host 崩溃;已删除工作区的 id 会自动修剪;写盘失败时保留内存状态并告警。浏览器侧同步失败会重试,SSE 会自动重连。

安装与启用

需要 DeepSeek Harness 0.2.0-rc.2 或更新版本(README 写明在 0.2.0-rc.2、0.2.1-rc.2 上测试过)。

推荐从 npm 安装(将 <profile> 换成你的 profile 名):

dsh plugin --profile <profile> add @adamcjm/dsh-workspace-visibility

dsh plugin add 会写入依赖与 bundle 条目。完成后:

  1. 重启 DSH 应用(Host 插件树在进程启动时组装)。
  2. 硬刷新页面(Cmd/Ctrl+Shift+R),让渲染进程加载新的客户端 bundle。

也可在 ~/.dsh/profiles/<profile>/package.json 中手动添加依赖 "@adamcjm/dsh-workspace-visibility": "^0.1.0",并在 dsh.profile.bundles 中加入 @adamcjm/dsh-workspace-visibility,然后在该目录执行 pnpm install,再重启并刷新。

若 profile 启用了 pnpm 的 minimumReleaseAge 导致刚发布的版本被拒绝,可在该 profile 的 pnpm-workspace.yaml 里把包名加入 minimumReleaseAgeExclude。

固定版本可从 GitHub release 安装(示例为 v0.1.0 标签,日常使用请固定你验证过的 tag,不要跟 main):

dsh plugin --profile <profile> add https://codeload.github.com/adamcjm/dsh-workspace-visibility/tar.gz/refs/tags/v0.1.0

本地开发可用 link: 指向检出目录,见 README「From a local checkout」一节。

典型用法

  1. 将鼠标悬停在某一 Workspace 行,打开 「…」 菜单,选择 Hide workspace。该行及其会话会从侧栏移除。
  2. 打开侧栏 View options(滑块图标),打开 Show hidden workspaces (N),已隐藏的工作区会重新出现在列表中,便于在菜单里 Unhide workspace 恢复显示。

全程不改动工作区或会话的持久数据,只改变侧栏是否展示。

适用场景与注意

适合谁: 侧栏工作区很多、需要临时收起若干项目(含其会话)又不想归档或删数据的 DSH 用户;多标签、Desktop 与 dsh web 共用同一 Host 时,隐藏列表会自动对齐。

安装前请知悉: 插件以当前 DSH Host 进程权限运行,会读写 $DSH_HOME/storages/workspace-visibility.json。安装插件前应阅读源码与 MIT 许可证,确认符合你的环境与合规要求。从 0.1.x 升级不会保留浏览器里旧的隐藏列表。

结尾

@adamcjm/dsh-workspace-visibility 用 Host 侧一份小 JSON 和 SSE 推送,在侧栏实现「隐藏 / 显示工作区」的纯展示能力,适合整理导航而不动底层数据。更多信息见 插件目录页 与 GitHub 仓库。

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

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

小夜