前言¶
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