tttnny/my-dsh--plugins-dsh-workspace-tree ↗★ 4
@lynn123411/dsh-workspace-tree
DSH 工作区树:文件系统双模式工作区浏览器——文件夹任意嵌套、会话归入工作区;安全归档区(进区必可删、删除零守卫 fail-loud),附带新建/重命名/IDE 打开等管理。
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:tttnny/my-dsh#46eb212fa958c3fccd76ab644ed83d68bda6fd60&path:plugins/dsh-workspace-tree说明文档
阅读完整 README ↗@lynn123411/dsh-workspace-tree
DSH 工作区树:把左侧栏工作区从「工作区→会话」单层结构升级为基于真实文件系统推导的智能多级树形浏览器——会话环境严格隔离(会话 cwd = 所在目录),支持文件夹与工作区双模式、会话全局重命名、安全归档区(进了归档区就一定删得掉)、全自动级联物理删除,以及「全量展示 + 自动收编 + 隐藏式工作区管理」的一致视图模型。v1.9.0 起归档/删除链路大幅简化:零守卫、fail-loud,移除全部历史补丁机制;v1.9.2 起删除墓碑以 Host 物理存在性校验权威自愈,误写墓碑不再可能永久隐藏存活会话。
特性
- 会话清晰展示:官方列表返回的有效会话一律可见,工作区模式显示活跃会话、归档区显示已归档会话;新建但未发送消息的空白草稿仅在当前处于打开状态时可见,切换到其他会话即隐藏(跟随官方语义——官方从不物理删除会话文件,本插件也不自动回收)。
- 自动收编、无「未分组」:会话一旦失去工作区归属(如 DSH 升级重置注册表、或经官方入口在任意目录新建),插件在后台自动将其 cwd 注册为工作区(幂等)并挂载会话,「未分组」区块不再存在;收编前先按物理存在性过滤一遍(Host 权威判据
/archive/tombstoneCheck)——官方会话列表仍会返回、磁盘目录却已消失的已删会话(幽灵)写入删除墓碑并跳过,既不会复活成活会话,也不会把刚被「彻底移除」的空工作区按 cwd 原地建回来;探测不可用(旧版宿主半边/网络故障)时 fail-open,维持原收编行为。 - 隐藏式工作区管理:移除工作区 = 仅移除显示(本地记忆)——隐藏该工作区节点,注册、目录文件、会话日志与会话归属均不受影响;被隐藏工作区的归档会话仍在归档区可见可恢复;重新添加同一目录后,工作区连同其会话一起恢复显示;空工作区自动真注销——名下已无任何可见会话与归档会话的工作区,移除时直接经官方 workspace/delete RPC 注销注册表记录(同样不删磁盘目录与会话文件,注销失败自动降级为仅隐藏)。
- 文件夹模式:按真实文件系统浏览目录,支持一键在任意目录新建会话(自动注册工作区,cwd 绑定)或新建子文件夹。
- 添加工作区(单一入口):侧栏只有一个「添加工作区」按钮,它的行为按宿主能力分两种——本机 macOS 单击直达 Finder:宿主侧
osascript … choose folder弹出 macOS 原生「选择文件夹」窗口(与 DSH 自带 native 前端同一条命令、同样的取消判定),窗口开在本机屏幕上,远端设备(手机/别的电脑)看不到,那类环境宿主报不支持、同一按钮改走下面的内置浏览;按钮 tooltip 写明本次会开哪一种,取消(osascript exit 1 /User canceled)不产生任何工作区、也不弹错误。 - 内置目录浏览(官方目录流优先 + 自持兜底):宿主不能弹 Finder 时(非 macOS、旧版宿主半边、探测失败),按钮先递交官方目录流——官方目录选择分两种交互:回环绑定主机弹 native 系统选择器,局域网/远端绑定主机弹官方 browse 浏览对话框。两者都由
sidebar.workspaces.directoryFlow子槽的占位者提供;该子槽的声明被本插件顶掉的内核 entry 占着(槽位账本一个子键只允许一个声明者),插件因此走「借道渲染」:只在自身那一次注册期间放行重复声明、并压制该次合成声明通知,账本仍记在内核 entry 名下,从而把官方占位者直接渲染进自己的侧栏(native/ browse 两种形态都交给官方决定);借道探测失败或槽位无占位者时,回退到插件自持的等价对话框(面包屑 + 当前层目录列表 + 绝对路径直输 + 新建文件夹并进入),两种能力都不可用时如实报出原因。 - 工作区模式与智能图标状态:按目录嵌套关系清晰组织所有工作区与会话列表,支持工作区折叠记忆与状态点聚合透传;工作区与目录展开图标按子树会话状态三级区分——子树内有会话运行中时呈现蓝色开口文件夹,子树内有会话时呈现灰色开口文件夹,子树内无会话时呈现白色线框开口文件夹,运行状态与内容状态一目了然。
- 安全归档区(进区必可删):会话必须先移入归档才能执行永久删除,彻底防止日常误删;归档沿用官方
workspace/archiveSessionRPC,运行中/等待回复审批的会话不允许归档——门槛三层:行按钮置灰(提示)、动作侧读 store 活快照 + 官方 pending 座位复查(运行中 / 等待审批·计划复核·提问 一律拒绝)、以及 Host 权威复查/archive/guardCheck(官方 RPC 在 Host 侧没有运行态守卫,客户端 running 位又是转发事实、存在窗口期,故归档前问一次agents.get(sessionId).status;不可达时 fail-open 放行),进入归档区的会话必然空闲且只读(输入栏替换为只读条),因此删除零守卫、无条件执行——不再有「运行中 / 被标签页打开 / env 兜底」等任何拦截、跳过或回写逻辑;删除为 fail-loud:物理删除必须全部成功才从注册表/归档剔除,真实失败(文件被锁、权限不足等)会如实报错并把会话留在归档区,可幂等重试。 - 级联物理删除与持久化墓碑(物理自愈):永久删除时自动递归级联清理其派生的全部 Subagent 子代理物理文件、注册关系及
session_projcache投影元数据缓存,杜绝磁盘与元数据孤儿残留;级联范围只认真正的 Subagent(origin === "subagent"/delegationDepth > 0),从某条会话 fork 出来的独立会话绝不会被连带删除;删除成功后会话经本地持久化墓碑在任何标签页/刷新后都不可见。墓碑自愈以物理存在性为权威判据:官方列表仍返回的墓碑会向 Host 查询会话目录是否仍在——删除成功必然使目录消失,因此「目录仍在」即会话存活、墓碑系误写(如历史版本残留),自动作废恢复显示;「目录已没了」才是收敛竞态,继续隐藏直至列表收敛。设置页另提供「清空墓碑」一键兜底。 - 在 IDE 中打开工作区:在每个工作区/目录的按钮栏提供一键在外部 IDE(VS Code、CodeBuddy CN、Cursor、Windsurf、Trae、WebStorm、IDEA、PyCharm、Zed、Sublime 或自定义命令)中打开对应工作区的功能;IDE 类型限白名单(未知类型拒绝,绝对路径且存在时放行),自定义命令只读服务端设置,Windows 下含 shell 元字符的路径拒绝执行。
- 配置自由:在「设置 - 插件 - 工作区树」中自由配置默认打开的 IDE 或自定义启动命令、层级缩进、默认模式等;配置经 DSH 设置服务持久化到
~/.dsh/settings.yaml,重启/换端口不丢失。 - 全局会话重命名:无论会话当前是否处于打开状态,均可通过 Host RPC 实时重命名。
- 简洁归档管理:归档区按工作区分组展示,支持单条恢复/永久删除、组级恢复全部/删除全部、一键恢复所有/一键删除所有;批量删除逐条执行——能删的删掉,删不掉的留在归档区并逐条列出原因;失效归档(官方列表已不再返回的 ID)在进入归档区时自动静默清理,无提示行/按钮。
- 归档只读阅览与就地恢复:归档区支持点击直接在主视口阅览已归档会话的历史记录,严格执行只读白名单(保留文本浏览与消息/代码复制,自动隐藏分支/重试/反馈/审批按钮并替换输入栏为只读状态条),支持就地一键恢复会话;阅览中的归档会话仍可随时删除。
- 主题完美适配:全面接入 DSH 设计系统,完美自适应浅色与深色主题。
- 一键诊断:设置页(设置 › 插件 › 工作区树)底部可一键复制本机工作区/会话状态(仅元数据,无消息正文,含删除墓碑清单),排查侧栏显示问题时粘贴发给开发者;同处提供「清空墓碑」按钮作为误隐藏兜底。
安装
dsh plugin --profile web add @lynn123411/dsh-workspace-tree