dsh-copy-image:把 DSH 对话里的图片一键复制到剪贴板

前言

DeepSeek Harness(DSH)在对话里能正常渲染图片,但内置灯箱只有遮罩、图片和关闭按钮。文字可以像普通网页一样选中复制,图片却没有「复制」入口,常见做法是先保存到磁盘再拖进别的软件。对经常要把模型生成的图贴进文档、聊天或设计工具的人来说,这一步很碎。

下面介绍社区插件 dsh-copy-image(维护者 447662,分类:客户端)。它在点击图片时替换原生灯箱,提供复制、保存、缩放和同条消息内翻页,并把复制路径做到在桌面壳里真正写入系统剪贴板。

这是什么

dsh-copy-image 是 DSH 的客户端插件:从已渲染的对话 transcript 里读取图片 URL,用独立全屏查看器展示,支持 PNG 复制与保存。插件以 MIT 许可发布,当前 package 版本为 0.2.0;SkillHub 目录页见 dsh-copy-image,源码与说明在 GitHub。

DSH 生态强调「一切皆插件」;SkillHub 是社区目录站点,与 DeepSeek / 幻方无官方从属关系。安装前建议自行查看仓库源码与许可证——插件随当前 DSH 进程权限运行。

核心功能

点击对话中的任意图片(左键),打开全屏查看器,工具栏包含:

控件 作用
复制 / Copy 将图片编码为 PNG 写入系统剪贴板
保存 / Save 下载为 PNG 文件
− / 1× / + 1×–8× 缩放;放大后支持滚轮缩放与拖拽平移
‹ / › 在同一条消息的多张图片之间翻页
✕ / Esc 关闭查看器

实现上,浮层不移动或重挂 DSH 的 DOM 节点,只在 document 上监听事件,界面绘制到独立的 body portal。README 说明这是为了避免 DSH 用 React 虚拟列表渲染对话时,重挂节点导致后续 removeChild 报错。

像素导出: 桌面壳通过 dsh-app://app 自定义协议加载 UI(secure: true、corsEnabled: true),允许 crossOrigin="anonymous" 等方式把图画到 canvas 再 toBlob。插件按顺序尝试 CORS 可见加载、fetch + blob: 解码、普通加载,以便在图源无 CORS 头时「保存」仍可用。

剪贴板写入: Electron 渲染进程里,navigator.clipboard.write 可能被会话级权限处理器静默拒绝。桌面路径下,渲染进程将 PNG 以 POST 发到宿主路由 /dsh-copy-image/copy,由宿主写临时文件并通过 PowerShell 调用 System.Windows.Forms.Clipboard.SetImage 写入剪贴板;纯浏览器 profile 无宿主路由时仍尝试 navigator.clipboard.write 作为兜底。

安装与启用

要求 DSH 内核 >= 0.1.7-rc.1;README 写明已在 0.2.1-rc.2 上验证。支持 desktop shell 或 web profile。

从 GitHub 安装(推荐):

dsh plugin --profile desktop add github:447662/dsh-copy-image

在 GUI 安装: 侧栏 Plugins → Add plugin(或「添加插件」),粘贴 github:447662/dsh-copy-image 并安装。

本地目录(开发):

dsh plugin --profile desktop add link:/absolute/path/to/dsh-copy-image

安装后须完全退出 DSH 再重新打开;仅关窗口不够,后台进程可能仍加载旧 bundle。

典型用法

  1. 安装并重启 DSH 后,在任意含图片的对话里左键点击图片。
  2. 在全屏查看器中点 复制,到目标应用里粘贴(应为 PNG 位图)。
  3. 需要文件时用 保存;同条消息多图时用 ‹ / › 切换。
  4. 放大后用滚轮与拖拽查看细节,Esc 或 ✕ 关闭。

仓库提供契约测试,可在插件目录执行:

node test/contract.cjs

README 称共 25 条断言,覆盖 loader 注册、对话图片识别(排除头像、侧栏图标等)、复制按钮 POST 宿主路由,以及关闭时浮层为 display:none 且 pointer-events:none 的回归检查。

适用场景与注意

适合: 在 DSH 桌面端或本地 web 里频繁把对话图片复制到剪贴板或另存 PNG 的用户;需要比原生灯箱多缩放、翻页能力时。

已知限制(来自 README):

  • SVG 图片会被跳过;可对原图使用浏览器右键另存。
  • 超大图按原分辨率重编码,复制可能较慢。
  • 插件替换原生灯箱而非叠加;卸载后恢复 DSH 默认行为。
  • 查看器不提供右键菜单;复制入口在工具栏。

隐私: 宿主半区仅注册本机回环路由 /copy、/ping;/copy 接收 PNG 字节、写临时文件、写入剪贴板后删除临时文件,不接受任意路径、不读其他文件、不发网络请求。浏览器半区只读 DSH 已渲染的图片地址。

0.2.0 修复摘要: 关闭查看器后曾仅用 opacity: 0 隐藏,全屏遮罩仍拦截点击导致页面「假死」,现改为关闭时 display: none + pointer-events: none;复制改为宿主侧写入;仅左键打开查看器,避免右键冻结。

结尾

dsh-copy-image 针对 DSH 对话图片「只能关、不能拷」的缺口,用可复制的查看器补全工作流。目录与详情:SkillHub;安装命令与实现说明以 GitHub README 为准。

羽毛球分组比赛记分
小程序二维码

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

小夜