dsh-image-bridge:將圖片轉爲文字描述,讓純文本模型也能“看見”圖片

前言

DeepSeek Harness (DSH) 採用插件化架構,擴展行爲通常通過掛載鉤子實現。在 Web GUI 的交互場景中,用戶經常會附加圖片。如果底層模型是純文本模型(例如 DeepSeek),這些圖片會被系統默認忽略,導致模型無法理解視覺內容。dsh-image-bridge 插件通過攔截消息組裝前的鉤子,利用視覺模型將圖片轉爲文字描述,再注入對話,從而讓純文本模型具備“看圖”能力。

插件介紹

dsh-image-bridge 是一個 DSH 插件,由 Seryta 維護,遵循 MIT 許可證。它主要解決的問題是:當模型不支持圖片輸入時,自動將 Web GUI 中的圖片通過視覺模型(默認使用智譜 GLM-4V-Flash)轉錄爲文字,並替換原圖片塊進入對話流程。

核心功能

該插件在 agent/pre-step 鉤子處運行,核心能力包括:

  1. 攔截與重寫:攔截 agent/pre-step 瀑布事件,讀取消息中的圖片內容塊({ type: 'image', attachment: ImageAttachmentRef }),通過 ctx.attachments.readImage 取出圖片字節。
  2. 自動轉錄:將圖片轉爲文字描述,並替換原圖片塊爲 [圖片描述] 文本塊。
  3. 緩存機制:使用 attachmentId 作爲緩存鍵,記錄已識別的圖片描述。同一張圖片在後續步驟中不再重複識別(緩存上限 100,FIFO 淘汰)。失敗結果不緩存。
  4. 韌性策略:
    • 單模型重試:遇到 429/503 錯誤時,進行指數退避重試(默認額外 2 次:1s、2s)。
    • 模型回退:遇到 404 或重試耗盡(5xx),自動切換到下一個備選模型(默認鏈:glm-4.6v-flash → glm-4.1v-thinking-flash → glm-4v-flash)。
    • 失敗降級:全部嘗試失敗後,將圖片塊替換爲 [圖片識別失敗] 文本,避免觸發 UNSUPPORTED_CONTENT 導致整輪對話失敗。
  5. 限制與防護:
    • 限制圖片體積(默認 10MB)和分辨率(默認 40MP),超限直接報錯。
    • 處理 content parts 數組健壯性,網關返回 [{text}] 數組時按序拼接。
    • 剝離 thinking 模型的 </tool_call> 推理塊。
  6. 遞歸處理:支持 tool-result 嵌套圖片的遞歸轉錄。

安裝與啓用

安裝命令如下:

dsh plugin --profile web add github:Seryta/dsh-image-bridge

安裝完成後,重啓 dsh web 進程即可生效。

配置說明

插件支持通過環境變量進行配置,主要包括模型選擇、重試策略、限流設置等:

配置項 環境變量 默認值 說明
主模型名 IMAGE_BRIDGE_MODEL glm-4v-flash 用於圖片轉錄的視覺模型
回退模型鏈 IMAGE_BRIDGE_FALLBACKS glm-4.6v-flash,glm-4.1v-thinking-flash,glm-4v-flash 逗號分隔,依次嘗試
重試次數 IMAGE_BRIDGE_RETRIES 2 單模型在 429/503 上的額外重試次數
描述語言 IMAGE_BRIDGE_LOCALE zh zh 中文 / 其他英文
圖片字節上限 IMAGE_BRIDGE_MAX_IMAGE_BYTES 10485760 超限直接失敗,不自動壓縮
圖片像素上限 IMAGE_BRIDGE_MAX_IMAGE_PIXELS 40000000 width×height 超限直接失敗

憑證讀取

插件會按順序嘗試以下環境變量讀取視覺 API 密鑰:
* ZHIPU_API_KEY
* ZHIPUAI_API_KEY
* VISION_API_KEY
* DASHSCOPE_API_KEY

模型限制說明

若所選模型聲明 inputModalities: ['text'],DSH 會在消息進入循環前拒絕圖片。本插件本身不修改模型聲明,因此需要配合一個補 image 模態聲明的插件(例如 llm-deepseek-image-admit)才能讓所有模型支持圖片輸入。

注意事項

  1. 圖片處理:一次消息中的多張圖片會合併爲一次視覺 API 調用。緩存按有序 attachmentId 組合鍵命中,圖片順序不同則視爲新請求。
  2. 無預處理:圖片不做壓縮或縮放預處理,僅做體積和像素限制。
  3. 限流風險:免費檔 VLM 可能存在限流問題,插件雖提供重試和回退機制,但仍需關注 API 配額。
  4. 依賴環境:插件純手寫 JS,零構建、零第三方依賴,但依賴 Node 內置模塊。

總結

dsh-image-bridge 提供了一個從 Web GUI 到純文本模型的視覺信息橋接方案。它通過攔截、轉錄、緩存和降級策略,確保了圖片信息能被模型理解,同時保持了對話的穩定性。適合需要在 DeepSeek 等純文本模型上處理 Web GUI 圖片輸入的開發者使用。

插件目錄
GitHub 倉庫

羽毛球分组比赛记分
小程序二维码

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

小夜