dsh-file-download:DSH Web 界面的文件浏览器与可控上传插件

前言

DeepSeek Harness (DSH) 的 Web GUI 提供了会话管理和文件交付界面,但在文件访问方面存在局限。原生文件操作依赖桌面环境,且侧边栏文件树仅限于会话工作区,无法浏览宿主机器的完整文件系统,也无法方便地下载文件或打包归档。dsh-file-download 插件通过扩展官方侧边栏和注入下载入口,填补了这一空白。

安装与启用

此插件依赖 DSH 0.1.5-rc.1 或更新版本,需要 Node 20+ 环境以及 Web 配置文件。

在终端中执行以下命令将插件链接到 Web 配置文件:

dsh plugin --profile web add /path/to/dsh-file-download

安装命令会将插件链接到配置并追加到 dsh.profile.bundles。执行安装后,需要重启 dsh web 进程,以便在启动时扫描客户端列表。

如需卸载,请执行:

dsh plugin --profile web remove dsh-file-download

核心功能

该插件提供了一套完整的文件管理界面,主要功能包括:

  • 全系统浏览:浏览整个文件系统,而不仅仅是会话工作区。支持面包屑导航(Project 跳转到会话工作区根目录,Root 跳转到根目录 /)和路径输入框导航(支持 Tab/箭头完成,Enter 确认)。
  • 下载与归档:支持下载单个文件、文件夹(生成 ZIP)以及多选文件的批量归档。
  • 界面扩展:通过官方侧边栏注册(Files 选项卡)、轮次/交付文件卡片下载按钮以及侧边栏文件树悬停下载按钮,提供多处入口。
  • 可控上传:提供带覆盖提示的文件上传功能,并支持三种权限模式限制上传范围。
  • 服务端渲染:浏览页面采用服务端渲染,无客户端 JavaScript,支持 Range/If-Range/ETag 断点续传,上传限制为 64 MiB。

使用方式

安装并重启服务后,打开 DSH Web GUI 右侧侧边栏并选择 Files 选项卡即可开始使用。

  1. 导航文件系统

    • 使用顶部的面包屑导航。点击 Project 可跳转到会话工作区根目录,点击 Root 跳转到根目录 /。
    • 面包屑行末尾的铅笔图标可打开输入框,输入路径进行导航。输入的路径相对于当前目录,除非以 / 开头(绝对路径)或 ~ 开头(宿主用户主目录)。输入时支持名称补全(Tab/箭头键)。
  2. 查看与筛选

    • 默认隐藏以 . 开头的文件。勾选「Show hidden」可显示所有文件。
    • 使用顶部的过滤框可筛选当前目录下的条目。
  3. 文件操作

    • 点击文件夹可进入,点击文件可使用官方预览打开。
    • 在文件树行上悬停,或使用文件卡片上的下载按钮,可直接下载文件或目录(流式 ZIP)。
    • 勾选文件行,底部会出现「Download selected (ZIP)」按钮,可将选中的文件和文件夹打包为一个 ZIP 下载。
  4. 上传文件

    • 在侧边栏文件树中,通常支持上传操作。
    • 上传时,如果目标文件已存在,浏览器会提示覆盖。

权限与限制

上传功能受到权限模式和文件大小的严格限制。

  • 权限模式:插件默认使用会话的沙盒策略,但允许在浏览器中手动切换模式。
    • read-only:拒绝所有上传。
    • workspace-write:仅允许上传到会话工作区。
    • danger-full-access:允许上传到账号有写权限的任何位置。
  • 文件大小限制:上传体积极限为 64 MiB。
  • 写入安全:文本内容使用原子写入,二进制内容通过临时文件重命名实现写入,确保后端能正确应用沙盒策略。

结语

dsh-file-download 通过官方扩展点将文件浏览器能力集成到 DSH Web GUI 中,解决了远程访问时无法保存文件和浏览宿主文件系统的问题。开发者可以通过侧边栏、轮次卡片等多处入口高效地管理文件。

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

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

小夜