前言¶
DeepSeek Harness(DSH)對話輸入框的附件通道,瀏覽器側只接受 PNG、JPEG、WebP、GIF。dsh-client-ui-conversation 裏對 MIME 類型做了硬編碼白名單,拖入 TIFF、BMP、HEIC 等文件時,往往只會看到「不支持的圖片格式」。與此同時,原生界面也沒有通用的「選文件」入口,多數場景只能粘貼或拖放。
dsh-image-import(維護者 lindingkao)不改宿主源碼,而是在瀏覽器裏先於官方邏輯攔截這些文件,自行解碼並轉成 PNG 或 JPEG,再以原生拖放事件交回 Harness。對後端和對話邏輯來說,收到的仍是宿主本來就認識的圖片。社區目錄 SkillHub 將其歸類爲「趣味換裝」;倉庫當前星標爲 0,許可爲 MIT。
這是什麼¶
一句話:給 DSH Web 客戶端增加 BMP、TIFF、TGA、PCX、Netpbm、ICO、AVIF、SVG、HEIC、JPEG 2000、PSD 等格式的導入能力,輸出統一爲宿主可接受的 PNG/JPEG。
插件僅注入瀏覽器側(dsh.client.platform: web,注入點 @deepseek-ai/dsh-client-ui-conversation),版本 0.1.0。
核心功能¶
格式與解碼¶
| 格式 | 解碼方式 |
|---|---|
| TIFF(未壓縮 / LZW / PackBits / Deflate,1–16 位,灰度 / 調色板 / RGB / RGBA,含 Predictor 2) | 插件自帶解碼器 |
| TGA(未壓縮 / RLE,8/15/16/24/32 位,調色板與灰度) | 插件自帶解碼器 |
| PCX(8 位 1/3/4 平面、1 位多平面) | 插件自帶解碼器 |
| Netpbm(P1–P6,ASCII 與二進制) | 插件自帶解碼器 |
| BMP / ICO / AVIF / SVG / JPEG 2000 | 瀏覽器 createImageBitmap / <img> |
| HEIC / HEIF / PSD / RAW | 取決於當前瀏覽器是否內置解碼器;解不了會明確提示 |
輸出默認爲 PNG;無 alpha 且體積超過 4 MB 時自動改用 JPEG(質量 0.92)。單邊超過 4096 px 會等比縮小,避免撞上宿主的像素上限。
三條導入路徑¶
- 拖放:把圖片直接拖進輸入框。
- 粘貼:在支持粘貼文件的系統裏使用
Ctrl+V。 - 點按鈕:輸入框左下角工具條會多出圖片按鈕,可一次選擇多張。
轉換完成後,界面底部會提示「已轉換 N 張圖片爲 PNG」。
實現要點(只讀瞭解)¶
- 在 DOM 捕獲階段攔截 drop,先於
dsh-client-ui-attachment在document冒泡階段的監聽器。 - 用
new DataTransfer()裝入轉碼後的File,再向[data-composer-card]重派drop;帶__dshImageImportRerouted標記,避免二次轉換。 - 客戶端腳本由
tools/build.mjs內聯codec.js與bridge.js,避免在 Harness web bundle 裏出現import/export。
安裝與啓用¶
從 GitHub 安裝(推薦):
dsh plugin --profile <profile> add github:lindingkao/dsh-image-import
從本地目錄安裝(開發用):
dsh plugin --profile <profile> add /path/to/dsh-image-import
也可在 Harness 插件管理器裏通過 install_bundle 指向本倉庫目錄。插件只改瀏覽器側,安裝後需刷新頁面方能生效。
DSH 生態主張「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方並無官方從屬關係。
典型用法¶
裝好插件並刷新頁面後,任選一種方式把非常規格式圖片送進輸入框即可,無需額外配置項。一次最多轉換 8 張。若格式由瀏覽器解碼(如部分 HEIC/PSD),需以當前瀏覽器能力爲準;TIFF/TGA/PCX/Netpbm 由插件自解,不依賴瀏覽器。
適用場景與注意¶
適合誰:經常在 Harness 裏附圖、但素材來自設計工具、掃描儀或相機(TIFF、PSD、HEIC 等)的開發者或使用者。
運行權限:插件隨當前 DSH 進程在瀏覽器中執行,安裝前宜自行閱讀倉庫源碼與 MIT 許可證,確認行爲可接受。
已知限制(摘自 README):
- 可用格式上限仍受瀏覽器解碼能力約束。
- 輸出爲 PNG(無損)或 JPEG(有損);CMYK TIFF 等會按插件內 RGB 近似,可能與源文件有色差。