dsh-snap:在 DeepSeek Harness 输入框里就地截图并附图

前言

在 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 许可证,确认可接受后再启用。

典型用法

  1. 在输入框工具栏找到剪刀图标。
  2. 单击 → 屏幕冻结并压暗。
  3. 按住左键拖出区域,松手。
  4. 截图自动出现在输入框附件区。

取消:截图过程中按 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
羽毛球分组比赛记分
小程序二维码

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

小夜