前言¶
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。