DeepSeek Harness 的核心設計理念是「一切皆插件」。在構建智能體或工作流時,經常會遇到純文本路由模型(如 DeepSeek)需要處理圖片附件的場景。直接發送圖片會導致模型報錯或無法理解,強行轉爲 Base64 又會增加 Token 消耗。dsh-vision 插件解決了這一痛點,通過一個橋接層,讓純文本模型也能「看」懂圖片。
插件介紹¶
dsh-vision 是一個用於 DeepSeek Harness 的 Vision Bridge 插件,由用戶 lakeofsky347 維護。它通過將用戶上傳的圖片交給專門的視覺模型生成文字描述,再將描述回填給純文本模型,從而避免內容不支持導致的整輪對話失敗。
核心功能¶
- 圖片轉文字:自動將圖片塊交給視覺模型(默認
xiaomi/mimo-v2-omni)生成描述,替換原圖片塊。 - 記憶化緩存:按
(session, 附件 ID)記憶描述,歷史回放複用文本,避免重複計費。 - 容錯降級:視覺模型調用失敗時,降級爲佔位文本,保證 DeepSeek 回合不中斷。
- 併發隔離:使用
WeakSet標記不同回合,無全局狀態,互不干擾。 - Bundle 模式:安裝後自動插入插件行,無需手動編寫配置。
- 零開銷透傳:請求中無圖片塊或路由模型原生支持圖片時,原樣透傳。
安裝與啓用¶
插件以 Bundle 模式發佈,安裝命令如下:
dsh plugin --profile web add github:lakeofsky347/dsh-vision
注意事項¶
- 環境要求:需安裝
pnpm版本 ≥ 10。 - 構建權限:首次從 GitHub 安裝時,git 依賴的
prepare腳本默認被禁止,安裝會失敗。此時需在 profile 的pnpm-workspace.yaml中添加allowBuilds.dsh-vision: true,然後重新執行安裝命令。 - 許可協議:MIT 許可證。
配置與使用¶
安裝後,插件會自動插入配置行。需要在本地 ~/.dsh/profiles/<name>/cordis.patch.yml 文件中覆蓋配置,指定視覺模型的 provider 和 model:
- id: vision
name: dsh-vision
config:
provider: xiaomi-token-plan-cn
model: mimo-v2.5
配置項說明如下:
| 配置項 | 默認值 | 說明 |
|---|---|---|
provider |
xiaomi |
視覺模型所在的路由 |
model |
mimo-v2-omni |
視覺模型 ID |
prompt |
(見源碼) | 隨圖發給視覺模型的指令 |
cache |
true |
是否按會話和附件記憶化描述 |
maxTokens |
- | 視覺調用輸出 token 上限(可省略) |
在純文本模型會話中直接處理圖片附件,插件會自動介入並完成轉換。
技術原理¶
插件在 llm/stream waterfall 上註冊監聽器,根據不同情況採取不同策略:
- 無圖片塊:直接調用
next()原樣透傳(零開銷)。 - 原生支持圖片:如果路由模型聲明瞭
image輸入模態(如直接路由到 mimo),請求原樣放行。 - 純文本模型 + 圖片:插件否決鏈並返回惰性異步生成器:
- 解析路由模型的輸入模態。
- 遍歷消息,對攜帶圖片塊的內容調用一次視覺模型(基於
(session, 附件 ID)緩存)。 - 將圖片塊替換爲
[用戶附件圖片的視覺描述]文本塊後重建請求。 - 帶重入標記重新進入
ctx.llm.stream(),防止再次觸發監聽。
適用場景與注意¶
該插件適用於需要在純文本路由模型中處理圖片附件的場景。由於插件以當前進程權限運行,安裝前請務必檢查源碼與許可證。更多細節可參考插件目錄頁或 GitHub 倉庫。