前言¶
用 DeepSeek Harness(DSH)幹活時,和文件路徑打交道是高頻動作:助手在會話裏產出文件,消息正文裏出現內聯文件引用或絕對路徑。想確認結果,通常得先把路徑複製出來,切到文件管理器或編輯器,再粘貼、定位、展開目錄——鏈條不長,但每次都會打斷思路。
DSH 的理念是「一切皆插件」,這類交互缺口正適合交給插件補齊。下面介紹的 dsh-filemenu 做的就是這件事:把這些操作收斂成一次右鍵點擊。
這是什麼¶
dsh-filemenu 是由 ltsone9 維護的 DSH 插件(MIT 許可),爲 DSH Web UI 提供右鍵上下文菜單:對話產出的文件、側邊欄的工作區(項目)行與會話行,都可以右鍵打開、在資源管理器 / Finder 中顯示、用檢測到的編輯器打開,或複製路徑。支持平臺爲 Windows、macOS 與 Linux。
實現上它是一個動態 Cordis 插件:純增量,不替換既有 UI 的任何位置,插件停止時移除全部副作用;同時也提供持久 profile 包形態,兩種安裝方式見下文。
核心功能¶
文件右鍵菜單¶
可右鍵的目標有四類:
- 會話產出的文件 chip;
- 助手消息中的內聯代碼文件引用;
- 工具卡片上的文件路徑鏈接(盡力識別);
- 助手文本中的純絕對路徑。
對應的菜單項:
- Open:打開文件;
- Open containing folder:在資源管理器 / Finder 中顯示所在目錄;
- Open in editor ▸:展開編輯器子菜單;
- Open with another program…:調用 Windows 的 Open With 對話框;
- Copy path / Copy relative path:複製絕對路徑或相對路徑。
側邊欄:工作區與會話¶
右鍵側邊欄工作區(項目)行,菜單包含:
- Open containing folder
- Open(切換到該工作區的會話)
- Copy path
右鍵側邊欄會話行,菜單項更多:
- Open containing folder
- Open(切換會話)
- Rename
- Fork
- Archive
- Copy path
編輯器檢測與系統打開¶
Open in editor ▸ 是一個子菜單,列出宿主機上自動檢測到的編輯器,檢測範圍覆蓋:VS Code、Cursor、Windsurf、VSCodium、Sublime Text、Notepad++、Typora、HBuilderX、Zed、IntelliJ IDEA、WebStorm、PyCharm、Rider、CLion、Neovim、Vim、gedit。
Open with another program… 則直接調起 Windows 的 Open With 對話框,把選擇權交還給系統。
主題與定位¶
- 主題感知:淺色模式遵循 harness 別名 token,深色模式使用近黑底色與近白文字線條。
- 菜單精確出現在光標處,單列布局,邊緣鉗制保證不超出視口;每個動作帶內聯 SVG 圖標。
安裝與啓用¶
前置條件¶
- 一個運行中的 DeepSeek Harness Web UI;
- 宿主 OS 具備原生打開能力(Windows、macOS 或桌面 Linux)。只有當 Host 報告
canOpenPath時,依賴系統的菜單項才自動啓用;無頭 Linux 宿主會隱藏這些項; - 走持久安裝時,PATH 上需有 pnpm(CLI 轉發至 pnpm);插件 package.json 的 engines 要求 Node >= 18。
方式一:動態插件,免重啓¶
dsh-filemenu 的動態形態由 Host 與 Client 兩個半邊組成,對應倉庫裏的 plugin/host.js 和 plugin/client.js 兩個文件。先從 GitHub 倉庫取出這兩個文件。
然後在 DSH Web UI 任意會話中讓 agent 安裝,可以直接把這段話發給它:
請安裝 dsh-filemenu:用 cordis_define(kind: new,idPrefix: file)創建插件,
code.host 填入 plugin/host.js 的完整內容,code.client 填入 plugin/client.js
的完整內容,然後 cordis_run(mode: run)激活。
首次激活需要人工批准:Client 半邊會在 Run 卡片中請求授權,點擊 Allow 即可(勾選 double-check 可同時信任後續版本);不批准的話,插件會停留在 awaiting-approval。完成後右鍵一個產出文件、工作區行或會話行驗證。
注意動態插件是進程本地的:Harness 重啓後需要重新定義並運行。要跨重啓保留,用下面的方式二。
方式二:持久安裝(官方 CLI 路線)¶
dsh-filemenu 也可以作爲持久 profile 插件安裝。在倉庫檢出目錄執行:
dsh plugin --profile <profile> add .
profile 按部署形態選:DSH Desktop 應用用 --profile desktop,獨立 web 服務部署用 --profile web。命令會轉發到 pnpm 完成安裝。按順序做三步:
1、執行上面的 add 命令,把包裝進 profile;
2、重啓 Harness 服務,使宿主組合重載、web shell 重建客戶端包(Desktop 應用重啓應用即可);
3、在 Web UI 裏右鍵產出文件、工作區行或會話行驗證。
經過上面的步驟,插件即持久生效。也可以不檢出倉庫,直接從 npm 安裝,README 提到已發佈 dsh-filemenu@1.1.6 到 npm:
dsh plugin --profile desktop add dsh-filemenu
後續管理用同一組命令,任意 pnpm 參數會原樣轉發:
dsh plugin --profile desktop remove dsh-filemenu
dsh plugin --profile desktop update dsh-filemenu
dsh plugin --profile desktop why dsh-filemenu
如果是從源碼運行 Harness,還可以走補丁覆蓋:
pnpm dsh web --patch ./cordis.patch.yml
適用場景與注意事項¶
適合的人羣很明確:在 Windows、macOS 或桌面 Linux 上跑 DSH Web UI、經常需要在對話和本地文件之間來回切換的開發者。無頭 Linux 宿主上,系統相關菜單項會自動隱藏,這類環境收益有限。
幾點注意:
- 插件以當前 dsh 進程的權限運行,具備調起宿主 OS 原生打開能力(打開文件、調起編輯器等)。安裝前建議先檢查插件源碼與許可證(本項目爲 MIT),確認符合自己的安全邊界再啓用。
- 動態安裝是進程本地的,Harness 重啓後需重新定義並運行;持久安裝跨重啓保留,但依賴 PATH 上的 pnpm,且每次安裝、更新後都要重啓 Harness 服務才能生效。
小結¶
dsh-filemenu 解決的問題很具體:把「複製路徑 → 切窗口 → 粘貼打開」壓縮成一次右鍵,同時不佔用 DSH 既有 UI 的位置,停用時副作用全部移除。源碼與更多信息:
- GitHub 倉庫:https://github.com/ltsone9/dsh-filemenu
- 社區目錄頁:https://www.skillhub.cn/plugins/ltsone9/dsh-filemenu (社區維護的獨立站點,非官方應用商店)