dsh-image-import:在 Harness 里导入更多图片格式

前言

DeepSeek Harness(DSH)对话输入框的附件通道,浏览器侧只接受 PNG、JPEG、WebP、GIF。dsh-client-ui-conversation 里对 MIME 类型做了硬编码白名单,拖入 TIFF、BMP、HEIC 等文件时,往往只会看到「不支持的图片格式」。与此同时,原生界面也没有通用的「选文件」入口,多数场景只能粘贴或拖放。

dsh-image-import(维护者 lindingkao)不改宿主源码,而是在浏览器里先于官方逻辑拦截这些文件,自行解码并转成 PNG 或 JPEG,再以原生拖放事件交回 Harness。对后端和对话逻辑来说,收到的仍是宿主本来就认识的图片。社区目录 SkillHub 将其归类为「趣味换装」;仓库当前星标为 0,许可为 MIT。

这是什么

一句话:给 DSH Web 客户端增加 BMP、TIFF、TGA、PCX、Netpbm、ICO、AVIF、SVG、HEIC、JPEG 2000、PSD 等格式的导入能力,输出统一为宿主可接受的 PNG/JPEG。

插件仅注入浏览器侧(dsh.client.platform: web,注入点 @deepseek-ai/dsh-client-ui-conversation),版本 0.1.0。

核心功能

格式与解码

格式 解码方式
TIFF(未压缩 / LZW / PackBits / Deflate,1–16 位,灰度 / 调色板 / RGB / RGBA,含 Predictor 2) 插件自带解码器
TGA(未压缩 / RLE,8/15/16/24/32 位,调色板与灰度) 插件自带解码器
PCX(8 位 1/3/4 平面、1 位多平面) 插件自带解码器
Netpbm(P1–P6,ASCII 与二进制) 插件自带解码器
BMP / ICO / AVIF / SVG / JPEG 2000 浏览器 createImageBitmap / <img>
HEIC / HEIF / PSD / RAW 取决于当前浏览器是否内置解码器;解不了会明确提示

输出默认为 PNG;无 alpha 且体积超过 4 MB 时自动改用 JPEG(质量 0.92)。单边超过 4096 px 会等比缩小,避免撞上宿主的像素上限。

三条导入路径

  1. 拖放:把图片直接拖进输入框。
  2. 粘贴:在支持粘贴文件的系统里使用 Ctrl+V。
  3. 点按钮:输入框左下角工具条会多出图片按钮,可一次选择多张。

转换完成后,界面底部会提示「已转换 N 张图片为 PNG」。

实现要点(只读了解)

  • 在 DOM 捕获阶段拦截 drop,先于 dsh-client-ui-attachment 在 document 冒泡阶段的监听器。
  • 用 new DataTransfer() 装入转码后的 File,再向 [data-composer-card] 重派 drop;带 __dshImageImportRerouted 标记,避免二次转换。
  • 客户端脚本由 tools/build.mjs 内联 codec.js 与 bridge.js,避免在 Harness web bundle 里出现 import/export。

安装与启用

从 GitHub 安装(推荐):

dsh plugin --profile <profile> add github:lindingkao/dsh-image-import

从本地目录安装(开发用):

dsh plugin --profile <profile> add /path/to/dsh-image-import

也可在 Harness 插件管理器里通过 install_bundle 指向本仓库目录。插件只改浏览器侧,安装后需刷新页面方能生效。

DSH 生态主张「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方并无官方从属关系。

典型用法

装好插件并刷新页面后,任选一种方式把非常规格式图片送进输入框即可,无需额外配置项。一次最多转换 8 张。若格式由浏览器解码(如部分 HEIC/PSD),需以当前浏览器能力为准;TIFF/TGA/PCX/Netpbm 由插件自解,不依赖浏览器。

适用场景与注意

适合谁:经常在 Harness 里附图、但素材来自设计工具、扫描仪或相机(TIFF、PSD、HEIC 等)的开发者或使用者。

运行权限:插件随当前 DSH 进程在浏览器中执行,安装前宜自行阅读仓库源码与 MIT 许可证,确认行为可接受。

已知限制(摘自 README):

  • 可用格式上限仍受浏览器解码能力约束。
  • 输出为 PNG(无损)或 JPEG(有损);CMYK TIFF 等会按插件内 RGB 近似,可能与源文件有色差。

延伸阅读

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

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

小夜