dsh-snap:在 DeepSeek Harness 輸入框裏就地截圖並附圖

前言

在 DeepSeek Harness(DSH)裏給對話附圖,常見做法是先把圖存成文件,再拖拽或從文件選擇器掛到輸入框。多一步「找文件」,在排查界面、貼日誌截圖時尤其打斷思路。dsh-snap 是社區維護的客戶端插件,在輸入框工具欄(conversation.composer.dock)增加剪刀按鈕:點一下、框選區域,PNG 直接進入附件區,不必再經系統截圖工具保存再拖入。

這是什麼

  • 名稱:dsh-snap(npm 包名,GitHub:12138hao/dsh-snap)
  • 維護者:12138hao
  • 分類:客戶端(SkillHub 目錄歸類爲客戶端)
  • 許可:MIT(package.json 與 README 一致)
  • 版本:資料中 package.json 爲 0.1.0;安裝以倉庫當前 tag/分支爲準

插件給 DeepSeek Harness 桌面端(web profile,走 webServer 路由)增加就地截圖能力,與「只能拖拽或選文件附圖」的默認行爲互補。

核心功能

以下均來自項目 README,未在資料中出現的後處理能力不寫進正文。

  • 就地截圖:剪刀按鈕與添加附件控件並排,位於輸入框工具欄。
  • 框選交互:全屏壓暗、拖動選區、實時顯示寬 × 高;按 Esc 取消本次截圖。
  • 自動附圖:框選結束 PNG 進入輸入框附件,可見縮略圖。
  • 本地 Win32 截屏:通過包內 bin/DshSnap.exe 完成,不依賴瀏覽器 getDisplayMedia,避免系統截屏權限彈窗鏈。
  • DPI 感知:高縮放(150% / 200%)下整屏與座標對齊。
  • 零 npm 依賴:插件本體除 Node 內置模塊外無第三方 npm 依賴。

環境要求(README 明確列出):

  • Windows 10 / 11(package.json 中 "os": ["win32"])
  • DeepSeek Harness 桌面端(web profile)
  • .NET 8 Desktop Runtime(截圖程序爲 WinForms 單文件 exe)

已知限制:

  • 僅 Windows(Win32 + WinForms)
  • 一次一張,無貼紙、標註、馬賽克等後處理
  • 截圖過程爲凍結畫面,非實時預覽
  • 多顯示器按虛擬桌面整屏截取

安裝與啓用

官方推薦從 GitHub 安裝,命令須與 README 一致:

dsh plugin --profile <你的 profile> add git+https://github.com/12138hao/dsh-snap.git

若桌面端 profile 由 Electron 獨佔管理、上述命令被拒絕,可手動將包目錄放入 <profile>/node_modules/dsh-snap,並在 <profile>/package.json 的 dsh.profile.bundles 中登記 "dsh-snap"(寫 JSON 時不要帶 BOM,否則宿主可能無法讀取)。

本地目錄方式(README 方式二):克隆倉庫到固定位置後,同樣放入 profile 的 node_modules 並登記 bundle,重啓 DSH(已加載模塊不會熱替換),再 F5 刷新頁面。

Node 引擎要求(package.json):^22.19.0 || >=24.0.0。

插件以當前 DSH 進程權限運行;安裝前請自行查看源碼與 MIT 許可證,確認可接受後再啓用。

典型用法

  1. 在輸入框工具欄找到剪刀圖標。
  2. 單擊 → 屏幕凍結並壓暗。
  3. 按住左鍵拖出區域,鬆手。
  4. 截圖自動出現在輸入框附件區。

取消:截圖過程中按 Esc。

可選配置(環境變量):

環境變量 說明
DSH_SNAP_EXE 覆蓋截圖程序路徑,默認使用包內 bin/DshSnap.exe

截圖臨時文件目錄固定爲 ~/.dsh/snap/(含 snap.png、result.json)。

工作原理(便於排查)

頁面點擊剪刀後,宿主側拉起 DshSnap.exe,結果經 web API 回到頁面,再通過合成 drop 事件把 File 交給 Lexical 輸入框的 onDrop,效果等價於手動拖入文件。

[頁面] 剪刀按鈕
   │ POST /api/dsh-snap/start
   ▼
[宿主插件] 拉起 bin/DshSnap.exe
   │ 凍結屏幕 → 框選 → 存 PNG 到 ~/.dsh/snap/snap.png
   │ 同時寫 result.json
   ▼
[頁面] 輪詢 /api/dsh-snap/poll → ready
   │ GET /api/dsh-snap/file 取圖
   ▼
[頁面] 構造帶 File 的 DataTransfer,向 contenteditable 派發 drop 事件
   ▼
DSH 的 onDrop 收到文件 → 變成輸入框附件

路由摘要:

方法 路徑 說明
POST /api/dsh-snap/start 清掉上次結果並拉起截圖程序
GET /api/dsh-snap/poll 查詢是否已截好
GET /api/dsh-snap/file 返回 PNG
POST /api/dsh-snap/done 兼容舊版截圖程序回調

需從源碼重建 DshSnap.exe 時(README):

cd src
dotnet publish -c Release -r win-x64 -o ../bin

適用場景與注意

適合:在 Windows 上使用 DSH 桌面端、需要頻繁把屏幕區域貼進對話(報錯窗口、配置界面、終端輸出等)的開發者;希望減少「截圖 → 保存 → 找文件 → 拖入」步驟的用戶。

注意:

  • DSH 生態理念是「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係,本文介紹的插件來自社區倉庫,非官方應用商店條目。
  • 插件會啓動本地 exe 並讀寫 ~/.dsh/snap/,請在可信來源安裝並覈對 12138hao/dsh-snap 倉庫內容。
  • 非 Windows 平臺當前無法使用(資料未提供其他 OS 支持說明)。

結尾

dsh-snap 把 QQ / 微信式的框選截圖接到 DSH 輸入框附件鏈路上,適合 Windows 桌面端日常貼圖。目錄與源碼:

  • SkillHub:https://www.skillhub.cn/plugins/12138hao/dsh-snap
  • GitHub:https://github.com/12138hao/dsh-snap
羽毛球分组比赛记分
小程序二维码

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

小夜