dsh-files-menu:爲 DSH 工作區文件樹補上右鍵菜單

前言

在 DeepSeek Harness(DSH)裏寫智能體、改工作區文件時,右側欄「工作區文件」樹是常用入口。DSH 自帶的文件樹能列目錄,但沒有逐行的右鍵菜單;複製絕對路徑、相對路徑或文件名,往往要手選路徑或藉助別的工具。社區插件 dsh-files-menu(維護者 smellingtiger,GitHub smellingtiger/dsh-files-menu)只作用於 Web 客戶端,通過事件委託在每一行上補菜單,把「複製文件地址」等操作收成兩次點擊,且不修改 app.asar,DSH 升級後仍可用。

這是什麼

dsh-files-menu 是 DSH 的客戶端插件(dsh.client.platform: web),在 @deepseek-ai/dsh-client-ui-sidebar-files 渲染的文件樹上增加上下文菜單。npm 包名 dsh-files-menu,當前版本 1.0.0,許可證 MIT。在 SkillHub 目錄中歸類爲「客戶端」;倉庫在 GitHub 上目前有 1 個 star。目錄頁:https://www.skillhub.cn/plugins/smellingtiger/dsh-files-menu。

核心功能

菜單按「文件行」與「文件夾行」略有不同,能力如下(與 README 菜單表一致)。

文件行 文件夾行
打開 展開文件夾 / 摺疊文件夾
複製文件地址 複製文件夾地址
複製相對路徑 複製相對路徑
複製文件名 複製文件夾名
在資源管理器中顯示(僅桌面版可用時) 在資源管理器中打開(僅桌面版可用時)

說明要點:

  • 複製文件地址 / 複製文件夾地址:使用行上的 data-files-path,即絕對路徑,原樣寫入剪貼板。
  • 複製相對路徑:相對工作區根目錄,分隔符統一爲 /(例如 refs/README.md)。
  • 在資源管理器中顯示 / 打開:文件在系統資源管理器中選中;文件夾則直接打開(openWorkspacePath)。僅當宿主報告支持(remote.session.canOpenWorkspacePath())時顯示這兩項;不支持時靜默隱藏,其餘菜單照常。
  • 複製成功後,界面底部彈出「已複製」提示,約 1.4 秒後消失。

交互細節:右鍵任意文件樹行打開菜單;ESC、點空白、滾動、窗口失焦會關閉。Shift+F10 或菜單鍵也可打開,打開後可用 ↑ / ↓ / Home / End 在項間移動。菜單靠近窗口右下角時會內收,避免超出視口。other 類型行(如掛載點)及文件樹以外區域仍使用瀏覽器原生右鍵菜單。

安裝與啓用

插件以當前 DSH 進程權限運行;安裝前建議自行查看倉庫源碼與 MIT 許可證。收錄到插件市場後,可在 DSH 插件 → 發現 中搜索 dsh-files-menu 安裝。

已發佈到 npm(dsh-files-menu@1.0.0),可按包名安裝:

dsh plugin --profile desktop add dsh-files-menu

也可從 GitHub 安裝(無需先克隆倉庫):

dsh plugin --profile desktop add github:smellingtiger/dsh-files-menu

本地開發時,可在 profile 目錄建立聯結並在 package.json 中登記 bundle;倉庫提供 install.ps1 / uninstall.ps1 一鍵腳本(桌面 profile 示例路徑爲 %USERPROFILE%\.dsh\profiles\desktop),詳見 README。

安裝或改動配置後,必須完全退出 DSH 再啓動(托盤退出,而非只關窗口)。bundle 列表在啓動時讀取,運行期間新增的 bundle 不會被當前進程加載。

典型用法

經過上面的安裝並重啓 DSH 後,可按 README 自檢:

  1. 在右側欄「工作區文件」中右鍵任意文件,應出現五項菜單(桌面版在支持時含「在資源管理器中顯示」)。
  2. 選擇「複製文件地址」,在任意輸入框粘貼,應爲完整絕對路徑。
  3. 桌面版在宿主支持時,「在資源管理器中顯示」應能正常打開資源管理器並定位文件。

若菜單未出現,先確認已完全重啓 DSH,並檢查 %USERPROFILE%\.dsh\profiles\desktop\package.json 中是否同時存在依賴與 dsh.profile.bundles 裏的 dsh-files-menu 條目。

適用場景與注意

適合經常在 DSH 裏引用工作區路徑、寫文檔或配置、需要在系統文件管理器中定位文件的開發者。插件僅 patch Web 客戶端 UI,不改動桌面殼的 app.asar。

實現上在 apply 裏對 contextmenu 做事件委託,命中 li[data-files-entry][data-files-path] 後自繪菜單;樣式使用 --dsw-* 設計令牌以跟隨明暗主題。依賴 locale、remote、remote.session 等服務。卸載插件時由 ctx.effect 清理 DOM 與監聽器。

DSH 生態強調「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係,本文僅介紹社區維護的插件行爲,以倉庫 README 與 package.json 爲準。

結尾

dsh-files-menu 補上了 DSH 工作區文件樹缺失的右鍵能力:複製路徑與名稱、打開或展開節點,並在桌面環境下可選「在資源管理器中顯示」。需要安裝命令與菜單細節時,以 GitHub README 爲準。

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

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

小夜