dsh-vision-recognizer:保持 DeepSeek 對話大腦、隨時附加圖片的 DSH 視覺插件

前言

在 DSH(DeepSeek Harness)裏用文本模型對話時,想貼一張截圖、一段報錯界面或一張表格照片,通常只有兩條路:換一個原生多模態模型接管整個對話,或者在對話之外手動把圖片描述成文字再粘貼進來。前者等於換掉對話大腦,後者每次都要重複操作。

DSH 的理念是「一切皆插件」,這件事也可以交給插件解決。下面介紹的 dsh-vision-recognizer 做的就是:保持 DeepSeek 作爲對話大腦,隨時附加圖片,並可在 設置 → 插件 裏隨時切換識圖供應商。

這是什麼

dsh-vision-recognizer 是 kaixinbaba 維護的 DSH 視覺插件,MIT 許可證,當前版本 0.2.0,要求 node >= 22.19.0、dsh >= 0.1.0-rc.8。

它註冊一條 adaptive provider 路由(默認 id 爲 vision-recognizer,在模型選擇器中顯示爲「DeepSeek + 智能識圖」),包裹所配置的對話供應商,DeepSeek 是默認被包裹的對話供應商。這條路由始終放行圖片附件,再按實際選中的模型分流:

粘貼圖片 ─▶ vision-recognizer 路由 ─▶ 選中的模型支持圖片輸入?
                                        ├─ 是 → 原生圖片請求,直接透傳圖片塊
                                        └─ 否 → 調用所配置視覺模型轉譯爲文字,
                                                純文本模型收到 [圖片轉譯] 結果

也就是說,原生多模態模型看到的是原始圖片塊,純文本模型收到的是識圖模型轉譯好的文字,對話大腦始終不變。

核心功能

供應商與協議

內置 15+ 國內外供應商:OpenAI、Anthropic Claude、Google Gemini、OpenRouter、Azure OpenAI、Ollama(本地)、阿里 DashScope、QwenCloud (Intl)、智譜 GLM、百度千帆、訊飛星火、Moonshot Kimi、騰訊混元、火山引擎豆包、SiliconFlow;任意 OpenAI 兼容端點可通過自定義供應商接入。

協議上同時支持 OpenAI 兼容(/chat/completions)與原生 Anthropic Messages,Claude 開箱即用。

防掛起與回退鏈

  • 本地 / 匿名端點有硬性 20s 超時上限;
  • HTTP 429 快速失敗;
  • 失敗端點冷卻 60s;
  • 無 key 且無本地 Ollama 時快速失敗,並給出可操作的指引,而不是把請求掛住。

主模型失敗後,插件按序嘗試 fallbackModels 裏的每個條目(每項可指向不同廠商),全部失敗才報錯,並列出每一次嘗試。

緩存與本地路徑

  • 內容哈希緩存:同一張圖片每進程最多轉譯一次(進程內緩存,上限 200 條);
  • autoLocalOllama(默認開啓)會探測 http://localhost:11434,把運行中的 Ollama 前置到回退鏈中,圖片不出本機。

安裝與啓用

安裝只需一條命令,插件無構建腳本、完全無原生依賴(不需要 sharp 審批):

dsh plugin --profile web add dsh-vision-recognizer

npm 源慢時,可以指定鏡像:

dsh plugin --profile web add dsh-vision-recognizer --registry=https://registry.npmmirror.com

本地開發安裝:

dsh plugin --profile web add file:/path/to/dsh-vision-recognizer

注意必須帶 file: 前綴。裸寫 add .add link: 會讓 pnpm 以符號鏈接方式安裝包,插件的 schemastery 依賴會從源碼目錄解析而找不到,導致失敗。這是 pnpm symlink 安裝的通用問題,不是插件本身的 bug。

重啓 dsh web 後,做三件事:

1、在模型選擇器選擇「DeepSeek + 智能識圖」;
2、打開 設置 → 插件 → Vision,選擇回退視覺供應商、填入 API key 並保存;
3、在對話中粘貼圖片——原生多模態選中模型直接接收原圖,純文本選中模型收到 [圖片轉譯] 結果。

選中原生多模態模型時不需要回退 key;純文本模型且既無 key 也無本地 Ollama 時,該輪對話會快速失敗並給出指引,而不是掛起。

配置入口與存儲

設置 → 插件 → Vision 裏可以完成全部配置:選擇供應商、填寫 API key、覆蓋 model / endpoint / token 上限 / 超時 / marker,保存後立即生效,無需重啓。

UI 保存的配置寫入 $DSH_HOME/vision-recognizer.json,啓動時合併到打包默認值之上;cordis.patch.yml 只承載出廠默認值,用戶 cordis.patch.yml 的覆蓋仍可作爲組合期回退。

有一個 patch 語義要留意:插件包自帶的 - insert: 會把這行追加進條目列表,如果你在自己的 cordis.patch.yml 裏再寫同 id(dsh-vision-recognizer)的 - insert:,適配器會被重複註冊(未定義行爲)。想覆蓋個別鍵,應寫單個頂層 - id: dsh-vision-recognizer 條目,更好的做法是直接用設置 UI。

Key 的解析順序是:UI 填寫的 key → 供應商環境變量 → $VISION_API_KEY / $DASHSCOPE_API_KEY

另外,各供應商的默認模型只是起點,模型 id 會隨時間漂移,可在設置 UI 中覆蓋 Model。

適用範圍與已知限制

自適應回退只在選中「DeepSeek + 智能識圖」這條包裹路由時生效;選擇其他供應商路由會直接調用該路由。rc8 未暴露可以給所有現有路由統一加回退行爲的公共 decorator hook。

rc8 還有兩個已知限制:能力查找與已準備目標分發是分離的公共操作,在這個小窗口內被 HMR 替換的目標適配器可能與路由決策競態;嵌套的目標委託也會進入 llm/stream 瀑布(README 在該處的描述被截斷,細節以倉庫爲準)。

適用場景與安裝前注意

適合的人羣:

  • 主要用 DeepSeek 做對話大腦,但希望隨時能貼圖的用戶;
  • 想在多家識圖供應商之間隨時切換、或優先用本地 Ollama 讓圖片不出本機的用戶;
  • 固定只用某一家原生多模態模型的用戶則不需要這條包裹路由,直接選擇該供應商路由即可。

安裝前注意:插件以當前 dsh 進程的權限運行,建議先到 GitHub 倉庫檢查源碼與許可證(本項目爲 MIT)再安裝。

小結

dsh-vision-recognizer 用一條自適應包裹路由解決了「想貼圖又不想換對話大腦」的問題:多模態模型直接收圖,純文本模型自動落到識圖轉譯,供應商可在設置裏隨時切換,本地 Ollama 開箱可用。

  • 插件目錄頁:https://www.skillhub.cn/plugins/kaixinbaba/dsh-vision-recognizer
  • GitHub 倉庫:https://github.com/kaixinbaba/dsh-vision-recognizer

目錄頁爲社區維護的獨立站點,與 DeepSeek / 幻方無官方從屬關係。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜