在 DSH 生态中,视觉交互是智能体开发的重要一环。获取屏幕截图并直接反馈给 Agent,通常需要跨应用操作和手动整理,流程容易中断。这个插件将截图功能直接集成到对话输入框,提供类似微信的框选体验,减少手动步骤。
插件由 deepseekbluefish 维护,定位为 DSH 中的“微信式”截图工具。它通过在输入框左侧添加 ✂ 按钮,允许用户拖拽框选区域,自动编号 PNG 文件,并将包含时间戳的标记 [Shot N HH:mm] 填入输入框。
安装¶
使用官方命令安装插件。安装完成后,重启 DSH 或对应的客户端,输入框左侧会出现 ✂ 按钮。
dsh plugin --profile web add github:deepseekbluefish/dsh-screenshot-plugin
核心功能¶
插件提供了一套完整的截图交互流程:
- 拖动框选:点击按钮后屏幕变暗,拖动鼠标框选目标区域。
- 交互微调:松手后选区保留。用户可以拖动选区本身,或拖动选区四角/四边的 8 个手柄进行缩放。
- 确认与取消:双击选区或按 Enter 键确认截取;按 Esc 取消。
- 自动编号与标记:截图保存为
截屏N_HHmm.png(N 为序号),同时自动在输入框插入纯 ASCII 标记[Shot N HH:mm]。
配置¶
默认情况下,截图文件保存于 ~/Pictures/DSH-Screenshots。如果需要更改目录,可以通过 profile 补丁覆盖配置。
创建或编辑 ~/.dsh/profiles/<name>/cordis.patch.yml:
- id: screenshot
config:
folder: 'D:\MyScreenshots'
典型用法¶
- 在对话界面点击输入框左侧的 ✂ 按钮,屏幕变暗。
- 拖动鼠标框选区域。松手后,选区会保持高亮,此时可以调整位置或大小。
- 双击选区(或按下 Enter 键)确认截取。
- 输入框内会自动出现
[Shot N HH:mm]标记。 - 点击发送,将标记发给 Agent。配合视觉插件(如 ModLens),Agent 可根据标记中的编号与时间定位对应的 PNG 文件。
工作原理¶
插件分为客户端、宿主和截屏脚本三个部分:
- 客户端:注册到
conversation.input.left插槽,点击后发起POST /api/screenshot/capture请求。 - 宿主:注册
webServer路由,调用 PowerShell 启动全屏遮罩层。遮罩层使用 WinForms 实现,包含绿色边框、8 个缩放手柄及操作提示。 - 截屏脚本:使用
CopyFromScreen进行区域裁剪。脚本为纯 ASCII 源码,以避免编码问题。 - 标记填充:标记通过
props.inputActions→sessions.provideInfo(...).props.inputActions→session.prompt(..., 'queue')的优先级链路写入输入框。
限制与注意事项¶
- 平台限制:插件仅支持 Windows,依赖 Windows PowerShell 和 System.Drawing 库。
- 前台操作:按钮点击与框选过程需要在应用前台进行。
- 多显示器:多显示器环境下,框选基于虚拟屏整体坐标计算。
- Agent 读取:Agent 需要配置视觉引擎(如 ModLens)才能读取截图文件。
总结¶
该插件通过模拟微信的截图交互,解决了在 DSH 中快速截图并同步给 Agent 的痛点。安装简单,配置灵活,适合需要在对话中频繁使用视觉反馈的开发者。