前言¶
在 DeepSeek Harness(DSH)裏,右側「工作區文件」樹負責瀏覽當前會話的文件結構。日常開發中常要在樹裏重命名、新建目錄、在資源管理器或 VS Code 中打開路徑,有時還要在同一工作區甚至不同會話之間移動文件夾。若宿主自帶的交互偏只讀或菜單項不全,就只能回到系統文件管理器操作,打斷在 Web 客戶端裏的節奏。
社區插件 dsh-files-plus(維護者 xuehun2,分類爲客戶端)針對上述場景:在不改 dsh-menu 的前提下,爲工作區文件樹提供完整右鍵菜單,並增加插件內剪貼板的複製、剪切、粘貼與 Ctrl+C / Ctrl+X / Ctrl+V(macOS 爲 ⌘)快捷鍵。實現上是純 Host 路由加純前端 React,無第三方依賴、無構建步驟,當前版本爲 0.1.2,許可證 MIT。
這是什麼¶
一句話定位:Workspace files context menu for DeepSeek Harness with copy, cut, paste and keyboard shortcuts.
插件分 Host(index.js)與 Client(client.js)兩半:Client 負責選中態、右鍵浮層、快捷鍵與插件剪貼板;Host 註冊 /api/workspace-files-plus/*,在工作區邊界內執行復制、移動、重命名、刪除、下載等文件操作。打開 VS Code、系統瀏覽器等能力走宿主官方接口,不依賴本進程 PATH。
目錄與介紹頁:SkillHub 插件頁 · GitHub 倉庫
核心功能¶
右鍵菜單(文件、文件夾與空白區域)¶
在 [data-files-entry] 行上右鍵,或在文件樹空白區域右鍵(0.1.2 起空白處不再彈出瀏覽器原生菜單),可使用下表能力(空白區域菜單會按當前位置推斷「當前文件夾」):
| 菜單項 | 快捷鍵 | 說明 |
|---|---|---|
| 粘貼到文件夾 / 所在文件夾 / 粘貼到此處 | Ctrl+V / ⌘V |
目錄行粘貼到該目錄;文件行粘貼到父目錄;無選中時粘貼到樹根 |
| 複製 | Ctrl+C / ⌘C |
寫入插件剪貼板,不寫系統剪貼板 |
| 剪切 | Ctrl+X / ⌘X |
標記爲移動,粘貼成功後再刪源項 |
| 複製文件路徑 / 複製當前文件夾路徑 | — | 絕對路徑寫入系統剪貼板 |
| 新建文件夾 | — | 內聯輸入;目錄行在其內創建,文件行在父目錄創建 |
| 重命名 | — | 內聯輸入,支持中文 IME,Enter 提交,Esc 取消 |
| 在文件管理器中顯示 | — | remote.session.openWorkspacePath({ action: "reveal" }) |
| 在瀏覽器中打開 | — | HTML/SVG/XML 等按系統關聯;目錄可列 HTML 列表 |
| 在 VS Code 中打開 | — | 宿主 open-in-app;文件無關聯時打開所在文件夾 |
| 在此處打開 PowerShell / cmd | — | 僅 Windows;獨立控制台窗口,cwd 爲目標目錄 |
| 下載文件夾 / 文件 | — | 目錄流式 ZIP;文件直接下載 |
| 刪除 | — | 錯誤色、二次確認後遞歸刪除 |
單擊任意行即選中(左側品牌色高亮條);右鍵會先選中該行。剪切僅在粘貼成功後刪除源文件;同名衝突默認自動重命名爲 名稱 - 副本、名稱 - 副本 2 等,不覆蓋。剪貼板帶源 sessionId,支持跨會話粘貼,Host 分別校驗兩端路徑。
快捷鍵與避讓¶
全局在 window 捕獲階段監聽,以下情況不劫持,避免影響編輯區與終端:
- 焦點在輸入框、
contenteditable、終端(.xterm)等; - 文件樹內已有文本選區;
- 菜單已打開(菜單內輸入框可正常粘貼);
- 最後一次鼠標交互與焦點均不在文件樹內。
若預覽已搶焦點,可先點回文件樹行,或只用右鍵菜單完成複製/粘貼。
Host 與安全要點¶
所有路徑相對會話工作區根做嚴格前綴與往返校驗;禁止粘貼到自身或子目錄;符號鏈接複製時不解引用;目錄 HTML 列表帶 Content-Security-Policy: sandbox。複製/移動用 node:fs/promises,不把大文件讀入 JS 堆;目錄下載爲流式 ZIP。
與 dsh-menu 同時啓用時,本插件在捕獲階段阻止傳播,只顯示本插件菜單;確認穩定後建議停用 dsh-menu,減少閒置路由與組件。
安裝與啓用¶
資料中的推薦方式爲從本地目錄安裝 Bundle,未提供 dsh plugin add github:… 一類命令;請勿憑插件名拼接安裝命令。
方式 A:安裝 Bundle(推薦)¶
- 保持倉庫目錄在磁盤上(無需構建)。
- 打開 Harness「插件管理」→「安裝 Bundle」,選擇倉庫目錄的絕對路徑,例如:
C:\Users\血魂\Documents\deepseek-harness\default-workspace\dsh-files-plus
(Linux/macOS 上請改爲你本機克隆或解壓後的實際絕對路徑。)
- 安裝後確認 bundle 行
workspace-files-plus爲啓用狀態。 - 若 Host 半區未熱更新,重啓 DSH 宿主進程,再在瀏覽器硬刷新(
Ctrl+Shift+R)。
方式 B:本地包鏈接¶
若已配置 pnpm 與 profile,可由插件管理器完成安裝;不要手工改 profile 的 package.json / cordis.patch.yml。
典型用法¶
下面步驟均可在 Web 客戶端內復現,對應 README 中的交互說明。
在同一工作區內整理文件
- 在右側工作區文件樹中單擊選中文件或文件夾。
- 按
Ctrl+C複製或Ctrl+X剪切(macOS 爲⌘C/⌘X)。 - 選中目標文件夾(或選中某文件以向其父目錄粘貼),按
Ctrl+V/⌘V,或右鍵選「粘貼到文件夾 / 所在文件夾」。 - 底部 toast 會提示結果;粘貼過程中顯示「正在粘貼…」。
跨會話搬運
- 在會話 A 的工作區樹中複製或剪切目標項。
- 切換到會話 B,選中目標目錄後粘貼。Host 的
transfer接口會校驗sourceSessionId與targetSessionId下的路徑。
空白處建目錄或開終端(Windows)
- 在已展開目錄的子項下方空白處右鍵,得到「當前文件夾」菜單。
- 選「新建文件夾」或「在此處打開 PowerShell / cmd」(非 Windows 不顯示終端項)。
下載整個目錄
右鍵目錄 →「下載文件夾」,Host 以流式 ZIP 響應,無需在服務器落臨時打包文件。
本地冒煙可在倉庫根目錄執行(需已拉取源碼):
pnpm test
# 或:node scripts/smoke-host.mjs
適用場景與注意¶
適合誰: 主要在 DSH Web 右側文件樹裏完成複製、剪切、重命名、打包下載、用 VS Code 或資源管理器打開路徑的開發者;Windows 上需要在目標目錄開獨立 PowerShell/cmd 窗口時也可用菜單項。
權限與信任: 插件以當前 DSH 宿主進程權限讀寫工作區文件。安裝前應閱讀 index.js、client.js 與 MIT 許可證,確認路由與路徑校驗符合你的環境策略。社區目錄 SkillHub 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係,並非官方應用商店。
其他: 星標數隨 GitHub 變動,撰寫時倉庫爲 0 star。單擊文件仍會打開預覽,與快捷鍵焦點有關,見上文避讓說明。README 中「粘貼衝突策略」等配置在截斷段落之後,正文未列出的配置項請勿自行臆測,以倉庫最新 README 爲準。
結尾¶
dsh-files-plus 把「工作區文件樹」補成可複製的輕量文件管理前端:獨立於 dsh-menu,用 Host API 管住邊界,用 Client 菜單和快捷鍵減少跳出 DSH 的次數。需要進一步瞭解功能與安全設計,請查閱倉庫 README 與 CHANGELOG。
- 插件目錄頁:https://www.skillhub.cn/plugins/xuehun2/dsh-files-plus
- GitHub:https://github.com/xuehun2/dsh-files-plus