前言¶
在 DSH 裏和模型討論本地工程時,你往往希望它「看見」的是某個目錄在本機上的位置,而不是一條無法上傳的附件。上游附件流程面向的是文件:拖進一張圖、一份文檔可以走上傳;拖進整個文件夾時,目錄本身不是文件,上傳拿不到有用內容,輸入框裏卻容易仍被當成附件處理。DeepSeek Harness 的社區插件 dsh-plugin-drop-path(維護者 vianvio,GitHub vianvio/dsh-plugin-drop-path)針對的是這一類場景:在客戶端輸入框裏,把「恰好一個文件夾」的拖放改寫成 @路徑/ 形式的引用塊,模型收到的是該文件夾的本機絕對路徑,你可以接着打字發送。
這是什麼¶
dsh-plugin-drop-path 是 DSH 客戶端插件(當前 npm 版本 0.1.2,許可證 MIT,零運行時依賴)。它不改變服務端邏輯,只在瀏覽器側攔截符合條件的拖放,並通過上游的引用插入通道寫入路徑。插件在 DSH 生態目錄中的分類爲客戶端;SkillHub 目錄頁:https://www.skillhub.cn/plugins/vianvio/dsh-plugin-drop-path。
核心功能¶
下面介紹拖放時的行爲劃分(與 README 一致):
| 你拖進來的 | 結果 |
|---|---|
| 一個文件夾 | 插件接管本次拖放,把絕對路徑插進輸入框(folder 形狀的 @路徑/ 引用塊) |
| 一個普通文件 | 不處理,仍走上游附件流程(圖片 / 文件上傳) |
| 同時拖多個 | 不處理(多選裏含文件夾也不猜測) |
只有「恰好一個文件夾」纔會接管:誤判一次可能吞掉本應按附件處理的文件,因此作者選擇保守策略。引用塊在顯示上放寬了上游約 240px 寬、省略號截斷的限制,以便長路徑完整可見;發給模型的文本不變。
路徑來源與插入方式要點:
- 在
window捕獲階段監聽拖放,先於掛在document冒泡上的上游附件插件,不依賴插件加載順序。 - 絕對路徑來自 DSH Desktop 的窄口橋
window.__DSH_DESKTOP_FILE_PATH__(對應 Electron 的webUtils.getPathForFile)。普通瀏覽器沒有這座橋時會明確提示讀不到路徑,而不是插入假路徑。 - 使用上游通道
slash/input-insert-reference插入引用,避免整篇替換 Lexical 草稿導致已有引用塊降級或光標丟失。
安裝與啓用¶
安裝命令以 README 爲準。桌面端示例:
dsh plugin --profile desktop add dsh-plugin-drop-path
--profile 填你實際使用的 profile(桌面端爲 desktop,Web 端爲 web)。裝完後需要重啓 DSH——客戶端插件多在啓動時加載。命令背後通過 pnpm 安裝包,並自動把聲明瞭 dsh.bundle 的依賴寫入 profile 的 dsh.profile.bundles,無需手改 package.json。
其他來源(資料原文):
| 從哪裝 | 命令 |
|---|---|
| npm(推薦) | dsh plugin --profile desktop add dsh-plugin-drop-path |
| GitHub 最新提交 | dsh plugin --profile desktop add github:vianvio/dsh-plugin-drop-path |
| 本地目錄(開發) | 克隆倉庫後:dsh plugin --profile desktop add link:$HOME/dsh-plugin-drop-path |
升級與卸載:
dsh plugin --profile desktop update dsh-plugin-drop-path
dsh plugin --profile desktop remove dsh-plugin-drop-path
典型用法¶
- 在 DSH Desktop 中打開對話輸入框。
- 從訪達(Finder)或資源管理器中單獨拖入一個文件夾到輸入區域。
- 輸入框出現帶 folder 圖標的
@…/引用塊,內容爲該文件夾的本機絕對路徑;繼續輸入說明後發送,模型側看到的是路徑字符串而非附件。
若在普通瀏覽器中打開同一界面,沒有 Desktop 路徑橋,插件會說明無法讀取本機路徑——這是預期邊界,不是配置錯誤。
適用場景與注意¶
適合誰: 經常在 DSH 裏讓模型基於本地工程目錄路徑做說明、腳本生成或上下文引用,且習慣用拖拽而不是手打長路徑的開發者。
已知邊界(README):
- 路徑僅在 DSH Desktop 可獲取;Web 瀏覽器無
__DSH_DESKTOP_FILE_PATH__。 - 路徑原樣插入:不做存在性校驗、不做
~縮寫、不做相對化,避免模型在另一側解釋錯誤。 - 僅處理「恰好一個文件夾」的拖放,其餘交給上游。
安全與信任: 插件以當前 DSH 進程權限在客戶端運行,會讀取拖入文件夾的本機路徑並寫入輸入框。安裝前建議查看 GitHub 倉庫 源碼與 MIT 許可證;社區目錄 SkillHub 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
機制細節與驗證說明見倉庫內 docs/notes.md;行爲與發佈契約有 npm test(README 稱 20 項)。
結尾¶
經過上面的步驟,你可以在 Desktop 端用一次文件夾拖放,把本機絕對路徑以引用塊形式交給模型,而繞開「目錄無法當附件上傳」的死衚衕。更多元數據與討論見目錄頁 https://www.skillhub.cn/plugins/vianvio/dsh-plugin-drop-path,源碼與安裝說明見 https://github.com/vianvio/dsh-plugin-drop-path。