dsh-plugin-screenshot:讓 DSH 會話裏的模型真正「看見」屏幕

前言

DeepSeek Harness(DSH)在「電腦使用」場景裏預留了工具能力位,但桌面宿主並未自帶本機截屏。開發者在調試 UI、對照報錯窗口、或讓模型根據當前界面給建議時,往往只能口述或手動貼圖,會話無法直接讀取屏幕狀態。

下面介紹社區插件 dsh-plugin-screenshot(維護者 HsgtLgt)。它在 Windows 上向 Cordis 註冊名爲 screenshot 的工具,模型調用後既能拿到工作區內的 PNG 路徑,也能通過 DSH 原生圖像塊看到畫面。SkillHub 目錄將其歸類爲「模型推理」;截至撰寫時 GitHub 星標爲 0,許可證爲 MIT,當前包版本爲 0.0.5。

這是什麼

dsh-plugin-screenshot 是面向 DeepSeek Harness(Windows 宿主)的截圖工具插件。一句話定位:截取整個虛擬桌面或按窗口標題匹配的單窗口,保存爲 PNG,並以附件形式回傳給會話中的模型與用戶。

與僅用 CopyFromScreen 的常見做法相比,本插件針對遮擋、最小化、部分 GPU 應用空白幀等場景做了額外處理(詳見後文「能力對照」)。

核心功能

插件在運行時註冊 screenshot 工具,主要能力如下(均來自項目 README 與實現說明):

  1. 全屏 / 多顯示器:target=screen(默認)時截取多顯示器虛擬桌面。
  2. 按標題截窗口:target=window 時通過 window_title 做不區分大小寫的標題子串匹配。
  3. 遮擋窗口:使用 PrintWindow(PW_RENDERFULLCONTENT) 讓窗口自繪,被其他窗口完全蓋住時仍可截到該窗口內容。
  4. GPU 應用空白幀:對 RustDesk、Chrome、Electron 等遮擋後可能返回空白的情況,採樣檢測後自動「臨時前置」窗口,用 CopyFromScreen 兜底,截完再切回原前臺。
  5. 最小化窗口:自動還原 → 截圖 → 再縮回。
  6. 持久化與展示:PNG 寫入會話工作區;同時經 ctx.attachments.saveImage() 校驗/降採樣後進入 DSH 附件庫。工具描述中約定:用戶點名某應用時必須用 window 模式;成功後模型應用 ![截圖](<路徑>) 內嵌展示。

能力對照(普通 CopyFromScreen vs 本插件)

場景 普通 CopyFromScreen dsh-plugin-screenshot
窗口在屏幕上可見 支持 支持
窗口被其他窗口完全遮擋 截到的是上層內容 支持(PrintWindow)
GPU 渲染應用遮擋後空白幀 — 採樣 + 臨時前置兜底
窗口最小化 不支持 支持(還原後截再縮回)
縮到托盤(無渲染表面) 不支持 明確報錯並提示先喚起
遠程桌面窗口(RustDesk / ToDesk 等) 不穩定 README 稱實測可用

環境與依賴

  • 平臺:Windows 10 及以上(README 徽章寫明 Windows 10+)。
  • DSH / Cordis:要求 DeepSeek Harness ≥ 0.2.0;對等依賴 @deepseek-ai/dsh-tools、@deepseek-ai/cordis(^0.2.0-rc.2)由運行時樹提供,無需在插件目錄單獨安裝。
  • 實現:無額外原生依賴包,通過 PowerShell 調用 user32 與 System.Drawing。
  • 模型側:需支持圖像輸入,否則工具返回的圖像塊無法被模型利用。

安裝與啓用

官方 README 給出的安裝方式爲先克隆倉庫,再在 DSH 插件管理(plugin_manager)中安裝本地 bundle。步驟如下。

1、克隆插件倉庫(PowerShell):

git clone https://github.com/HsgtLgt/dsh-plugin-screenshot.git

2、在 plugin_manager 中執行 install_bundle,路徑指向克隆目錄下的插件根(注意 file: 前綴與完整路徑):

file:<克隆目錄>/dsh-plugin-screenshot

3、重啓 DSH 應用使插件生效。

社區目錄頁:https://www.skillhub.cn/plugins/HsgtLgt/dsh-plugin-screenshot。SkillHub 爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係;安裝前請自行查閱源碼與 MIT 許可證,並知悉插件以當前 DSH 進程權限運行。

工具參數

參數 類型 說明
target screen | window 截圖目標,默認 screen
window_title string target=window 時用於標題子串匹配
output_path string 可選;相對會話工作區。默認 screenshots/screenshot-<時間戳>.png

典型用法

模型在會話中調用 screenshot 即可;開發者無需單獨寫 HTTP 接口。示意性參數組合如下。

截全屏(默認):

{
  "target": "screen"
}

截標題包含某關鍵字的窗口(用戶明確提到某個應用時應使用 window):

{
  "target": "window",
  "window_title": "Visual Studio Code"
}

指定保存路徑(相對工作區):

{
  "target": "screen",
  "output_path": "screenshots/debug-ui.png"
}

調用鏈概要:解析 output_path → 子進程 PowerShell 匹配 HWND、處理最小化/PrintWindow/空白兜底 → 寫 PNG → 讀回字節 → 附件庫持久化 → 返回路徑與圖像塊。

適用場景與注意

適合誰:在 Windows 上使用 DSH、希望模型參與「看屏幕再決策」的智能體或本地助手場景;分類上目錄歸入「模型推理」,本質是向模型提供視覺輸入的工具插件。

已知限制(README 原文):

  • GPU 硬件渲染的窗口若長期被遮擋,偶可能拿到過期幀(非空白但內容舊),重截一次即可。
  • 從未渲染過內容的隱藏/托盤窗口沒有可截表面,會明確報錯。
  • 僅支持 Windows;不支持的其他平臺請勿安裝。

安全與信任:插件會啓動 PowerShell、操作窗口 Z 序與屏幕像素;安裝前請閱讀 GitHub 倉庫 中 lib/index.js 與 bundle 配置,確認符合你的環境策略。

結尾

dsh-plugin-screenshot 填補了 DSH Windows 桌面宿主缺少一等公民截屏工具的空位,並把遮擋、最小化、部分 GPU 空白幀等實際問題納入實現。若你的會話需要模型「看見」本機界面,可按上文在 plugin_manager 安裝 bundle 並重啓 DSH。

羽毛球分组比赛记分
小程序二维码

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

小夜