前言¶
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。
典型用法¶
- 安装并重启 DSH 后,在任意含图片的对话里左键点击图片。
- 在全屏查看器中点 复制,到目标应用里粘贴(应为 PNG 位图)。
- 需要文件时用 保存;同条消息多图时用 ‹ / › 切换。
- 放大后用滚轮与拖拽查看细节,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 为准。