dsh-desk-drop:把 DSH 交付卡片和消息圖片拖到 Windows 桌面

前言

在 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。

三點菜單與右鍵(同一套)

卡片最右側 ⋯ 與卡片任意位置右鍵爲同一菜單:

  1. 打開所在文件夾 — explorer.exe /select,<路徑>,資源管理器內藍色選中該文件
  2. 複製文件路徑 — 絕對路徑寫入剪貼板
  3. 另存爲 — 優先 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 本地目錄)。

  1. 克隆倉庫到本機(路徑自定):
git clone https://github.com/thawline/dsh-desk-drop
  1. 在 DSH profile 的 package.json 中掛載依賴並加入 bundle:
// <profile>/package.json
"dependencies": { "dsh-desk-drop": "link:<你 clone 下來的路徑>" },
"dsh": { "profile": { "bundles": ["...", "dsh-desk-drop"] } }
  1. 爲 node_modules/dsh-desk-drop 建立指向源碼目錄的 junction(Windows):
New-Item -ItemType Junction -Path "<profile>\node_modules\dsh-desk-drop" -Target "<你 clone 下來的路徑>"
  1. 改宿主相關代碼後需重啓 DSH 客戶端(纔會重新 require);僅改瀏覽器注入側時,刷新頁面即可。

安裝前請自行閱讀倉庫源碼與 MIT 許可證;插件以當前 dsh 進程權限運行,涉及讀寫臨時目錄與打開資源管理器,請確認與你的安全策略一致。

典型用法

無需額外配置項;啓用 bundle 並重啓(或刷新)後:

  1. 在會話裏出現交付卡片時,將卡片拖到桌面或文件夾,應得到與原路徑一致擴展名的文件。
  2. 對消息圖片在按下指針時由插件暫存後再拖出,同樣應以具名文件落地。
  3. 點擊卡片 ⋯ 或右鍵,按需選擇打開所在文件夾、複製路徑或另存爲。

若懷疑宿主未加載,可對照 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。

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

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

小夜