前言¶
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 / 幻方无官方从属关系。
核心功能¶
侧栏隐藏与恢复入口¶
插件在两个你本来就会点到的位置接入:
- 工作区行 →「…」菜单 → Hide workspace(在已显示隐藏项时,同一项会显示为 Unhide workspace)。
- 侧栏 → 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/webprofile 在相同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 条目。完成后:
- 重启 DSH 应用(Host 插件树在进程启动时组装)。
- 硬刷新页面(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」一节。
典型用法¶
- 将鼠标悬停在某一 Workspace 行,打开 「…」 菜单,选择 Hide workspace。该行及其会话会从侧栏移除。
- 打开侧栏 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 仓库。