@paicat1/dsh-screenshot:DSH 的熱鍵截圖與 Agent 自助截屏插件

前言

在 DSH(DeepSeek Harness)裏和智能體協作,經常要把屏幕上的內容交給對方:一段報錯、一個界面狀態、一張只在本地應用裏才能看到的圖。常見的做法是手動截圖、粘貼進對話框——圖片本體進了會話,事後想找到文件在哪兒並不容易;反過來,想讓智能體“自己看一眼屏幕”,通常也沒有現成入口。

@paicat1/dsh-screenshot 把這兩件事合併到一個插件裏:人用瀏覽器熱鍵截圖,截圖後只把 PNG 路徑交給智能體;智能體也可以通過工具自助截屏。整個實現是純 PowerShell,零依賴、零二進制。下面介紹它的功能、安裝和用法。

這是什麼

一句話定位:DSH 輕量截圖插件,瀏覽器熱鍵 + Agent 可自助調用的截屏、讀圖工具。

  • 包名:@paicat1/dsh-screenshot,當前版本 1.1.2,MIT 許可證
  • 作者:paicat1
  • 平臺:Windows(依賴 PowerShell 的 System.Drawing.CopyFromScreen

背景值得一提:這套截圖能力最初是作爲 @liustack/modlens 的 dsh 插件增強實現的,上游在 issue #48 中把該功能標記爲 not planned,作者於是把它 fork 出來拆成獨立插件,以解耦上游更新對截圖功能的影響。因此它不隨 modlens 更新而失效,也不強依賴 modlens——截圖與分發是插件自身能力,讀圖(OCR/版面/語義)歸 modlens(選裝)。

核心功能

兩個快捷鍵

  • Ctrl+Shift+Alt+S:無交互直接全屏截圖,捕獲整個虛擬桌面。
  • Ctrl+Alt+S:進入選取模式。進入後整個桌面保持可操作,窗口可以自由移動、縮放,像佈置畫面一樣擺好再截。選取時:點一下桌面 = 全屏;鼠標懸停到某個窗口會亮起吸附邊框,點一下 = 截取該窗口完整內容(被遮擋也一樣);拖拽 = 自由選區,Esc 取消。

截圖完成後,PNG 路徑會自動插入 DSH 輸入框,同時複製到剪貼板。

窗口吸附:被遮擋也能截到完整內容

懸停時插件枚舉屏幕上的窗口,高亮光標下的那一個;單擊後通過 PrintWindow 讓目標窗口自己把內容渲染出來——截的是窗口自身,不是屏幕上可見的像素,所以被其他窗口遮擋、被 DWM 陰影包裹都不影響。最後按內容邊界裁掉陰影,四邊乾淨。

已知特例:獨立運行的 PowerShell 窗口。它的控制檯(conhost)不響應 PrintWindow,且被覆蓋時不渲染 GDI 表面,兩條“穿透遮擋”的路徑都走不通,被遮擋時只能截到屏幕可見像素(會帶上遮擋內容)。遇到這種窗口,把它切到前臺再截,或直接拖拽框選。其他窗口(含 cmd 等控制檯窗口)均正常。

傳路徑不傳圖

截圖保存到獨立目錄:

%USERPROFILE%\Downloads\modlens-screenshots\

傳給智能體的只有 PNG 路徑,不是圖片本身。這樣圖片只存在一個地方,清理就是刪一個目錄;路徑是幾十字節的文本,不會把幾百 KB 的二進制塞進上下文;而且路徑通用,任何支持圖片的智能體(原生多模態模型,或 modlens 這類橋接)都能按路徑讀圖,一次截圖的路徑可以複用。

modlens_screenshot:讓 Agent 自己截屏

插件向智能體註冊 modlens_screenshot 工具。模型自主調用後完成截屏;如果裝了 modlens,會當場讀出結構化內容(OCR/版面/語義),返回證據 + 截圖路徑。

modlens 是選裝的:找不到 modlens CLI 時,modlens_screenshot 工具不註冊,但截圖功能照常工作。能力劃分上,截圖(全屏/框選/窗口吸附/擺窗佈局)、分發(傳路徑、剪貼板、獨立目錄)和兩個入口都是插件自身能力,可獨立使用;讀圖歸 modlens,插件複用的是它的識圖管線。

安裝與啓用

安裝命令:

dsh plugin --profile web add @paicat1/dsh-screenshot

安裝後重啓 dsh web 即可生效。經過上面的步驟,瀏覽器熱鍵和 modlens_screenshot 工具默認都已開啓。

典型用法

人工截圖給智能體看:

  1. Ctrl+Alt+S 進入選取(或 Ctrl+Shift+Alt+S 直接全屏)完成截圖;
  2. PNG 路徑自動插入 DSH 輸入框,同時複製到剪貼板;
  3. 發送消息,智能體按路徑讀取圖片。

想讓智能體自己看屏幕,直接在對話裏告訴它使用 modlens_screenshot 工具即可。

配置(可選)

插件提供兩個可選的 cordis 配置項,默認全部開啓:

route: false   # 關閉瀏覽器截圖路由
tool: false    # 關閉 modlens_screenshot 工具

如果需要顯式指定 modlens CLI 路徑,設置環境變量 MODLENS_DSH_CLI;不設置時默認探測 ~/.dsh/profiles/{web,headless}/node_modules/@liustack/modlens/dist/main.js

適用場景與注意

適合的場景:

  • Windows 上的 DSH web 用戶,想用熱鍵快速把屏幕內容交給智能體;
  • 需要智能體自主截屏、自查界面的工作流;
  • 希望截圖產出結構化內容(OCR/版面/語義)的場景,裝上 modlens 即可,未裝時截圖照常工作。

注意:

  • 插件僅支持 Windows,依賴 PowerShell System.Drawing.CopyFromScreen
  • 獨立運行的 PowerShell 窗口(conhost)被遮擋時無法穿透截圖,切到前臺或拖拽框選即可。
  • 插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證(本插件爲 MIT)。

小結

一套快捷鍵給人用,一個工具給 Agent 用,截圖只傳路徑、上下文乾淨,零依賴零二進制;需要讀圖時接上 modlens 即可,不裝也不影響截圖本身。倉庫與目錄頁:

  • GitHub:https://github.com/paicat1/dsh-screenshot
  • 插件目錄頁:https://www.skillhub.cn/plugins/paicat1/dsh-screenshot
羽毛球分组比赛记分
小程序二维码

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

小夜