前言¶
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 與實現說明):
- 全屏 / 多顯示器:
target=screen(默認)時截取多顯示器虛擬桌面。 - 按標題截窗口:
target=window時通過window_title做不區分大小寫的標題子串匹配。 - 遮擋窗口:使用
PrintWindow(PW_RENDERFULLCONTENT)讓窗口自繪,被其他窗口完全蓋住時仍可截到該窗口內容。 - GPU 應用空白幀:對 RustDesk、Chrome、Electron 等遮擋後可能返回空白的情況,採樣檢測後自動「臨時前置」窗口,用
CopyFromScreen兜底,截完再切回原前臺。 - 最小化窗口:自動還原 → 截圖 → 再縮回。
- 持久化與展示: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。