dsh-files-plus:爲 DSH 工作區文件樹補齊複製、剪切與右鍵操作

前言

在 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(推薦)

  1. 保持倉庫目錄在磁盤上(無需構建)。
  2. 打開 Harness「插件管理」→「安裝 Bundle」,選擇倉庫目錄的絕對路徑,例如:
C:\Users\血魂\Documents\deepseek-harness\default-workspace\dsh-files-plus

(Linux/macOS 上請改爲你本機克隆或解壓後的實際絕對路徑。)

  1. 安裝後確認 bundle 行 workspace-files-plus 爲啓用狀態。
  2. 若 Host 半區未熱更新,重啓 DSH 宿主進程,再在瀏覽器硬刷新(Ctrl+Shift+R)。

方式 B:本地包鏈接

若已配置 pnpm 與 profile,可由插件管理器完成安裝;不要手工改 profile 的 package.json / cordis.patch.yml。

典型用法

下面步驟均可在 Web 客戶端內復現,對應 README 中的交互說明。

在同一工作區內整理文件

  1. 在右側工作區文件樹中單擊選中文件或文件夾。
  2. 按 Ctrl+C 複製或 Ctrl+X 剪切(macOS 爲 ⌘C / ⌘X)。
  3. 選中目標文件夾(或選中某文件以向其父目錄粘貼),按 Ctrl+V / ⌘V,或右鍵選「粘貼到文件夾 / 所在文件夾」。
  4. 底部 toast 會提示結果;粘貼過程中顯示「正在粘貼…」。

跨會話搬運

  1. 在會話 A 的工作區樹中複製或剪切目標項。
  2. 切換到會話 B,選中目標目錄後粘貼。Host 的 transfer 接口會校驗 sourceSessionId 與 targetSessionId 下的路徑。

空白處建目錄或開終端(Windows)

  1. 在已展開目錄的子項下方空白處右鍵,得到「當前文件夾」菜單。
  2. 選「新建文件夾」或「在此處打開 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
羽毛球分组比赛记分
小程序二维码

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

小夜