前言¶
DeepSeek 官方模型在元數據中聲明 inputModalities: ['text'],這導致 harness 的圖片門禁(發送預檢、切換模型檢查、read_image 工具)全部拒絕圖片消息,報錯 MODEL_DOES_NOT_SUPPORT_IMAGES。雖然圖片真正進入 agent 循環後可由其他插件轉錄,但准入階段的攔截阻斷了流程。
這是什麼¶
本插件是 DeepSeek Harness (DSH) 的一個補丁插件,由 Seryta 維護。它接管 DeepSeek 官方的 provider 路由,通過修改模型元數據來解鎖圖片准入。其核心邏輯是照抄官方 apply 邏輯,僅將 resolveModel 返回值中的 inputModalities 從 ['text'] 補充爲 ['text', 'image']。它直接引用 DSH 安裝樹裏已構建的官方產物,無需本地 pnpm 構建或修改 listModels。
核心功能¶
- 接管官方路由:禁用官方
@deepseek-ai/dsh-llm-deepseek行,由本插件接管同一deepseek-official路由,對用戶透明,無需切換模型選擇器。 - 補全模態聲明:在
resolveModel返回值中補全image輸入模態聲明。 - 通過准入預檢:讓圖片消息能夠通過 apiproxy 的准入預檢。
- 零 API 傳輸:DeepSeek API 永遠不會收到圖片,所有圖片處理在本地 harness 循環內完成。
安裝與啓用¶
執行以下命令安裝:
dsh plugin --profile web add github:Seryta/llm-deepseek-image-admit
安裝後需要重啓 dsh web 才能生效。插件默認安裝在 ~/.npm-global/lib/node_modules/@deepseek-ai/dsh。如果 DSH 安裝在其他位置,需設置環境變量 DSH_NPM_ROOT(指向 DSH 安裝根目錄,其下應包含 node_modules/@deepseek-ai/...)。
典型用法¶
安裝並重啓後,圖片消息的准入檢查會被自動放行。圖片最終的處理(轉錄爲文字)需要在 agent/pre-step 階段配合 image-bridge 等插件完成。用戶無需做任何配置變更,原有的模型選擇邏輯保持不變。
適用場景與注意¶
適用場景:需要在 DSH 中使用 DeepSeek 官方模型處理多模態輸入,且希望保持模型選擇器透明。
注意:
1. 僅放行不轉錄:本插件只負責讓圖片通過准入預檢,並不負責轉錄圖片內容。如果不搭配 image-bridge 等插件在 pre-step 階段將圖片轉爲文字,圖片會帶着原始數據塊到達 DeepSeek 適配器,從而被 API 拒絕。
2. 依賴官方產物佈局:插件依賴官方包的產物路徑佈局(如 node_modules/@deepseek-ai/dsh-llm-deepseek)。若 DSH 改變安裝佈局,需通過 DSH_NPM_ROOT 環境變量適配。
結尾¶
該方案通過修改元數據解鎖了 DeepSeek 官方模型對圖片的准入能力,無需引入新的模型變體或改變用戶操作習慣。更多實現細節與漂移檢測腳本可參考源碼。