前言¶
DeepSeek Harness (DSH) 的引擎依據模型聲明的 inputModalities 對輸入進行路由。純文本模型(不含 image)在消息准入階段會被拒絕,或者收到的圖片字節會被投影爲文本佔位符,導致無法真正處理圖片。
dsh-vision-tool 是一個由 YJLTF 維護的插件,旨在解決這一問題。它通過放寬准入、註冊工具和注入指導,將圖片理解能力委託給用戶配置的一個多模態模型,再把結果交還給主模型。同時,插件具備智能退避機制,當主模型原生支持圖片時,會自動停止干預,保持原生體驗。
核心功能¶
- 放寬圖片准入:包裝
llm.resolveModelInfo服務,讓純文本模型接收帶圖消息,但引擎仍按適配器真實元數據處理字節投影。 - 工具集成:
understand_image:自動檢查會話中最近的一張圖(典型貼圖場景),或讀取指定路徑的文件。list_conversation_images:列出會話中出現的全部圖片供挑選。
- 智能退避:按模型能力退避,原生支持圖片的模型不受任何影響。
- 指導注入:自動在系統提示中注入識圖指導,引導主模型結合上下文具體提問。
- 配置即改即生效:支持 Web 端官方風格的配置卡片,修改配置無需重啓會話。
- 零運行時依賴:產物約 18 kB,僅依賴宿主提供的 dsh 包與 schemastery。
安裝與啓用¶
在目標 dsh 環境中執行以下命令安裝:
dsh plugin --profile <profile> add github:YJLTF/dsh-vision-tool
注意:Git 安裝會拉取源碼並觸發構建。若使用 pnpm ≥ 10,首次安裝可能會失敗,需在 profile 的 pnpm-workspace.yaml 中放行構建授權:
allowBuilds:
dsh-vision-tool: true
安全提示:放行構建即允許該包代碼在安裝期於本地執行,請僅對可信的包放行,建議釘住 commit 版本。
配置說明¶
插件依賴宿主環境配置,需指定視覺模型並提供方。
最小可用配置:
visionProvider: zai-coding-cn
visionModel: glm-5.3-flash
配置項說明:
| 字段 | 類型 | 默認值 | 含義 |
|---|---|---|---|
visionProvider |
string | '' |
小參數多模態模型的提供方路由。 |
visionModel |
string | '' |
小參數多模態模型的精確模型 id。 |
maxTokens |
number | 2048 |
視覺調用最大輸出 token 數。 |
guidanceInjection |
boolean | true |
是否注入識圖指導到系統提示。 |
overrides |
[] |
按模型顯式聲明模態,優先級高於適配器元數據。 |
前置條件:所選的視覺模型必須在 DSH 的模型配置中聲明圖片輸入能力,否則引擎會投影掉圖片字節,導致視覺模型無法識圖:
models:
- id: <vision-model>
input: [text, image] # 必須聲明 image
使用示例¶
配置完成後,直接在會話中貼圖提問即可。
- 貼圖提問:用戶發送一張圖片並附帶具體問題(例如“這張圖裏的代碼有什麼問題?”)。
- 工具調用:純文本主模型收到圖片佔位符後,根據系統提示中的指導,自主調用
understand_image工具(不帶path時默認檢查最近一張圖)。 - 結果返回:視覺模型對圖片進行分析並返回文本結果,主模型基於此結果繼續推理。
注意事項¶
- 環境要求:需要 DSH 0.2.0-rc.2 環境(peer 範圍
^0.2.0-rc.1,@deepseek-ai/cordis ^4.0.1)。 - 安全風險:Git 安裝時需放行
pnpm構建,這等同於允許該包在本地執行代碼。 - 流式中止:工具執行的流式調用支持隨請求中止,取消即中斷。
- 零依賴:構建產物自包含,天然適合離線分發。