前言¶
在 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 工具默认都已开启。
典型用法¶
人工截图给智能体看:
- 按
Ctrl+Alt+S进入选取(或Ctrl+Shift+Alt+S直接全屏)完成截图; - PNG 路径自动插入 DSH 输入框,同时复制到剪贴板;
- 发送消息,智能体按路径读取图片。
想让智能体自己看屏幕,直接在对话里告诉它使用 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