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

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

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

小夜