dsh-file-drop-eac:直接拖入文件/文件夾到 EAC 對話

前言

在 Deepseek Harness(DSH)生態中,讓 Agent 直接處理本地文件需要將文件內容注入對話輸入框。舊版的 dsh-file-drop 插件雖然實現了基礎功能,但在 EAC 環境下與視覺橋存在重複注入圖片的衝突。

dsh-file-drop-eac 是對舊版 dsh-file-drop 的 EAC 特化重寫。它被設計爲 EAC 客戶端的內置替代插件,在解決衝突的同時,補充了對文件夾的支持。

核心功能

該插件根據文件類型執行不同的注入邏輯:

  1. 文本 / 代碼文件(如 .md, .js, .py, .json 或無擴展名文件)
    自動將文件內容注入輸入框(上限 256 KB),並在內容前添加文件頭 <!-- 拖入文件:<名> -->。
  2. 二進制 / 超大文件
    不注入內容,而是注入完整磁盤路徑提示。Agent 可以利用文件工具根據路徑讀取文件。
  3. 圖片
    完全不接管。拖入圖片時插件無操作,直接交給視覺橋或原生縮略圖處理,避免重複注入衝突。
  4. 文件夾
    新增接管能力。插件會識別拖入的是文件夾,但由於瀏覽器安全限制,無法獲取文件夾的磁盤絕對路徑。此時會給出可操作的降級提示,例如“在文件/項目目錄標籤打開該目錄”或“關鍵文件逐一拖入”。

技術實現與運行環境

插件採用純客戶端實現。其目錄結構如下:

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:由於安全限制,只能獲取虛擬路徑,插件會自動降級爲可讀提示。

安裝與啓用

該插件旨在作爲 EAC 內置替代品分發。在 EAC 客戶端中,它被登記進 main.js 的 COMPANION_PLUGINS,並最終落到 resources/app/assets/plugins/dsh-file-drop-eac,由客戶端內的 syncCompanionPlugins 分發到 web profile,替換原 dsh-file-drop。

(注:資料中未提供具體的安裝命令)

典型用法

  1. 操作:直接將本地文件或文件夾拖拽到對話輸入框。
  2. 結果:
    • 對於文本/代碼文件,內容會自動出現在輸入框中。
    • 對於二進制/超大文件,輸入框會出現文件路徑提示。
    • 對於圖片,輸入框不會出現文件內容,由視覺橋處理。
    • 對於文件夾,會出現提示信息引導下一步操作。

適用場景與注意

  • 適用場景:需要 Agent 快速讀取本地代碼、文檔或配置文件的場景。
  • 注意:
    • 插件以當前 DSH 進程的權限運行,安裝前應檢查源碼與許可證(MIT)。
    • 瀏覽器出於安全限制拿不到文件夾的磁盤絕對路徑,這是技術限制而非插件 bug。
    • 與視覺橋、縮略圖功能協作時,插件會主動避免重複注入。

總結

dsh-file-drop-eac 解決了舊版插件在 EAC 環境下的圖片衝突問題,並補充了對文件夾的識別能力。它通過 classic-script 模式與 EAC 客戶端深度集成,爲開發者提供了一種直觀的本地文件交互方式。

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

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

小夜