前言¶
在 DeepSeek Harness(DSH)桌面殼裏用 Web GUI 看 Chat、點 Markdown 鏈接、掃 @ 文件引用或右側文件樹時,很多人會下意識右鍵——期望「在資源管理器裏打開」或「用系統瀏覽器打開」。桌面殼在 Electron 主進程裏構建右鍵菜單,且只在可編輯區域或有文本選中時彈出;items 爲空則完全不顯示菜單。鏈接、文件引用、交付卡片、左側工作區項目名上的右鍵因此沒有反應。社區插件 dsh-right-click-menu(維護者 SJcun,倉庫 SJcun/dsh-right-click-menu)在頁面內接管這些右鍵,複用 DSH 已有的外鏈跳轉與 session.openWorkspacePath 能力,不另造輪子。
下面介紹插件定位、能力、安裝方式與使用時的注意點。DSH 生態強調「一切皆插件」;SkillHub 等社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。
這是什麼¶
dsh-right-click-menu 是面向 DSH Web surface 的客戶端插件(dsh.client.platform: web)。宿主半側 lib/index.js 爲空 apply,全部邏輯在瀏覽器半側 lib/client.js。它在文檔上監聽右鍵,對識別到的鏈接、文件引用、目錄彈出與界面語言一致的菜單;其餘右鍵(輸入框、選中文本等)保持原生行爲。
當前 package 版本爲 0.1.0,許可證 MIT,針對 DSH 0.2.0-rc.2(桌面運行時、Electron Web GUI)構建並驗證。
核心功能¶
插件按右鍵目標提供不同菜單項(文案隨當前 UI 語言,含簡體中文詞典):
| 右鍵對象 | 菜單項 |
|---|---|
| HTTP(S) 鏈接(Chat/助手 Markdown、行內代碼 URL) | 在外部瀏覽器中打開 · 複製鏈接地址 |
文件引用(Markdown 文件鏈接、@path 芯片、交付卡片、文件樹行、文檔路徑標籤) |
在資源管理器中打開 · 複製文件路徑 |
目錄(左側欄工作區項目、@folder/ 芯片、文件樹目錄行、文件樹標題) |
在資源管理器中打開 · 複製文件夾路徑 |
實現方式與產品自身一致:
- 在外部瀏覽器中打開:
window.open(url, "_blank", "noopener,noreferrer"),由主進程攔截並調用shell.openExternal,與左鍵點擊 Chat 鏈接同路。 - 在資源管理器中打開:Session Remote 的
session.openWorkspacePath;目錄用{ path }在管理器中打開目錄本身,文件用{ path, action: "reveal" }定位文件。Host 會先校驗路徑,插件不直接訪問文件系統。
菜單使用共享的 Menu 原語,鍵盤導航、主題等與主界面一致。在 headless 或 SDK profile 下沒有瀏覽器半側,插件不起作用而非報錯。
安裝與啓用¶
把包裝進爲該 GUI 提供服務的 profile。推薦用插件管理器,會同時添加依賴並把 bundle 寫入 profile 的 dsh.profile.bundles:
plugin_manager install_bundle target: <spec>
<spec> 可以是 registry 包名、Git 地址(例如 github:SJcun/dsh-right-click-menu)、tarball 或本地路徑。本包通過倉庫分發,而非 npm 發佈。
也可手工操作:在 profile 目錄執行 pnpm add <spec>,再把包名追加到 profile 的 package.json 的 dsh.profile.bundles。
宿主半側在下次 Host 啓動時加載(配置 HMR 開啓時可立即生效);瀏覽器半側隨下一次頁面加載生效。可用倉庫內的 npm run check:live 對照運行中 Host 的 bundle revision,默認地址爲 $DSH_WEB_URL 或 http://127.0.0.1:19387。
停用:在 profile 的 cordis.patch.yml 給 right-click-menu 條目設 disabled: true,或從 dsh.profile.bundles 移除該 bundle。
典型用法¶
安裝並刷新 Web GUI 後,無需額外配置,按 README 中的驗證步驟自測即可:
- 在 Chat 消息裏右鍵 HTTP(S) 鏈接 → 應出現「在外部瀏覽器中打開」,並在系統瀏覽器打開。
- 右鍵
@引用文件、交付卡片或右側欄文件樹行 → 應出現「在資源管理器中打開」,並在資源管理器中選中該文件。 - 右鍵左側欄工作區項目名 → 應出現「在資源管理器中打開」,並在資源管理器中打開該目錄。
- 右鍵消息輸入框或選中的文本 → 仍爲原生菜單。
開發或排查 DOM 識別問題時,可在插件源碼目錄運行 npm test(node test/detection.test.mjs),用例會覆蓋各界面 markup 的檢測邏輯。
適用場景與注意¶
適合誰:日常在 DSH Web GUI 裏通過鏈接、文件引用和工作區側欄操作本地路徑,希望右鍵與系統習慣一致的用戶。
兼容性:插件聲明 @deepseek-ai/dsh* 等 peer 依賴;DSH 在未覈驗的版本上會拒絕加載,避免菜單與 DOM 不匹配。檢測邏輯依賴 DSH 未公開爲 API 的 DOM 標記(集中在 lib/client.js 的 filePathOf),大版本升級後若菜單失效,可先跑 npm test 定位界面。
已知限制(來自上游 README):按圖片渲染且標籤不是路徑的 Markdown 文件鏈接可能無法識別;側欄「未分組」桶 id 爲空時不提供菜單;應用內瀏覽器標籤頁保留原生右鍵;工作區相對的 Markdown 鏈接按主視圖 Session 的 cwd 解析,跨工作區鏈接可能定位不準。
安全與權限:插件以當前 DSH Host / Session 的權限運行,路徑由 Host 校驗。安裝前建議閱讀 GitHub 源碼 與 MIT 許可證,確認符合你的環境策略。
結尾¶
dsh-right-click-menu 用最小客戶端 bundle 補上 Web GUI 裏鏈接與路徑類元素的右鍵能力,並刻意不干擾原生編輯與複製菜單。目錄頁:SkillHub — dsh-right-click-menu;源碼與詳細說明:github.com/SJcun/dsh-right-click-menu。