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
羽毛球分组比赛记分
小程序二维码

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

小夜