liceses/dsh-workspace-tree 预览 preview

liceses/dsh-workspace-tree

把 DSH Web 左侧栏的「工作区」重做为文件系统树双模式。核心原则: 工作区 = 目录强绑定——会话的 cwd 就是它所在的目录,环境真正隔离。

Project Overview项目介绍

DSH Workspace Tree replaces the sidebar workspace panel with a dual-mode file system browser that derives hierarchy from workspaces[].path and isolates sessions by cwd. Use it to bind workspaces strictly to disk directories and avoid environment bleed from logical folder grouping. Folder mode exposes the full tree with inline session creation; workspace mode focuses on session and workspace management. Caveat: the plugin shadows the official browser at priority: -1 and intentionally omits the children slot to prevent conflict with sidebar.workspaces.directoryFlow.

DSH 工作区树插件将侧边栏「工作区」替换为文件系统树双模式浏览器,核心能力是基于 workspaces[].path 推导目录层级并按 cwd 隔离会话。适用于希望工作区严格绑定磁盘目录、避免逻辑文件夹导致环境串扰的用户;文件夹模式可浏览整棵目录树并就地创建会话,工作区模式集中管理会话与重命名。需注意该插件以 priority: -1 影子替换官方浏览器,未声明 children slot 以规避与 sidebar.workspaces.directoryFlow 的 slot 冲突。

Or use CLI install (for developers)或使用命令行安装(适合开发者)

CLI Install命令行安装

dsh plugin --profile web add github:liceses/dsh-workspace-tree

liceses/dsh-workspace-tree 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-workspace-tree · 工作区树(v4)

把 DSH Web 左侧栏的「工作区」重做为文件系统树双模式。核心原则: 工作区 = 目录强绑定——会话的 cwd 就是它所在的目录,环境真正隔离。

工作区树总览

工作区模式:工作区按目录层级嵌套(子文件夹直接显示在父工作区下), 会话挂各自工作区,行尾为最近活动时间。

双模式(标题栏切换,选择自动记忆)

模式 显示 用途
文件夹模式 完整文件系统目录树(含非工作区的中间目录),工作区节点带会话计数标记 浏览目录结构;hover 任意目录可「新建会话」(会话 cwd = 该目录,自动注册工作区)或「添加为工作区」;点击工作区节点 = 纯导航到工作区模式并定位
工作区模式 只显示工作区节点(隐藏中间目录),按目录相对层级嵌套,会话挂各自工作区下 管理会话:打开 / 重命名 / 分叉 / 归档;工作区重命名 / 删除

v4 新增:搜索过滤

模式切换按钮与「新建会话」之间新增简约搜索框(🔍 图标,输入即过滤, Esc / ✕ 清空):

  • 匹配范围:会话标题 或 文件夹/工作区名,不区分大小写子串
  • 工作区模式:隐藏不匹配的会话与整组;命中组强制展开(临时),清空后 还原手动折叠状态
  • 文件夹模式:目录按「名字或后代会话是否有匹配」剪枝并强制展开命中 分支;命中的工作区节点下内联列出要展示的会话(名字命中 → 该工作区 全部可见会话,否则仅标题命中的会话),可直接点击打开
  • 无任何命中时显示「无匹配会话」空态

为什么重写(v2 → v3)

v2 的自定义逻辑文件夹(不改变会话 cwd)造成了环境不隔离:文件夹只是 UI 归类, 会话里的文件操作仍落在工作区根目录。v3 彻底移除逻辑文件夹模型,树完全由 workspaces[].path 的文件系统层级推导,在目录下新建的会话其 cwd 就是该目录

架构

半区 文件 职责
Host lib/index.js 仅保留只读调试路由 /api/dsh-workspace-tree/debug(工作区注册表投影),零持久化
Client lib/client.js 树浏览器:双模式渲染、目录树推导(buildDirTree / buildWorkspaceForest)、导航联动、隔离会话创建(sessions.create({cwd})

数据源全部来自标准 props(useWorkspaces / useSessions),无额外状态。

交互细节

  • 文件夹模式:目录节点点击 = 展开/折叠(chevron 单独点击也可);工作区节点点击 = 切到工作区模式 + 展开该组 + 滚动定位(纯导航,不打断当前会话);hover 操作:工作区节点「+新建会话 / ✎重命名 / 🗑删除」,普通目录「+新建会话(自动注册)/ +添加为工作区」
  • 工作区模式:组头「+新建会话 / ✎重命名 / 🗑删除」;会话行保留官方「完成未读」绿色提醒点、运行矩阵动画、等待交互琥珀点
  • 展开状态、模式选择均 localStorage 记忆

安装

cd dsh-workspace-tree
dsh plugin add .          # 或按部署方式装配 bundle

或通过 dsh-super-injector 运行时注入(免重启):

dev_inject_plugin {"dir": "D:/developing/DSH-plugin/dsh-workspace-tree"}

兼容性

  • 路由前缀、patch 行 id(dsh-workspace-tree)唯一;不声明 children slot(避免与官方 sidebar.workspaces.directoryFlow 冲突)
  • priority: -1 替换官方浏览器(shadowing 升序、最低渲染)
  • 卸载插件后官方浏览器自动恢复,无残留数据(v3 零持久化)
上一个 Prev dsh-clawbot 下一个 Next dsh-hermes-memory