前言¶
DSH 的核心理念是「一切皆插件」。在 attachments 服務入口 saveImages 中,若上傳圖片觸發了原有準入限制(長邊 >2000px、單圖 >3.5MB 或像素 >4000 萬),系統會直接拒絕。這導致用戶上傳手機原圖時體驗極差,經常因合規性被攔截。
本插件在入庫前攔截這些超限圖片,利用 sharp 進行自動降級,確保入庫後圖片恆滿足准入限制,模型請求、vision-bridge 和歷史導出均能拿到合規文件。
插件定位¶
- 名稱:dsh-attachment-downscale
- 一句話:DSH 插件:圖片附件超限自動降級(長邊 ≤2000px / 單圖 ≤3.5MB / 像素 ≤4000 萬)
- 維護者:zoumutou
- 類別:工作流
- 許可證:MIT
核心功能¶
插件在 saveImages 入口對圖片進行處理,具備以下能力:
- 超尺寸自動等比縮放:優先將長邊縮放至 2000px 以內。
- 重編碼壓縮:若縮放後仍超限,對 jpeg/webp 格式進行降質處理(質量階梯)。
- 格式兜底:若重編碼失敗,自動轉爲 webp 格式。
- 跳過動圖:多幀動圖(GIF/WebP)直接跳過,避免破壞動畫效果。
- 錯誤容錯:處理失敗時,直通原准入邏輯(維持原拒絕行爲),絕不吞掉錯誤。
- 結果合規:入庫後圖片恆滿足准入限制。
安裝與啓用¶
插件依賴 @deepseek-ai/cordis 和 sharp。
本地開發構建:
npm run build
裝入 web profile(熱生效,無需重啓):
dev_install_package /Users/zoumutou/coded/dsh-attachment-downscale web
生產環境安裝:
dsh plugin --profile web add github:zoumutou/dsh-attachment-downscale
配置說明¶
插件支持通過 config 字段調整行爲:
- insert:
- name: dsh-attachment-downscale
config:
enabled: true # 關閉後恢復原拒絕行爲
quality: 82 # 重編碼質量(jpeg/webp)
# 以下缺省值跟隨 attachments 服務自身的准入限制:
# maxImageDimension: 2000
# maxImageBytes: 3670016
# maxImagePixels: 40000000
生態與市場¶
- 依賴環境:運行於 DSH 進程內,需確保環境包含
@deepseek-ai/cordis和sharp。 - 市場收錄:npm 包需包含
dsh-plugin關鍵詞,GitHub 倉庫需打dsh-plugin話題標籤,社區市場(dsh-suite 或獨立市場)會自動收錄,無需手動提 PR。 - 包發佈:執行
npm pack可生成.tgz文件。
結尾¶
該插件通過在 saveImages 入口進行預處理,解決了嚴格准入規則與用戶上傳行爲之間的衝突,保證了下游系統處理的圖片始終合規。完整目錄與源碼可參考下方鏈接。