dsh-snip:DSH 输入框旁一键框选截图

前言

在 DeepSeek Harness(DSH)里和模型讨论界面、报错或日志时,经常要把屏幕上一块区域贴进对话。常见做法是 Alt+Tab 到系统截图工具,截完再切回 DSH 手动粘贴,步骤多,还容易把 DSH 窗口本身截进去。dsh-snip 是社区维护的 DSH 客户端插件:在输入框右侧增加「截图」入口,框选完成后图片进剪贴板并尽量自动贴进输入框;配合 MCP,模型还能读取最近一次截图做分析。下面介绍它的定位、组成、安装与用法。

这是什么

dsh-snip(GitHub:hezhaochao/dsh-snip,维护者 hezhaochao)面向 Windows 10/11 上的 DSH 用户。插件在对话输入框旁提供截图按钮,交互类似常见 IM 的框选截图:全屏遮罩、窗口边框高亮、拖拽选区,确认后 PNG 写入本机目录并同步到剪贴板;宿主侧还提供 MCP 工具,供模型读取最近截图或按坐标静默截屏。

许可为 MIT;package.json 中当前版本为 0.1.10。声明的 DSH 引擎范围为 >=0.2.0-rc.1 <0.3.0-0,README 记载已在 v0.2.1-rc.3 上完成安装、配置树与卸载验证。非 Windows 平台安装后按钮仍会出现,点击会返回明确的平台错误。

核心功能

客户端:输入框旁的截图按钮

客户端脚本 lib/client.js 在 conversation.input.right 插槽挂载「📸 截图」按钮,点击后向宿主发起 POST /dsh-snip/start。按钮旁 ▾ 菜单可切换「截图时隐藏 DSH 窗口」;该选项会记住,与 README 中描述的 QQ 同款行为一致。

交互层:框选与确认

交互由 scripts/snip-overlay.cs 编译出的独立 exe 完成(挂载时后台用系统 csc.exe 预热编译到 ~/.dsh/dsh-snip/,按源码哈希缓存)。主要行为包括:

  • 默认暂时隐藏 DSH 主窗口,避免截进自身;可在菜单中取消勾选以保留窗口。
  • 悬停高亮顶层窗口边框,单击选中整窗;按住左键拖拽自由框选(选区外压暗、蓝框、实时宽高),松手出现确认/取消工具条。
  • 回车、双击或点「确认」完成;点选区外可重新框选;ESC 取消。
  • 拖选超过 150 秒 会自动结束(超时兜底)。

确认后截图以 PNG 落在 ~/.dsh/dsh-snip/,图片写入剪贴板,并更新 last.json 记录最近一次路径与尺寸。

自动贴回输入框

确认后客户端上报输入框的屏幕坐标;宿主执行 scripts/paste.ps1:将 DSH 带回前台、原生点击输入框以恢复焦点,再发送系统级 Ctrl+V。README 说明这与 QQ/微信自动贴图机制相同;若偶发未贴上,图仍在剪贴板,可手动 Ctrl+V。排查时可查看 ~/.dsh/dsh-snip/paste-debug.log。

宿主路由与 MCP

宿主 lib/index.js 提供本地路由 POST /dsh-snip/start(等待拖选完成、取消或超时)与 GET /last,并挂载 MCP 桥接。模型侧工具名形如 mcp__snip__<名>:

工具 作用
last_screenshot 返回最近一次截图的 PNG 路径与尺寸,配合视觉能力分析刚截的图
take_screenshot 按 x,y,w,h 静默截取指定区域,无遮罩、不抢焦点,供模型观察屏幕

take_screenshot 会抓取遮罩以外的一切屏幕内容;README 提醒勿用于窥探他人屏幕。

隐私与本地存储

截图 PNG 仅保存在本机 ~/.dsh/dsh-snip/;不上传、不联网。需要时可手动删除该目录;PNG 不会进入 DSH 对话历史。

安装与启用

安装命令(来自官方 README):

dsh plugin --profile <你的 profile> add github:hezhaochao/dsh-snip

安装后需 完全退出 DSH(含托盘)再重启。插件以当前 DSH 进程权限运行,安装前建议在 GitHub 仓库阅读源码与 MIT 许可证,确认行为符合你的环境策略。

依赖方面:engines.node 为 >=20;需满足 peerDependencies 中的 @deepseek-ai/dsh-mcp-client 版本要求。多显示器在虚拟屏范围内支持;高 DPI 下坐标为物理像素。

典型用法

按 README 的可复现流程操作:

  1. 点输入框旁的「📸 截图」按钮。
  2. 如需保留 DSH 窗口入镜,在 ▾ 菜单取消勾选「截图时隐藏 DSH 窗口」。
  3. 在遮罩上点窗口或拖拽框选,确认选区。
  4. DSH 回到前台后,截图尽量自动进入输入框;未贴上时再 Ctrl+V。
  5. 使用视觉模型或视觉相关插件时,模型可通过 last_screenshot 读取刚截的图;需要模型自行观察屏幕某块区域时,可调用 take_screenshot 指定矩形。

首次挂载后后台会编译交互 exe(约 0.5–2 秒);编译完成前点击按钮会走 PowerShell 兜底,多 2–3 秒,功能不受影响。

适用场景与注意

适合:在 Windows 上使用 DSH,希望少切换外部截图工具、快速把界面片段贴进对话,并让 Agent 通过 MCP 引用最近截图或按区域静默抓屏的场景。

限制与注意(均来自 README「已知限制」与兼容性说明):

  • 窗口吸附基于顶层窗口枚举,无法像浏览器扩展那样精确到网页内部 DOM 节点。
  • 全屏独占游戏等场景遮罩可能被压到下层,不适合作为通用截图方案。
  • 框选底图为启动瞬间的冻结画面;跨显示器拖选在同一虚拟屏内可用。
  • 宿主通过进程名匹配 deepseek/harness/zcode/dsh 识别 DSH 主窗口;匹配失败时会静默跳过隐藏逻辑。

DSH 生态理念是「一切皆插件」;插件目录站 SkillHub 上的 dsh-snip 页 与 GitHub 仓库均为社区来源,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-snip 把框选截图、剪贴板与输入框粘贴收进 DSH 对话流,并用 MCP 把「最近一张图」和「按坐标静默截屏」暴露给模型。若你在 Windows 上常驻 DSH 做开发或排障,可按上文命令安装并在重启后从输入框旁按钮开始试用。

  • 目录页:https://www.skillhub.cn/plugins/hezhaochao/dsh-snip
  • 源码与完整说明:https://github.com/hezhaochao/dsh-snip
羽毛球分组比赛记分
小程序二维码

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

Xiaoye