前言¶
在 DeepSeek Harness(DSH)的網頁客戶端裏,智能體產出的交付卡片、對話裏的圖片,在 DOM 裏往往只是帶 blob: 的 <img> 或預覽區域。瀏覽器默認拖出到資源管理器或桌面時,經常落成沒有擴展名的臨時 blob,無法在本地按「真實文件」繼續用。桌面端若依賴「另存爲」或記路徑,步驟也偏長。
dsh-desk-drop 是社區插件(維護者 thawline,分類:客戶端),在瀏覽器半邊改 DOM 與拖拽行爲,在宿主半邊提供磁盤上的真路徑與 HTTP 文件服務,讓你能把交付卡片和消息圖片按原文件名拖到 Windows 桌面,並在卡片上通過菜單「打開所在文件夾」「複製路徑」「另存爲」。下文按 README 說明其能力與安裝方式。
這是什麼¶
- 名稱:dsh-desk-drop(npm 包名同插件倉名)
- 維護者:thawline
- 定位:Windows 專用客戶端插件,解決「網頁裏所見文件拖不出去、拖出去不是真文件」的問題
- 依賴環境:Node 22.13.0 及以上;僅支持 Windows(使用
explorer.exe /select與 PowerShell + WinForms 等系統能力)
社區目錄頁:thawline/dsh-desk-drop。源碼與說明:GitHub 倉庫。DSH 生態奉行「一切皆插件」;SkillHub 等爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係。
核心功能¶
拖拽到桌面或資源管理器¶
交付卡片與消息中的圖片均可直接拖到桌面或資源管理器。落地文件帶正確擴展名,而不是無名的 blob。
實現上,瀏覽器半邊接管相關 DOM;宿主半邊提供真實文件。交付卡片路徑來自 .cardPreview 的 title(對應官方 resolveWorkspacePath(cwd, file.path) 的絕對路徑),直接讀 DOM,不佔用官方插槽。圖片僅有 blob: 時,在 pointerdown 將字節 POST 到宿主暫存,換回真路徑與 http 地址,並把 File 填入 dataTransfer.items,拖拽穩定性優於僅依賴 DownloadURL。
三點菜單與右鍵(同一套)¶
卡片最右側 ⋯ 與卡片任意位置右鍵爲同一菜單:
- 打開所在文件夾 —
explorer.exe /select,<路徑>,資源管理器內藍色選中該文件 - 複製文件路徑 — 絕對路徑寫入剪貼板
- 另存爲 — 優先 Electron 原生保存對話框;無 Electron 時退到 PowerShell + WinForms
宿主路由(前綴 /dsh-desk-drop)¶
插件在宿主側註冊如下路由,供瀏覽器半邊與文件服務使用:
| 路由 | 說明 |
|---|---|
GET /file?p= |
返回磁盤真文件(inline + RFC 5987 文件名) |
POST /stash?name= |
接收原始字節,存臨時文件,返回 { id, path, name, url } |
GET /stashed?id= |
按 32 位 hex 編號讀回暫存文件 |
POST /reveal |
請求體 { path },打開文件夾並選中 |
POST /save-as |
請求體 { path },觸發另存爲 |
GET /ping |
宿主自檢 |
GET/POST /hello |
瀏覽器半邊心跳,確認客戶端腳本已運行 |
暫存目錄爲 %TEMP%\dsh-desk-drop;超過 24 小時的文件會自動清理。
安裝與啓用¶
官方 README 給出的裝法如下(需本機可訪問 GitHub,且 profile 內能 link 本地目錄)。
- 克隆倉庫到本機(路徑自定):
git clone https://github.com/thawline/dsh-desk-drop
- 在 DSH profile 的
package.json中掛載依賴並加入 bundle:
// <profile>/package.json
"dependencies": { "dsh-desk-drop": "link:<你 clone 下來的路徑>" },
"dsh": { "profile": { "bundles": ["...", "dsh-desk-drop"] } }
- 爲
node_modules/dsh-desk-drop建立指向源碼目錄的 junction(Windows):
New-Item -ItemType Junction -Path "<profile>\node_modules\dsh-desk-drop" -Target "<你 clone 下來的路徑>"
- 改宿主相關代碼後需重啓 DSH 客戶端(纔會重新
require);僅改瀏覽器注入側時,刷新頁面即可。
安裝前請自行閱讀倉庫源碼與 MIT 許可證;插件以當前 dsh 進程權限運行,涉及讀寫臨時目錄與打開資源管理器,請確認與你的安全策略一致。
典型用法¶
無需額外配置項;啓用 bundle 並重啓(或刷新)後:
- 在會話裏出現交付卡片時,將卡片拖到桌面或文件夾,應得到與原路徑一致擴展名的文件。
- 對消息圖片在按下指針時由插件暫存後再拖出,同樣應以具名文件落地。
- 點擊卡片
⋯或右鍵,按需選擇打開所在文件夾、複製路徑或另存爲。
若懷疑宿主未加載,可對照 README 中的 GET /ping 與瀏覽器側的 GET/POST /hello 心跳邏輯排查(具體實現見倉庫 lib 與 cordis.patch.yml)。
適用場景與注意¶
適合誰:主要在 Windows 上使用 DSH 網頁客戶端、需要把智能體交付物或對話圖片當作本地文件繼續編輯、歸檔或放進其他工具鏈的開發者。
限制與注意:
- 僅 Windows;Linux / macOS 不在 README 支持範圍內。
- Node 版本須 ≥ 22.13.0。
- 圖片拖拽依賴臨時目錄與宿主 HTTP;長時間未用的暫存文件會在 24 小時後清理。
- 當前 package.json 版本爲 0.2.0;星標等動態數據以 GitHub 頁面爲準。
結尾¶
dsh-desk-drop 把「網頁裏的交付卡片和圖片」和「磁盤上的真文件」接在一起:拖得出、帶擴展名,並補上空文件夾、複製路徑和另存爲三條常用路徑。若你正在 Windows 上跑 DSH 並厭煩 blob 拖拽,可按上文 link + junction 方式掛進 profile。