READMESource: main@b3f78d59
dsh-snip 📸 快速截图
一个 DeepSeek Harness(DSH)插件: 输入框旁的「📸 截图」按钮——像豆包一样一键框选截图,不用再开本地截图工具。 截完图片自动进剪贴板,Ctrl+V 直接贴进对话;模型还能用 MCP 工具读最近的截图帮你分析。
用法
- 点输入框旁的「📸 截图」按钮
- DSH 窗口自动暂时隐藏(不会截到自己),屏幕变暗
- 拖框选区(ESC 取消)→ 松手完成
- DSH 窗口自动恢复,提示「✅ 已进剪贴板——Ctrl+V 粘贴到输入框」
- 粘贴后模型就能看到图(配合视觉模型/视觉插件)
组成
客户端 lib/client.js
「📸 截图」按钮(conversation.input.right 插槽)→ POST /dsh-snip/start
宿主 lib/index.js
本地路由 POST /dsh-snip/start(等待拖选完成/取消/超时)+ GET /last
+ 挂载 MCP 桥接(模型工具)
PowerShell scripts/snip.ps1(-STA)
全屏半透明遮罩 + 橡皮筋选框 + ESC 取消
→ CopyFromScreen 抓屏 → PNG 落盘 ~/.dsh/dsh-snip/ + 图片写剪贴板
→ 记录 last.json(路径/尺寸/时间)
MCP mcp/server.mjs
last_screenshot 最近一次截图的 PNG 路径与尺寸(配视觉工具"看图")
take_screenshot 静默截指定区域(x,y,w,h,无遮罩,模型自助观察屏幕用)
安装
dsh plugin --profile <你的 profile> add github:hezhaochao/dsh-snip
安装后完全退出 DSH(含托盘)再重启。要求 Windows 10/11。
为什么完成后还要按一次 Ctrl+V
DSH 的对话输入是网页环境,浏览器安全沙箱不允许插件替用户模拟粘贴。 这是与豆包(原生应用可自动插入)唯一的差别——截图本身已经进了剪贴板, Ctrl+V 是你的最后一个动作。
给模型的两个 MCP 工具(mcp__snip__<名>)
| 工具 | 作用 |
|---|---|
last_screenshot |
最近一次截图的 PNG 路径 + 尺寸——配视觉工具即可"看"你刚截的图并分析 |
take_screenshot |
模型自助静默截屏(指定 x,y,w,h 区域),用于观察屏幕状态;无遮罩、不抢焦点 |
隐私与行为
- 截图 PNG 只存在本机
~/.dsh/dsh-snip/;last.json只记最近一次的路径与尺寸 - 不上传、不联网;截图后想删就手动删目录,或不管它(PNG 不进任何历史)
- 框选期间 DSH 窗口被暂时隐藏(截完自动恢复并抢回前台);找不到窗口时静默跳过
- 截图有 120 秒超时兜底(拖选太久不选会自动结束)
兼容性
- 声明
engines.dsh: ">=0.2.0-rc.1 <0.3.0-0",已在 v0.2.1-rc.3(当前最新版)上 完成安装 / 配置树组合 / 卸载验证 - 多显示器支持(遮罩覆盖整个虚拟屏);高 DPI 下坐标为物理像素
- 非 Windows:按钮安装后仍会出现,点击返回明确的平台错误
开发与测试
git clone https://github.com/hezhaochao/dsh-snip.git
cd dsh-snip
npm test # MCP 协议层(隔离 USERPROFILE)
npm run test:snip # 截图脚本真实 E2E:-Rect 抓屏/PNG 尺寸/last.json/剪贴板图片(仅 Windows)
.ps1 必须保持 UTF-8 with BOM(PowerShell 5.1 编码坑,真机踩过)。
本地真机验证插件挂载:
dsh plugin --profile zz-test add link:"<本仓库绝对路径>"
dsh --profile zz-test --dump-config # 应能看到 id: snip-button 条目
已知限制
- 框选遮罩期间其他显示器同属一个虚拟屏,跨屏拖选没问题,但遮罩是纯色层(不含屏幕底图)
- 个别全屏独占游戏上遮罩可能被压到下面——这类场景本就不适合网页式截图
take_screenshot抓屏包含遮罩以外的一切内容,请勿用于窥探他人屏幕
许可
MIT © hezhaochao
No comments yet. Be the first to write one.