Better Workspace File Manager:给 DSH Files 标签补上日常文件操作

前言

DSH 的 Web 端 Files 标签能浏览会话工作区里的文件,但日常操作缺得不少:想上传一个文件、想新建目录、想把几个文件打包下载、想拖动整理,都得绕到宿主机或改配置。Better Workspace File Manager 就是来填这些空的,它给 Files 标签和文件预览面板补齐上传、多选、ZIP 下载、新建目录、删除等操作,并额外提供拖动移动和拖入对话。

DSH 的理念是「一切皆插件」。这个插件是社区作者 Arrosam 维护的客户端插件,发布在社区插件目录 SkillHub 上,属于分类「客户端」,当前 GitHub 星标 3 颗。下面是它的定位、功能、安装方式和使用注意。

这是什么

一句话定位:Better Workspace File Manager 是 DSH Web 端 Files 标签与文件预览面板的增强文件管理器,作者 Arrosam,MIT 许可证,当前版本 1.3.0,包名 dsh-better-workspace-file-manager。

它解决的是装机默认 Files 标签没有的日常操作。插件不修改已有 Files 标签的 DOM,而是读取它的稳定 data-files-* 属性,把自己的界面渲染在独立 slot 里,因此升级客户端后不容易被覆盖。

核心功能

Files 标签新增的能力:

  • 上传:通过按钮、从电脑拖拽,以及直接拖入文件夹(按目录结构递归重建,同名时两份都保留)。
  • 多选:单击、⌘/Ctrl-单击、Shift-单击,或在空白树区域框选。
  • 下载:单个文件、多选项、或整个目录打包为 ZIP。ZIP 走流式生成,大目录不会整体驻留内存。
  • 新建目录:右键菜单创建;插件代为创建时若同名,保留两份。
  • 删除:确认弹窗后删除文件或目录,目录连同内容一起移除。
  • 拖动移动:把行拖到目标目录上移动;目标已有同名项时另存为 name (1).ext,不覆盖。
  • 拖入对话:把工作区行拖到输入框,生成 @path 引用;PNG/JPEG/WebP/GIF 图片则作为附件。

文件预览面板:

  • 在预览的打开菜单里增加 Download,与自带的 Open / Show location 并列。
  • 文本、代码、Markdown 预览支持就地编辑。编辑器保留文件的换行符(LF/CRLF)与 BOM;保存时带版本校验,若期间被 agent 或其他编辑器改动过,会报冲突而不是覆盖。
  • 手动点 Save(或 ⌘/Ctrl-S),或在设置里开启每 5 秒自动保存。

设置项:

  • 插件在 Plugins 设置页增加一行 Text editing → Auto-save,选择由 DSH Settings 服务保存,不写浏览器存储。

安装与启用

方式一,从 DSH 的 Plugins 页面安装:

在侧栏打开 Plugins,找到 Better Workspace File Manager,安装或启用即可。页面会把包加入当前 profile 并启用其 bundle。

方式二,从 profile manifest 安装:

cd ~/.dsh/profiles/web
pnpm add dsh-better-workspace-file-manager

然后在 profile 里把它加进有序 bundle 列表:

{
  "dependencies": {
    "dsh-better-workspace-file-manager": "^1.3.0"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app",
        "dsh-better-workspace-file-manager"
      ]
    }
  }
}

改完 profile 后重启 DSH(或让 live profile 重新组合)。

典型用法

选择和操作行的操作表:

手势 结果
单击行 选中该行,随后照常打开或展开
⌘/Ctrl-单击 在选区中加入或移除该行
Shift-单击 从上次锚点选中到当前行的范围
从空白树区拖动,或 Alt-拖动任意位置 画选框
右键行或空白树区 打开文件菜单
把行拖到目录上 移动到该目录
把行拖到输入框 加入文件/目录引用或图片附件
Escape 清除选区,或取消当前框选/拖动

右键菜单按点击目标变化:文件给 Download、Delete;目录给 Download as ZIP、New folder、Delete;多选项给 Download N items as ZIP、Delete N items;空白树区给「在指针所在目录下新建目录」。

编辑文本文件:

1、在预览面板打开一个文本、代码或 Markdown 文件。
2、点预览头部的 Edit 进入编辑。
3、改动后,手动模式按 Save,自动保存模式等 5 秒。
4、按 Done 退出编辑器;有未保存的手动改动时会先询问。

编辑仅限 Session 工作区;工作区之外的预览保持只读。

适用场景与注意

适合需要频繁在 DSH Web 端整理会话工作区文件的开发者:上传产物、打包下载、就地改文本或 Markdown、把图片拖进对话。

运行前提:

  • DSH Web profile,版本 0.2.1-rc.3 或更新(已在 0.2.1-rc.3、0.2.1-rc.5、0.2.2-rc.1 上验证)。
  • Host 本地文件系统后端(fs-local / fs-sandbox),Web profile 挂载的就是这类。
  • Host 上 Node.js 20.15+(插件使用内置 Web Streams bridge;DSH 本身可能要求更新的 Node)。

兼容性上,DSH 0.2.2 引入了共享右键菜单 @deepseek-ai/dsh-client-ui-context-menu。插件在运行时探测该服务:0.2.2 及以上使用共享菜单,插件在其中贡献 Download as ZIP / Download N items、New folder、Delete;单个文件的 Download 仍由官方文件动作插件提供,避免重复入口。0.2.1 没有共享菜单,插件保留自己的完整右键菜单。集成通过 contextMenus 服务发现,插件未声明对 0.2.2-only 客户端包的硬依赖,同一份构建在 0.2.1 和 0.2.2 上都能加载。

实现上,宿主端 index.js 在 /api/better-workspace-files 下注册带鉴权的 Connection Fetch 路由,所有路径经 ctx.fs.resolve + ctx.fs.contains 解析,因此超出工作区的符号链接会被拒绝;移动和删除作用于条目本身,而不是链接指向的目标。文本保存走 ctx.fs.writeText 的 replaceIfVersion 模式,保持原子性,失败时返回 stale 而不是覆盖并发改动。

安全方面要注意:插件以当前 DSH 进程的权限运行,删除和移动都作用于工作区条目。安装前应当查看源码与许可证(MIT),并确认只暴露给可信的工作区。

结尾

Better Workspace File Manager 的价值在于把 Files 标签缺少的日常操作补齐,同时不改原生 DOM、不引入构建步骤、跨 0.2.1 / 0.2.2 兼容。如果你在 DSH Web 端管理会话工作区,值得先装上试一下。

目录页:https://www.skillhub.cn/plugins/Arrosam/dsh-better-workspace-file-manager

GitHub:https://github.com/Arrosam/dsh-better-workspace-file-manager

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

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

小夜