前言¶
做 DSH 插件開發的人大概都經歷過這種時刻:想讓模型看一眼屏幕上的報錯窗口、一張圖、一段 UI,得先切出去開截圖工具,截完保存,再回到 DSH 把文件拖進輸入框。一次操作要跳出當前窗口三四次。dsh-screenshot 就是針對這段流程的:在輸入框下面加一個「截圖」按鈕,點一下,DSH 窗口自己收起,你在屏幕上拖個框,鬆手後那塊圖直接落進輸入框的附件條。
它由 syhliuyiqing 維護,分類是客戶端,GitHub 上目前 2 stars。下面介紹它的能力邊界、安裝方式和幾個實現取捨。
這是什麼¶
一個 DSH 桌面端插件,用三層配合把「框選屏幕區域 → 變成輸入框待發附件」這一段自動化掉。入口只有輸入框下那個按鈕,沒有全局快捷鍵。
解決的核心問題是:減少讓模型看屏幕內容的操作步驟,讓截圖和投遞在同一個動作裏完成。適用前提是 Windows 10 / 11,抓屏走 PowerShell + GDI+,其它平臺還沒寫。
核心功能¶
1、點擊「截圖」按鈕 → DSH 窗口最小化 → 整屏壓暗 → 鼠標變成十字 → 拖矩形框選 → 鬆手後裁出框住的區域 → DSH 彈回前臺 → PNG 出現在輸入框附件條。
2、按住 Alt 再點,直接截整屏,不走框選。
3、拖動過程中框邊實時顯示 寬 x 高。
4、右鍵或 Esc 取消,什麼都不放,也不彈錯誤。
5、成品長邊超過 1920 會自動縮一檔,避免把幾 MB 原圖直接塞給模型;框選出來的圖默認按原樣保留,除非本身就超了 1920。
安裝與啓用¶
官方只提供本地目錄安裝,沒有 dsh plugin add github:... 這種命令。兩種方式:
方式一:在 DSH 的「插件」頁裏添加本目錄(本地目錄安裝)。
方式二:由 Agent 調 plugin_manager 的 install_bundle,指向這個目錄的絕對路徑。
裝完要刷新頁面。如果是從舊版更新,需要把 DSH 完全退出再打開,Host 半纔會加載新代碼。
兩個前置要求:DSH 桌面版 0.2.1 及以上;系統自帶的 Windows PowerShell 5.1 即可,不用裝 pwsh。
典型用法¶
裝好後,操作對照如下:
| 操作 | 結果 |
|---|---|
| 點「截圖」 | 框選一塊區域 |
Alt + 點 |
整屏 |
| 拖動 | 框選,實時顯示尺寸 |
右鍵 / Esc |
取消 |
入口只有輸入框下那一個按鈕。想截某個應用裏展開的菜單,需要先用快捷鍵把菜單調出來,再點截圖——因爲框選期間是全屏模態。
實現與取捨¶
插件由三個文件各管一段:
| 文件 | 職責 |
|---|---|
client.js |
輸入框下面的按鈕。取到圖後調 conversation.createDrafts() + inputActions.addAttachments(),把 PNG 變成輸入框裏的待發附件 |
index.js |
Host 半。註冊 POST /dsh-screenshot/capture,過 ctx.connection.requestRejection() 的鑑權,再通過 Host 的 subprocess 服務串行跑 PowerShell,回 PNG 字節 |
capture.ps1 |
真正幹活:沿進程樹找到 DSH 窗口句柄 → 最小化 → 抓虛擬桌面 → 鋪可選區遮罩 → 裁切/縮放 → 存 PNG → 不管成敗都恢復窗口 |
幾個值得注意的設計取捨:
- 先抓整屏再選。選完從那張原圖上裁,所以成品不會帶上遮罩、邊框或尺寸提示,也避免了「窗口還沒最小化完就開截」的時序問題。
- 選擇器只編譯一次。C# 現編譯在冷機上要十幾秒,編譯產物緩存到
%TEMP%\dsh-screenshot\selector-v1.dll,之後每次調用穩定在 1.5 秒上下。 - 鑑權走 DSH 自己的那套。路由沒有另開鑑權,直接用
connection.requestRejection(),只有帶着本機瀏覽器會話 cookie 的頁面能調,命令行curl過去是 401。 - 圖片不落盤。Host 寫到臨時目錄,客戶端取走字節後立刻刪;除了這一個臨時文件,圖不會落到別處。
- 起進程走 Host 的
subprocess服務,不直接引 Node 的進程模塊:可執行文件由 provider 解析,stdio 和回收也歸 provider,插件手裏不留裸的進程能力。
已知限制¶
- 只有 Windows。
- 多顯示器且各屏縮放比不同時,座標可能有偏差(目前按系統 DPI 處理)。
- 框選期間全屏模態,展開菜單類內容要先調出來再截。
- 沒有全局快捷鍵,入口只有輸入框下那個按鈕。
適用場景與注意¶
適合在 Windows 上用 DSH 桌面版、經常需要讓模型看屏幕內容的人。它的抓屏能力以當前 DSH 進程權限運行,capture.ps1 會最小化/恢復窗口並調用 PowerShell + GDI+;安裝前應通讀源碼,確認許可證爲 MIT,再決定是否引入。
結尾¶
dsh-screenshot 的價值不在於多強,而在於把一個重複的多步操作收成一次點擊,同時把窗口生命週期、臨時文件和鑑權都處理乾淨。目錄頁在 https://www.skillhub.cn/plugins/syhliuyiqing/dsh-screenshot,源碼在 https://github.com/syhliuyiqing/dsh-screenshot。