dsh-workspace-browser:以工作区为中心的 DSH 会话浏览器

前言

在 DSH 里同时维护多个工作区、大量会话时,原生侧栏往往只能按宿主默认树形结构浏览。想按工作区聚合查看、用元数据搜索会话、或在空白页上更快切换工作区,通常要在多个入口之间来回点。下面介绍社区客户端插件 dsh-workspace-browser(维护者 FFFengMJL,GitHub:FFFengMJL/dsh-workspace-browser),它在 Web UI 侧栏增加一块全宽、以工作区为先的浏览面板,浏览与筛选留在插件内,真正打开或切换会话仍交回 DSH 原生导航。

这是什么

dsh-workspace-browser 是纯客户端 DSH 插件(platform: web),不 patch 宿主代码。它在侧栏注册入口,用于浏览已注册工作区、查看各工作区下的会话,并在你选中会话或新建会话时把导航交还给 DSH。插件 manifest 声明的已验证目标是 DSH 0.2.1-rc.5;其他版本未在资料中声明为已测,加载时可能需宿主兼容性确认。

README 说明:实现主体、重构与文档由 AI 编码代理完成,需求与产品方向来自维护者;这不代表质量、安全或兼容性已审阅,安装前宜自行查看源码、测试与许可证。

核心功能

工作区与会话视图

  • 工作区网格与详情视图,支持按注册顺序、名称、最近活动排序,以及原生工作区重排。
  • 工作区卡片上保留置顶、新建会话和「更多」控件;隐藏、重命名、上移/下移、删除放在溢出菜单中,并处理键盘、Escape 与区外点击。
  • 支持工作区视图、按父目录分组视图、扁平会话视图;未分组会话直接展示,不扫描磁盘、不改变归属。
  • 元数据搜索覆盖工作区名称/路径与会话标题/ID,范围可选全部、仅工作区或仅会话;工具栏集中搜索与排序,筛选与插件设置收在一个 disclosure 里。

添加与管理 workspace

  • 在面板中通过 DSH 原生目录选择器添加工作区:选中已有主机目录后,经 DSH 公开 workspace 服务注册。原生选择失败时可重试,或使用手动路径/应用内浏览回退;重复路径会解析到已有工作区。
  • 工作区重命名、删除经 DSH 公开 workspace 服务;删除仅移除注册,保留文件夹与会话日志,相关会话回到「未分组」。
  • 隐藏的工作区支持选择性恢复:搜索列表、单条恢复、勾选子集恢复或全部恢复。

可选:简化原生会话树

默认关闭。开启后,用紧凑条目替代 DSH 原生工作区/会话区域。「已打开会话」列表仅在真正进入会话时记录,按当前工作区分组,保留手动顺序并本地持久化;移除快捷方式不会关闭或删除会话。长列表在条目内滚动,带细滚动条与底部渐隐。在插件面板设置中关闭,或卸载插件,可恢复原生树。

可选:增强原生工作区选择器

默认关闭。开启后,新建/空白会话页上原有工作区按钮弹出的菜单变为可搜索列表。匹配标题与完整路径子串、无声调全拼与拼音首字母(README 举例:「广州项目」可匹配「广州」「guangzhou」「gzxm」)。选择仍调用宿主的 onPick,会话归属与草稿处理保持原生行为。

会话操作与筛选

  • 会话手动/最近排序、归档筛选、原生置顶/重命名/归档/恢复、fork、复制 ID、新建会话等;仅改状态的操作(含归档当前选中会话)保持浏览器打开,打开会话或新建会话才是明确导航动作。
  • 委托子代理会话默认隐藏,可通过开关显示;标记来自 catalog 的 origin 字段。
  • 空白会话(blank)默认跟随原生树:仅列出当前打开的一条,标为「New session / not started yet」,切走后从列表消失且不删除;开启「Show blank sessions」可列出所有未发送草稿并按元数据搜索。
  • 紧凑侧栏中每个真实工作区分组标题右侧有新建会话按钮,调用原生 startSession(workspaceId);未归属分组无此按钮。
  • 统一紧凑密度;旧版保存的「comfortable」密度值会被忽略,其余偏好保留。

范围与限制(资料原文要点)

  • 搜索只匹配 catalog 元数据,不搜索对话正文。
  • 分组、排序、归档筛选、子代理可见性、工作区置顶/隐藏、简化侧栏与增强选择器偏好等持久化在插件键 dsh-workspace-browser.preferences.v1;已打开会话 ID 在 dsh-workspace-browser.opened-sessions.v1;不存会话标题、路径或正文。同源标签页通过 localStorage 同步,存在极窄的 last-writer 竞态。
  • 响应式布局、可见键盘焦点;浏览器不从插件侧为每个会话加载历史。

客户端 bundle 内含 pinyin-pro 3.29.5(MIT),用于拼音索引。

安装与启用

插件未发布到 npm。发行版以 GitHub Releases 附带的预构建 .tgz 提供,安装时不编译、不跑 install 脚本。

从 Release tarball(推荐)

  1. 打开已发布的 release,复制 .tgz 资源 URL,例如:
   https://github.com/FFFengMJL/dsh-workspace-browser/releases/download/v0.2.1/dsh-workspace-browser-0.2.1.tgz

Draft release 无可用下载链接,须发布后才能解析 URL。

  1. 安装到运行 Web UI 的 profile:
   dsh plugin --profile web add <tarball-url>

DSH 会在该 profile 注册 bundle,无需手改 dsh.profile.bundles。

  1. 重启该 profile,刷新 Web UI。侧栏面板列表中会出现插件入口。

若 bundle 已存在但被关闭,在插件管理器中重新启用;重装不会自动打开开关。

安装前可选校验(示例 URL 与文件名与 release 一致时):

curl -fLO <tarball-url>
curl -fLO <tarball-url>.sha256
sha256sum -c dsh-workspace-browser-0.2.1.tgz.sha256
dsh plugin --profile web add "$PWD/dsh-workspace-browser-0.2.1.tgz"

本地 checkout(开发)

  1. 在仓库内执行 pnpm install 与 pnpm build。
  2. 执行 dsh plugin --profile <profile> add link:/absolute/path/to/dsh-workspace-browser。
  3. 重启 profile。link: 安装指向工作树,不是可分发的 release。

典型用法

  1. 按上述步骤为 web profile 安装 0.2.1 对应 tarball,重启并刷新页面。
  2. 在侧栏打开 DSH Workspace Browser(或 README 中的侧栏入口),在工作区网格中浏览、排序或重排工作区;点进详情查看该工作区下的会话。
  3. 用顶部工具栏搜索工作区或会话元数据,切换全部/工作区/会话范围;需要时在 disclosure 中调整归档、子代理、空白会话等筛选,以及「简化原生会话树」「增强原生工作区选择器」。
  4. 在面板中添加工作区:走原生目录选择器注册主机上已有目录;或按需使用路径回退。
  5. 选中某条会话或点击新建会话时,插件将导航交回 DSH;仅归档、重命名等状态操作时界面仍停留在浏览器视图。

适用场景与注意

适合:经常在 DSH Web UI 中切换多个工作区、需要按元数据找会话、希望可选地压缩侧栏会话树或增强空白页工作区选择器的开发者。

注意:

  • 插件在当前 DSH 进程与 Web UI 同源环境中运行,权限与宿主一致;安装前请阅读 GitHub 仓库 源码、LICENSE 与 THIRD_PARTY_NOTICES.md。
  • 仅在与 manifest 一致的 DSH 0.2.1-rc.5 上做过验证声明;其他版本行为未保证。
  • 社区目录 SkillHub 插件页 为独立生态站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态遵循「一切皆插件」,安装来源以维护者发布的 release 与 README 为准。

结尾

dsh-workspace-browser 把「先看工作区、再管会话」收进侧栏一块全宽界面,并通过可选项在不大改宿主的前提下替换或增强部分原生 UI。需要安装包与完整功能列表时,可查阅 GitHub README(含中文版 README.zh-CN.md)与 Release 资产。

  • 目录页:https://www.skillhub.cn/plugins/FFFengMJL/dsh-workspace-browser
  • GitHub:https://github.com/FFFengMJL/dsh-workspace-browser
羽毛球分组比赛记分
小程序二维码

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

小夜