前言¶
DeepSeek Harness (DSH) 插件生態允許開發者通過插件擴展功能。在配置本地 vLLM 模型(例如 Qwen 3.8 27B)作爲視覺模型後端時,常會遇到一個問題:vLLM 默認參數 --limit-mm-per-prompt image=1 限制單次請求只能包含 1 張圖片。然而,DSH 內置的 LLM 適配器僅按字節大小限制圖片,不按數量限制。這導致當對話中包含多輪圖片,或者工具調用返回多張圖片時,後端會直接返回 400 錯誤。
dsh-vision-3090-fix 插件正是爲了解決這個問題而設計。它作爲本地 HTTP 反向代理運行,在請求轉發給後端之前,將多餘的圖片替換爲文本佔位符,從而繞過後端的數量限制。
插件介紹¶
這是一個 DeepSeek Harness 插件,用於將自託管 vLLM 後端的單次請求圖片數量上限設爲 1。它不修改後端邏輯,而是通過代理層攔截請求並重寫內容。
核心功能¶
- 限制圖片數量:強制將每條請求中的圖片數量限制在指定上限(默認爲 1)。
- 本地反向代理:以普通 Cordis 插件效果啓動,在 DSH 進程內部運行。
- 替換佔位符:將超出上限的舊圖片替換爲穩定的文本佔位符。
- 支持流式響應:保持後端響應的流式傳輸特性,字節級轉發。
- 跨消息處理:支持處理
messages數組以及工具調用(tool calls)中的image_url內容部分。
安裝與啓用¶
使用以下命令將插件安裝到指定的 DSH 配置文件(profile)中:
dsh plugin --profile web add /path/to/dsh-vision-3090-fix
安裝後,需要在 cordis.patch.yml 中配置代理的基本參數,並修改 provider 的 baseURL 以指向該代理。
- 在
cordis.patch.yml中配置upstreamOrigin、listenHost、listenPort、maxImagesPerRequest和models:
- id: vision-3090-fix
name: dsh-vision-3090-fix
config:
upstreamOrigin: http://10.204.100.243:1234 # 真實後端地址,不含路徑
listenHost: 127.0.0.1
listenPort: 8931
maxImagesPerRequest: 1 # 匹配你的服務器 --limit-mm-per-prompt 參數
models: [qwen3.8-27b] # 可選,不填則對所有模型生效
- 修改
settings.yaml,將 provider 的baseURL指向代理地址:
llm-pi-ai:
providers:
pure:
displayName: pure
apiKeyEnv: PURE_API_KEY
api: openai-completions
baseURL: http://127.0.0.1:8931/v1 # 指向本地代理
models:
- id: qwen3.8-27b
適用場景與注意¶
- 適用場景:部署了 vLLM 且設置了
--limit-mm-per-prompt image=1的自託管視覺模型環境。 - 注意事項:
- 插件在轉發前會完全緩衝請求體(爲了解析和重寫 JSON),因此不適合處理大文件上傳。
- 沒有重試邏輯或請求排隊機制,它是一個輕量級的透傳代理。
- 假設後端使用 OpenAI 的
image_url線路格式,如果後端格式不同,插件將無法識別。 - 插件不會因爲超時崩潰代理,超時會記錄日誌並結束當前請求。
- 安裝前請檢查源碼與許可證(MIT)。
總結¶
dsh-vision-3090-fix 提供了一種低成本的方式,在不修改 vLLM 服務端配置的情況下,解決 DSH 與受限制後端通信時的圖片數量衝突問題。