前言¶
在 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 許可證,確認可接受後再啓用。
典型用法¶
- 在輸入框工具欄找到剪刀圖標。
- 單擊 → 屏幕凍結並壓暗。
- 按住左鍵拖出區域,鬆手。
- 截圖自動出現在輸入框附件區。
取消:截圖過程中按 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