@paicat1/dsh-screenshot: DSH Hotkey Screenshot and Agent Auto-Screenshot Plugin

前言

在 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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye