DSH Plugins Marketplace

DSH Plugins

Plugins

/

Development & Infrastructure

/

dsh-auto-convert

d

dsh-auto-convert

Manifest valid

Prepares files before read, read_image and the vision tools open them: downscales images over 2048 px or 8 MB (one retry at 1280 px within the same turn), converts BMP/TIFF to PNG, relabels mislabeled

hasBundlePatch

dsh-auto-convert

让 DeepSeek Harness 在动手之前,就把文件处理成自己能读的样子

License dsh

图太大就压小,格式怪就转掉,文档干脆变成 Markdown —— 全都发生在 read_image、vision_*、read 真正拿到文件之前。

dsh-auto-convert 是 DeepSeek Harness 的宿主插件。它不提供新命令,也不要求你换一种用法:手机拍的图、截图工具存的图、改过后缀的图,随手拖进对话框;Word 报告、Excel 台账、PPT 讲稿、PDF 论文,直接拖进来问。图能在这一轮被看见,文档能在这一轮被读懂——不用先自己开软件转一遍,也不用再补一句「帮我压一下」。

为什么需要它

DSH 读文件有三条硬门槛,撞上哪条都只能说「这个我看不了」:

报错 / 现象真正的原因
图太大 / 视觉后端超时长边几千像素,远超视觉模型的负载上限
仅支持 PNG、JPG、WebP、GIF 格式的图片上传时标的类型和真实字节对不上(IMAGE_TYPE_MISMATCH),或者格式根本不在这四类里
读文件报 binary file / 一屏乱码docx、xlsx、pptx、pdf 是二进制容器,read 把它们当文本只会读出噪声

第一条压一压就好,第二条要看是真不支持、还是只是名字写错了,第三条要先把文档拆成文字。

支持格式与处理链路

图片

输入什么时候动手输出
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、只是扩展名或 MIME 标错了(.png 里装 WebP 就是这么被打回的),只改类型标签,一个字节都不动。

文档

输入输出保留什么
.docxMarkdown标题层级、段落、列表、表格(管道表格)
.xlsxMarkdown每张工作表一张表,按 workbook.xml 的顺序
.pptxMarkdown一页一个二级标题,页面文字与表格
.pdf(有文字层)Markdown正文文字,按行还原
.csv / .tsvMarkdown管道表格
.html / .htmMarkdown标题、列表、链接、粗斜体、表格
.doc / .xls / .ppt、扫描件 PDF不动老二进制格式要 Office/LibreOffice,扫描件要 OCR,都不在本插件里

图片、图表、公式这些非文字内容不提取:转换只负责把文字与结构搬过去。Markdown 本身也表达不了字体、字号、颜色。

一轮里发生什么

flowchart LR
    A["拖进对话框 / 给一个本机路径"] --> B{"参数里是附件 id 吗"}
    B -- 是 --> C["换成附件库里的真实文件"]
    B -- 否 --> D["原路径"]
    C --> E["按字节认格式"]
    D --> E
    E -- 图片 --> F{"长边 > 2048 或 > 8MB 或格式不吃"}
    F -- 是 --> G["压到限制内 / 转 PNG"]
    F -- 否 --> H["原样"]
    E -- 文档 --> I["转成 Markdown 副本"]
    E -- 认不出 --> H
    G --> J["交给 read_image / vision_*"]
    I --> J
    H --> J
    J -- 图仍太大 --> K["同一轮降到 1280 再试一次"]
    K --> L["结论落进正文"]
    J --> L

它是怎么做到的

  1. 挂的是宿主 tools/execute 环绕钩子,不是某个具体工具:图片对 read_image、vision_*、read 都生效,文档只在 read 拿到路径时换成 Markdown(write、pwsh 这类工具仍然收到原路径)。工具本身不知道文件被换过,它只收到一个更小、或者已经是 Markdown 的副本。
  2. 按字节认格式(PNG / JPEG / GIF / WebP / BMP / TIFF / PDF / OOXML zip),不看扩展名——改过名的图也认得出;认不出的直接放行,不猜、不拦。
  3. 递归扫参数里的绝对路径(对象/数组最多 5 层、一次最多 8 个文件),只处理存在、非空、真的是图的文件;attachmentIds: ["sha256:…"] 先换成附件库里的真实文件再走同一流程。
  4. 图片降采样用 profile 里已经装好的 jimp,等比缩放,产物按「源文件 + mtime + 目标长边」缓存在系统临时目录。
  5. 文档转换是零依赖的:OOXML 就是 zip,用 node:zlib 解开后按 document.xml / sheet*.xml / slide*.xml 取结构;PDF 只捞文字层,遇到 CID 字体就解析 ToUnicode CMap 把字形码位还原成文字。不联网、不装 Python、不调 Office。
  6. 同一轮自动重试:只对「压过图、后端还是说太大」的 read_image / vision_* 生效,用 1280 px 再跑一次。文档不重试,读不出来就原样报错。
  7. 上传那道门也包住了:附件入库前按字节核对类型,标签错的改标签、BMP / TIFF 就地转 PNG、解不开的原样放行。

安装

需要 DeepSeek Harness 0.2.0 或更新版本。仓库里没有构建产物,装完即可用。

桌面端

打开 插件 → 添加插件,填入仓库地址,安装后重启一次桌面端(宿主插件只有重启才会加载):

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

Web / CLI

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

装完不用任何设置,插件默认全开。

配置

没有设置页,也没有配置文件。要改就改 lib/index.js 顶部这几个常量:

常量默认含义
MAX_SIDE2048长边超过这个像素就降采样
MAX_BYTES8 * 1024 * 1024体积超过这个值也降采样
RETRY_SIDE1280同一轮重试时用的长边
SUPPORTEDpng / jpeg / gif / webp宿主接受的四种图片格式
CONVERTIBLEbmp / tiff能就地转成 PNG 的格式
DOC_EXTdocx / xlsx / pptx / pdf / csv / tsv / htm / html能转成 Markdown 的文档

单个文档最多输出 40 万字符(lib/docs.js 的 MAX_MD),xlsx 单表最多前 500 行,超出会截断并在文件里留说明。

已知天花板

  • GIF 只剩第一帧:走 jimp 压过的动图会变成静图;不压的时候原样不动。
  • HEIC / AVIF 还是读不了:这两种要靠 sharp 或 libheif,仓库里没带,所以插件对它们只做到「不拦、不报错」。
  • 改名型 WebP 只改标签:宿主接受 WebP,所以不做转码;视觉后端不认 WebP 得自己转一份 PNG。
  • 扫描件 PDF 不 OCR:没有文字层的 PDF 转不出内容,插件会放行原文;要 OCR 得上专用插件。
  • 老 Office 二进制(.doc/.xls/.ppt)不支持:那是 OLE2 复合文档,纯 Node 解不干净,交给工具自己报错。
  • 只搬文字与结构:docx 里的图片、PDF 里的图表、公式都不会提取。
  • 临时文件不主动清理:压过的图和转好的 Markdown 落在系统临时目录里,交给操作系统回收。

开发

node test.mjs

自检覆盖字节嗅探、降采样、同一轮重试、附件 id 落地、格式转换、上传入库前的那层包装,以及 docx / csv / html 的转 Markdown 与缓存;跑完打印 all good。

License

MIT

Comments

Loading…

From the same category

awesome-dsh-plugin

by awesome-dsh-plugin

A curated list of plugins for DeepSeek Harness (dsh) · DeepSeek Harness 插件精选列表

Development & Infrastructure

★ 21.9k

CC0-1.0

Python

Nov 1, 2026

Index only — not installable

by 0xsline

DeepSeek Harness (DSH) ecosystem: curated plugins, tools, and infrastructure from dsh-external/hub and the public dsh-plugin topic.

Development & Infrastructure

★ 1.3k

CC0-1.0

Python

Oct 16, 2026

Index only — not installable

by Yuuyuko-uu

DSH 鱼的记忆:给会话一份会淡忘的长期记忆,每条都带时间

Development & InfrastructureMemory & ContextSessions & MessagesManifest valid

★ 453

MIT

JavaScript

Nov 1, 2026

dsh plugin --profile web add dsh-fish-memory

by SAOS-3624

Scene-aware storyboard for DeepSeek Harness: 9-16 numbered cells with timestamps + transcript + an audio envelope, packed into ONE image (384 tokens). Two tools: video_storyboard and video_zoom.

Tools & CapabilitiesVision & MultimodalDevelopment & InfrastructureManifest valid

★ 356

↓ 4.4k/wk

MIT

JavaScript

Nov 1, 2026

dsh plugin --profile web add dsh-video-storyboard

by uumit-ai

Open dsh web from your phone or another computer through a UUMit account, without running your own server or installing another program: a built-in tunnel client connects to UUMit's hosted tunnel, and

Tools & CapabilitiesDevelopment & InfrastructureTerminal & ClientsManifest valid

★ 308

↓ 303/wk

MIT

JavaScript

Oct 21, 2026

dsh plugin --profile web add @uumit-ai/dsh-uumit-remote

by xiajiajun516

DeepSeek Harness (DSH) backup & restore plugin — export, import, migrate and sync your complete DSH configuration, plugins, MCP servers, skills and workspace. One-click migration to another machine.

Development & InfrastructureManifest valid

★ 287

↓ 8.4k/wk

MIT

TypeScript

Nov 1, 2026

dsh plugin --profile web add dsh-config-manager