前言¶
在 DeepSeek Harness 中,直接向僅支持文本的模型粘貼圖片會被拒絕,報錯提示不支持圖像輸入。@zzdream67/dsh-vision-bridge 插件通過攔截 llm/stream 流水線,在請求到達上游提供商之前,將圖像塊替換爲視覺模型的轉錄文本。這使得純文本模型能夠接收包含圖片描述的文本,從而完成推理任務。
安裝與啓用¶
安裝該插件需要確保環境已安裝 dsh 命令和 pnpm(dsh plugin 內部依賴 pnpm)。推薦使用 npm 安裝預構建版本。
- 安裝
pnpm(如果尚未安裝):
npm install -g pnpm
*注:`corepack enable pnpm` 在 Windows 上有時會因爲寫入權限問題失敗,直接通過 npm 全局安裝更爲可靠。*
- 執行安裝命令:
dsh plugin --profile web add @zzdream67/dsh-vision-bridge
核心功能¶
該插件主要實現以下能力:
* 圖像攔截與替換:攔截 LLM 流水線,將圖片內容替換爲視覺模型的轉錄。
* 模型聲明注入:自動爲被橋接的模型添加 input: [text, image] 聲明,使其能通過 DeepSeek Harness 的准入檢查。
* Web 設置頁面:在 Web 設置頁面註冊自定義區域,提供可視化的配置界面。
配置與使用¶
插件會在 Web 設置頁面的 settings.section 中註冊一個自定義區域。在該頁面中,可以通過三個按鈕管理視覺模型:
- 測試並啓用:向選定的視覺模型發送一張 16x16 的 PNG 圖片。只有當該模型接受圖片時,纔會寫入聲明;失敗則自動撤回。
- 直接啓用:跳過測試步驟,直接寫入聲明。適用於已確認模型具備視覺能力的場景。
- 重新加載:從磁盤重新讀取配置。由於桌面端沒有重新加載手勢,這是更新配置的唯一方式。
字段說明¶
在配置區域中,可調整以下參數:
| 字段 | 默認值 | 說明 |
|---|---|---|
enabled |
true |
總開關。關閉時插件保留加載但不再介入,並撤回聲明。 |
visionProvider |
'' |
視覺路由 ID。留空則插件不生效。 |
visionModel |
'' |
視覺路由中的模型 ID。留空則插件不生效。 |
prompt |
- | 發送給視覺模型的提示詞。 |
bridge |
[] |
需要橋接的純文本模型 ID 列表。 |
manageDeclarations |
true |
是否讓插件自動寫入/撤回模態聲明。 |
cacheSize |
64 |
緩存的轉錄結果數量。設爲 0 可禁用緩存。 |
timeoutMs |
120000 |
單張圖片轉錄的超時時間。 |
聲明機制¶
DeepSeek Harness 的准入門(dsh-host-apiproxy)會檢查模型的 inputModalities。如果模型未聲明支持圖像,請求會被拒絕,插件無法介入。
- 當
manageDeclarations開啓時,插件會自動爲bridge列表中的模型添加input: [text, image]聲明。 - 當插件啓用且模型被橋接時,該模型實際上可以接收圖像輸入,因爲轉換髮生在調用提供商之前。
- 聲明是“准入標籤”。它隻影響主機層是否允許圖像進入會話,不影響 Token 計數、上下文窗口或採樣行爲。
注意事項與實現細節¶
- 表單渲染:僅靠主機端的架構註冊不會自動渲染表單。該插件通過手動編寫瀏覽器端 bundle 來實現 UI。
- 卸載行爲:
- 插件會記錄聲明前的輸入狀態。如果卸載時檢測到輸入被手動修改爲錯誤格式,插件會保留該修改。
- 如果模型或路由已被刪除,插件會跳過該條目(不會憑空重建)。
- 插件會嘗試恢復所有其他路由的聲明狀態。
- 源碼與許可證:該插件使用 MIT 許可證。安裝前建議檢查源碼以確保符合安全要求。
總結¶
該插件解決了 DeepSeek Harness 中純文本模型無法處理圖片輸入的痛點。通過在 LLM 流水線中插入視覺轉錄層,它讓文本模型能夠間接地理解圖像內容。相關文檔與源碼可在 GitHub 查看。