前言¶
在 Deepseek Harness(DSH)生態中,讓 Agent 直接處理本地文件需要將文件內容注入對話輸入框。舊版的 dsh-file-drop 插件雖然實現了基礎功能,但在 EAC 環境下與視覺橋存在重複注入圖片的衝突。
dsh-file-drop-eac 是對舊版 dsh-file-drop 的 EAC 特化重寫。它被設計爲 EAC 客戶端的內置替代插件,在解決衝突的同時,補充了對文件夾的支持。
核心功能¶
該插件根據文件類型執行不同的注入邏輯:
- 文本 / 代碼文件(如
.md,.js,.py,.json或無擴展名文件)
自動將文件內容注入輸入框(上限 256 KB),並在內容前添加文件頭<!-- 拖入文件:<名> -->。 - 二進制 / 超大文件
不注入內容,而是注入完整磁盤路徑提示。Agent 可以利用文件工具根據路徑讀取文件。 - 圖片
完全不接管。拖入圖片時插件無操作,直接交給視覺橋或原生縮略圖處理,避免重複注入衝突。 - 文件夾
新增接管能力。插件會識別拖入的是文件夾,但由於瀏覽器安全限制,無法獲取文件夾的磁盤絕對路徑。此時會給出可操作的降級提示,例如“在文件/項目目錄標籤打開該目錄”或“關鍵文件逐一拖入”。
技術實現與運行環境¶
插件採用純客戶端實現。其目錄結構如下:
dsh-file-drop-eac/
├── lib/
│ ├── index.js # host half(no-op,讓包成爲合法 bundle)
│ └── client.js # 瀏覽器半邊(classic-script,經 __ModuleLoader__.load 註冊)
├── test/
│ └── client.test.js # node:test + vm 沙箱(純邏輯 + 端到端 drop 注入)
├── README.md
└── package.json
- 加載方式:
client.js是 classic-script bundle,官方模塊加載器只支持該形式。 - 路徑獲取:
- Electron 桌面端:通過 preload 暴露的
dshDesktop.getPathForFile(基於webUtils)獲取拖入文件的完整磁盤路徑。 - 純瀏覽器 WebUI:由於安全限制,只能獲取虛擬路徑,插件會自動降級爲可讀提示。
- Electron 桌面端:通過 preload 暴露的
安裝與啓用¶
該插件旨在作爲 EAC 內置替代品分發。在 EAC 客戶端中,它被登記進 main.js 的 COMPANION_PLUGINS,並最終落到 resources/app/assets/plugins/dsh-file-drop-eac,由客戶端內的 syncCompanionPlugins 分發到 web profile,替換原 dsh-file-drop。
(注:資料中未提供具體的安裝命令)
典型用法¶
- 操作:直接將本地文件或文件夾拖拽到對話輸入框。
- 結果:
- 對於文本/代碼文件,內容會自動出現在輸入框中。
- 對於二進制/超大文件,輸入框會出現文件路徑提示。
- 對於圖片,輸入框不會出現文件內容,由視覺橋處理。
- 對於文件夾,會出現提示信息引導下一步操作。
適用場景與注意¶
- 適用場景:需要 Agent 快速讀取本地代碼、文檔或配置文件的場景。
- 注意:
- 插件以當前 DSH 進程的權限運行,安裝前應檢查源碼與許可證(MIT)。
- 瀏覽器出於安全限制拿不到文件夾的磁盤絕對路徑,這是技術限制而非插件 bug。
- 與視覺橋、縮略圖功能協作時,插件會主動避免重複注入。
總結¶
dsh-file-drop-eac 解決了舊版插件在 EAC 環境下的圖片衝突問題,並補充了對文件夾的識別能力。它通過 classic-script 模式與 EAC 客戶端深度集成,爲開發者提供了一種直觀的本地文件交互方式。