在 DSH 生態中,視覺交互是智能體開發的重要一環。獲取屏幕截圖並直接反饋給 Agent,通常需要跨應用操作和手動整理,流程容易中斷。這個插件將截圖功能直接集成到對話輸入框,提供類似微信的框選體驗,減少手動步驟。
插件由 deepseekbluefish 維護,定位爲 DSH 中的“微信式”截圖工具。它通過在輸入框左側添加 ✂ 按鈕,允許用戶拖拽框選區域,自動編號 PNG 文件,並將包含時間戳的標記 [Shot N HH:mm] 填入輸入框。
安裝¶
使用官方命令安裝插件。安裝完成後,重啓 DSH 或對應的客戶端,輸入框左側會出現 ✂ 按鈕。
dsh plugin --profile web add github:deepseekbluefish/dsh-screenshot-plugin
核心功能¶
插件提供了一套完整的截圖交互流程:
- 拖動框選:點擊按鈕後屏幕變暗,拖動鼠標框選目標區域。
- 交互微調:鬆手後選區保留。用戶可以拖動選區本身,或拖動選區四角/四邊的 8 個手柄進行縮放。
- 確認與取消:雙擊選區或按 Enter 鍵確認截取;按 Esc 取消。
- 自動編號與標記:截圖保存爲
截屏N_HHmm.png(N 爲序號),同時自動在輸入框插入純 ASCII 標記[Shot N HH:mm]。
配置¶
默認情況下,截圖文件保存於 ~/Pictures/DSH-Screenshots。如果需要更改目錄,可以通過 profile 補丁覆蓋配置。
創建或編輯 ~/.dsh/profiles/<name>/cordis.patch.yml:
- id: screenshot
config:
folder: 'D:\MyScreenshots'
典型用法¶
- 在對話界面點擊輸入框左側的 ✂ 按鈕,屏幕變暗。
- 拖動鼠標框選區域。鬆手後,選區會保持高亮,此時可以調整位置或大小。
- 雙擊選區(或按下 Enter 鍵)確認截取。
- 輸入框內會自動出現
[Shot N HH:mm]標記。 - 點擊發送,將標記發給 Agent。配合視覺插件(如 ModLens),Agent 可根據標記中的編號與時間定位對應的 PNG 文件。
工作原理¶
插件分爲客戶端、宿主和截屏腳本三個部分:
- 客戶端:註冊到
conversation.input.left插槽,點擊後發起POST /api/screenshot/capture請求。 - 宿主:註冊
webServer路由,調用 PowerShell 啓動全屏遮罩層。遮罩層使用 WinForms 實現,包含綠色邊框、8 個縮放手柄及操作提示。 - 截屏腳本:使用
CopyFromScreen進行區域裁剪。腳本爲純 ASCII 源碼,以避免編碼問題。 - 標記填充:標記通過
props.inputActions→sessions.provideInfo(...).props.inputActions→session.prompt(..., 'queue')的優先級鏈路寫入輸入框。
限制與注意事項¶
- 平臺限制:插件僅支持 Windows,依賴 Windows PowerShell 和 System.Drawing 庫。
- 前臺操作:按鈕點擊與框選過程需要在應用前臺進行。
- 多顯示器:多顯示器環境下,框選基於虛擬屏整體座標計算。
- Agent 讀取:Agent 需要配置視覺引擎(如 ModLens)才能讀取截圖文件。
總結¶
該插件通過模擬微信的截圖交互,解決了在 DSH 中快速截圖並同步給 Agent 的痛點。安裝簡單,配置靈活,適合需要在對話中頻繁使用視覺反饋的開發者。