前言¶
在 DeepSeek Harness(DSH)里给对话附图,常见做法是先把图存成文件,再拖拽或从文件选择器挂到输入框。多一步「找文件」,在排查界面、贴日志截图时尤其打断思路。dsh-snap 是社区维护的客户端插件,在输入框工具栏(conversation.composer.dock)增加剪刀按钮:点一下、框选区域,PNG 直接进入附件区,不必再经系统截图工具保存再拖入。
这是什么¶
- 名称:
dsh-snap(npm 包名,GitHub:12138hao/dsh-snap) - 维护者:12138hao
- 分类:客户端(SkillHub 目录归类为客户端)
- 许可:MIT(
package.json与 README 一致) - 版本:资料中
package.json为0.1.0;安装以仓库当前 tag/分支为准
插件给 DeepSeek Harness 桌面端(web profile,走 webServer 路由)增加就地截图能力,与「只能拖拽或选文件附图」的默认行为互补。
核心功能¶
以下均来自项目 README,未在资料中出现的后处理能力不写进正文。
- 就地截图:剪刀按钮与添加附件控件并排,位于输入框工具栏。
- 框选交互:全屏压暗、拖动选区、实时显示宽 × 高;按
Esc取消本次截图。 - 自动附图:框选结束 PNG 进入输入框附件,可见缩略图。
- 本地 Win32 截屏:通过包内
bin/DshSnap.exe完成,不依赖浏览器getDisplayMedia,避免系统截屏权限弹窗链。 - DPI 感知:高缩放(150% / 200%)下整屏与坐标对齐。
- 零 npm 依赖:插件本体除 Node 内置模块外无第三方 npm 依赖。
环境要求(README 明确列出):
- Windows 10 / 11(
package.json中"os": ["win32"]) - DeepSeek Harness 桌面端(web profile)
- .NET 8 Desktop Runtime(截图程序为 WinForms 单文件 exe)
已知限制:
- 仅 Windows(Win32 + WinForms)
- 一次一张,无贴纸、标注、马赛克等后处理
- 截图过程为冻结画面,非实时预览
- 多显示器按虚拟桌面整屏截取
安装与启用¶
官方推荐从 GitHub 安装,命令须与 README 一致:
dsh plugin --profile <你的 profile> add git+https://github.com/12138hao/dsh-snap.git
若桌面端 profile 由 Electron 独占管理、上述命令被拒绝,可手动将包目录放入 <profile>/node_modules/dsh-snap,并在 <profile>/package.json 的 dsh.profile.bundles 中登记 "dsh-snap"(写 JSON 时不要带 BOM,否则宿主可能无法读取)。
本地目录方式(README 方式二):克隆仓库到固定位置后,同样放入 profile 的 node_modules 并登记 bundle,重启 DSH(已加载模块不会热替换),再 F5 刷新页面。
Node 引擎要求(package.json):^22.19.0 || >=24.0.0。
插件以当前 DSH 进程权限运行;安装前请自行查看源码与 MIT 许可证,确认可接受后再启用。
典型用法¶
- 在输入框工具栏找到剪刀图标。
- 单击 → 屏幕冻结并压暗。
- 按住左键拖出区域,松手。
- 截图自动出现在输入框附件区。
取消:截图过程中按 Esc。
可选配置(环境变量):
| 环境变量 | 说明 |
|---|---|
DSH_SNAP_EXE |
覆盖截图程序路径,默认使用包内 bin/DshSnap.exe |
截图临时文件目录固定为 ~/.dsh/snap/(含 snap.png、result.json)。
工作原理(便于排查)¶
页面点击剪刀后,宿主侧拉起 DshSnap.exe,结果经 web API 回到页面,再通过合成 drop 事件把 File 交给 Lexical 输入框的 onDrop,效果等价于手动拖入文件。
[页面] 剪刀按钮
│ POST /api/dsh-snap/start
▼
[宿主插件] 拉起 bin/DshSnap.exe
│ 冻结屏幕 → 框选 → 存 PNG 到 ~/.dsh/snap/snap.png
│ 同时写 result.json
▼
[页面] 轮询 /api/dsh-snap/poll → ready
│ GET /api/dsh-snap/file 取图
▼
[页面] 构造带 File 的 DataTransfer,向 contenteditable 派发 drop 事件
▼
DSH 的 onDrop 收到文件 → 变成输入框附件
路由摘要:
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/dsh-snap/start |
清掉上次结果并拉起截图程序 |
| GET | /api/dsh-snap/poll |
查询是否已截好 |
| GET | /api/dsh-snap/file |
返回 PNG |
| POST | /api/dsh-snap/done |
兼容旧版截图程序回调 |
需从源码重建 DshSnap.exe 时(README):
cd src
dotnet publish -c Release -r win-x64 -o ../bin
适用场景与注意¶
适合:在 Windows 上使用 DSH 桌面端、需要频繁把屏幕区域贴进对话(报错窗口、配置界面、终端输出等)的开发者;希望减少「截图 → 保存 → 找文件 → 拖入」步骤的用户。
注意:
- DSH 生态理念是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文介绍的插件来自社区仓库,非官方应用商店条目。
- 插件会启动本地 exe 并读写
~/.dsh/snap/,请在可信来源安装并核对12138hao/dsh-snap仓库内容。 - 非 Windows 平台当前无法使用(资料未提供其他 OS 支持说明)。
结尾¶
dsh-snap 把 QQ / 微信式的框选截图接到 DSH 输入框附件链路上,适合 Windows 桌面端日常贴图。目录与源码:
- SkillHub:https://www.skillhub.cn/plugins/12138hao/dsh-snap
- GitHub:https://github.com/12138hao/dsh-snap