前言¶
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