前言¶
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 行,超出截断并在文中说明。
路径、附件与重试¶
- 递归扫描工具参数中的绝对路径(对象/数组最多 5 层,一次最多 8 个文件),只处理存在、非空且判定为图片或支持文档的文件。
attachmentIds: ["sha256:…"]会先换成附件库里的真实文件,再走同一流程;上传入库前也会做类型核对、BMP/TIFF 转 PNG、错标签修正。- 产物写入会话工作区的
.dsh-convert/:只换格式时沿用原名(如pic.bmp→pic.png),降过分辨率加_small(如photo.jpg→photo_small.jpg)。 - 若本轮已对图片压过尺寸,
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 描述,非虚构案例):
- 手机照片、截图、改过扩展名的图:直接拖入,过大则自动缩到限制内或修正类型。
- 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