dsh-auto-convert:在 DSH 读文件之前自动压图、转格式、文档转 Markdown

前言

DeepSeek Harness(DSH)里要让模型「看见图、读懂文档」,常见做法是事先用别的软件压图、转 PDF、导出 Markdown,再在对话里附上处理后的路径。DSH 本身对图片尺寸与格式、对 Office 与 PDF 等二进制容器也有硬门槛:图过大或类型不匹配会直接失败,read 把 docx 当文本只会得到乱码。下面介绍宿主插件 dsh-auto-convert(维护者 yimengsuper2432,分类:工作流):它不增加新命令,在 read_image、vision_*、read 真正拿到文件之前,按字节识别类型并做预处理,使同一轮对话里拖入的附件更容易被读完。

这是什么

dsh-auto-convert 是 DSH 的宿主插件,挂在 tools/execute 的环绕钩子上。图片路径会在读图相关工具执行前被替换为合规或更小的副本;文档仅在 read 拿到路径时换成 Markdown 副本,write、pwsh 等仍收到原路径。文档转换部分为零依赖(不联网、不装 Python、不调 Office);图片降采样使用 profile 里已有的 jimp。仓库当前版本为 0.7.0(见 package.json),许可证 MIT,要求 DeepSeek Harness 0.2.0 或更新、Node >=18。

社区目录页:https://www.skillhub.cn/plugins/yimengsuper2432/dsh-auto-convert(独立站点,与 DeepSeek / 幻方无官方从属关系)。源码:https://github.com/yimengsuper2432/dsh-auto-convert。

它解决的三类门槛

README 把 DSH 读文件时的典型现象与原因对应如下,插件针对前两类做自动处理,第三类用转 Markdown 应对:

报错 / 现象 原因
图太大 / 视觉后端超时 长边远超视觉模型负载
仅支持 PNG、JPG、WebP、GIF 扩展名或 MIME 与真实字节不一致,或格式不在四类内
binary file / 乱码 docx、xlsx、pptx、pdf 等为二进制容器,不能直接当文本读

核心功能

图片

处理发生在工具读文件之前;按字节认格式,不看扩展名。

输入 何时处理 输出
PNG / JPEG / GIF / WebP 长边 > 2048 px 或体积 > 8 MB 缩到 2048 px 内:无透明 → JPG(q88),有透明 → PNG
BMP / TIFF 一律(读图工具不支持) PNG
HEIC / AVIF / PSD / RAW / SVG 不处理 原样放行,由下游工具报错
已合规的小图 不处理 原文件,不重编码

若真实内容为 PNG / JPEG / GIF / WebP 但标签错误,插件只修正类型标签,不改字节。GIF 若经 jimp 压过会只剩第一帧;不压则保持原样。

文档

转成 Markdown 副本供 read 使用;不提取文档内嵌的图片、图表、公式,也不保留字体字号颜色。

输入 输出 说明
.docx Markdown 标题、段落、列表、管道表格
.xlsx Markdown 每 sheet 一张表,顺序按 workbook.xml
.pptx Markdown 每页二级标题 + 页内文字与表格
有文字层的 .pdf Markdown 按行还原正文;含 CID 字体时解析 ToUnicode
.csv / .tsv Markdown 管道表格
.html / .htm Markdown 标题、列表、链接、粗斜体、表格
.doc / .xls / .ppt、扫描件 PDF 不处理 需 Office/LibreOffice 或 OCR,不在本插件范围

单文档 Markdown 输出上限 40 万字符(lib/docs.js 的 MAX_MD);xlsx 单表最多 500 行,超出截断并在文中说明。

路径、附件与重试

  1. 递归扫描工具参数中的绝对路径(对象/数组最多 5 层,一次最多 8 个文件),只处理存在、非空且判定为图片或支持文档的文件。
  2. attachmentIds: ["sha256:…"] 会先换成附件库里的真实文件,再走同一流程;上传入库前也会做类型核对、BMP/TIFF 转 PNG、错标签修正。
  3. 产物写入会话工作区的 .dsh-convert/:只换格式时沿用原名(如 pic.bmp → pic.png),降过分辨率加 _small(如 photo.jpg → photo_small.jpg)。
  4. 若本轮已对图片压过尺寸,read_image / vision_* 仍报过大,同一轮会用长边 1280 px 再试一次;文档不重试。

安装与启用

需要 DSH 0.2.0+。仓库无单独构建步骤,安装后宿主插件需重启 DSH 桌面端才会加载。

桌面端:打开 插件 → 添加插件,填入仓库地址,安装后重启:

https://github.com/yimengsuper2432/dsh-auto-convert.git

Web / CLI:

dsh plugin --profile desktop add github:yimengsuper2432/dsh-auto-convert

装完无设置页、无配置文件,默认全开。若要改阈值,需编辑 lib/index.js 顶部常量(见下表),属于改源码而非官方配置项。

常量 默认 含义
MAX_SIDE 2048 长边超过则降采样
MAX_BYTES 8 * 1024 * 1024 体积超过则降采样
RETRY_SIDE 1280 同一轮重试长边
SUPPORTED png / jpeg / gif / webp 宿主接受的图片格式
CONVERTIBLE bmp / tiff 可转 PNG 的格式
DOC_EXT docx / xlsx / pptx / pdf / csv / tsv / htm / html 可转 Markdown 的扩展名

典型用法

用法与未装插件时相同:把本机路径或附件拖进对话框,让模型用 read、read_image 或 vision_* 处理即可。插件在后台替换路径,工具收到的是更小/已转格式的图或 Markdown 副本。

示例场景(来自 README 描述,非虚构案例):

  1. 手机照片、截图、改过扩展名的图:直接拖入,过大则自动缩到限制内或修正类型。
  2. Word 报告、Excel 台账、PPT、带文字层的 PDF、csv/html:拖入后 read 读到的是 .dsh-convert/ 下生成的 Markdown,无需事先手动导出。

不建议把 <工作区>/.dsh-convert/ 提交进 Git;不同目录下同名文件会共用同一产物文件名(后写覆盖先写)。

适用场景与注意

适合:在同一轮 DSH 对话里频繁附带大图、BMP/TIFF、Office 新格式或文字层 PDF,希望少做手工预处理的工作流。

务必知晓:

  • 插件以当前 DSH 进程权限读写工作区与 .dsh-convert/;安装前请阅读源码与 MIT 许可证,确认符合你的安全策略。
  • 扫描件 PDF、老 .doc/.xls/.ppt、HEIC/AVIF 等不在能力范围内或仅放行不转换。
  • 视觉后端若不接受 WebP,改名型 WebP 只改标签时可能仍需自行转 PNG。
  • 产物不自动清理,不需要时可删除整个 .dsh-convert/ 目录。

维护者提供的自检命令:

node test.mjs

跑通后终端应打印 all good(需在克隆后的仓库目录执行;本文不展开 clone 步骤)。

结尾

dsh-auto-convert 把「压图、转 PNG、Office/PDF 转 Markdown」收到 DSH 工具执行前,零依赖处理文档、复用 profile 里的 jimp 处理图片,装完即用。若要查看简介与分类,可打开 SkillHub 目录页;细节与已知限制以 GitHub README 为准。

  • 目录页:https://www.skillhub.cn/plugins/yimengsuper2432/dsh-auto-convert
  • 仓库:https://github.com/yimengsuper2432/dsh-auto-convert
羽毛球分组比赛记分
小程序二维码

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

小夜