前言¶
在 DeepSeek Harness(DSH)裏,很多已配置的對話模型是純文本接口:聊天頁發圖會被「當前模型不支持圖片」攔住。換一套多模態 provider 能看圖,但日常又希望繼續用原來的模型名、路由和習慣。社區插件 dsh-vision-tool 走另一條路:爲每個 provider 註冊「原名 + 識圖」孿生路由,並把看圖交給獨立的視覺模型,通過 recognize_images 工具把識別結果回傳給會話裏的語言模型。下面介紹它的定位、能力與啓用步驟。
這是什麼¶
dsh-vision-tool 由維護者 wxy123-ctrl 發佈,在 SkillHub 社區目錄中歸類爲「模型推理」。倉庫說明寫明:本插件參考 dsh-vision-router,但砍掉全部視覺後端、路由與兜底邏輯,只保留「孿生路由 + 識圖工具 + 設置頁」的最小組合。簡介與 README 一致——爲純文本模型註冊「+ 識圖」孿生路由與 recognize_images 工具,經用戶選定的視覺模型代看圖;README 標明爲社區作品,與 DeepSeek / 深度求索無隸屬或官方背書關係。
核心功能¶
「+ 識圖」孿生路由¶
插件爲每個已配置的模型 provider(例如智譜 GLM)自動註冊一條 <provider>-vision 孿生路由,目錄裏顯示爲「原名 + 識圖」,並聲明可接收圖片。在聊天頁右下角選擇帶「+ 識圖」的條目後,發送圖片不再被宿主攔截。
真正調用模型時,插件會把消息裏的圖片塊(含 tool-result 嵌套)改寫成文本標記(附件 id 與指引),語言模型因此去調用 recognize_images:圖片不進入語言模型上下文,由語言模型經工具轉發給識圖模型。會話日誌仍保留原圖,Web UI 照常展示。provider 增刪時經 llm/adapters-updated 同步孿生。
孿生分組裏哪些模型出現在目錄,由「設置 → 識圖模型」頁中每個模型的開關控制(默認全部關閉)。孿生 listModels 只放行已打開的模型;某 provider 下全部關閉時,空組被目錄丟棄,整條「+ 識圖」條目消失。自帶多模態能力的模型在默認關閉時也不再出現在該列表中。
recognize_images 工具¶
會話模型可一次傳入 1–10 張圖片。參數 images 支持三種形態:
- 本會話上傳圖片的完整附件 ID(
sha256:+ 64 位十六進制); - 該 ID 的十六進制短摘要(前 ≥8 位,例如
sha256:a5303c40;純文本會話裏宿主佔位文本常帶 8 位形態,按唯一前綴匹配,零命中或多命中時返回候選完整 ID 列表供模型自糾); - 本地圖片路徑(png / jpeg / webp / gif)。
插件將圖片轉發給設置頁選定的識圖模型,並附上固定的識別要求(客觀描述、文字原樣轉錄、多圖分「圖1/圖2」、不臆測、默認中文)以及調用方的具體要求,返回識別文本;所有圖片在一次模型調用中發送。
工具按會話門控:只有選中「+ 識圖」孿生時,system-prompt/assemble 流程纔會把該工具載入該會話的 tools。選中非孿生模型時,請求裏不含 recognize_images,純文本模型即便看到 8 位佔位摘要也無法借它看圖——需要發圖時應切換到已打開開關的「+ 識圖」條目。在孿生會話中,歷史裏若只剩 8 位摘要,工具仍可通過唯一前綴匹配成功,對須經 run_code 調用工具、長 ID 易截斷的場景較友好。
設置頁與維護¶
「設置 → 識圖模型」與「Agent 預設」並列(order 21),配置寫入宿主 settings 的 vision-tool 命名空間:
- 「+ 識圖」模型選項開關列表(位於識圖模型下拉框上方):爲每個已接入模型(目錄分組、排除孿生)提供 Switch,默認全關;逐項經嵌套路徑
mutate寫入twinEnabled,按 revision 圍欄避免連續切換互相覆蓋。 - 識圖模型下拉:從「設置 → 模型」裏已配置的 provider/model 中選擇真正執行識圖的模型(自動排除「+ 識圖」孿生),選中即保存。
瀏覽器側用 MutationObserver 將本節導航行的齒輪圖標協調爲與 ic_ds 同風格的眼睛 SVG(16×16、currentColor),不刪除 React 管理的節點;插件卸載時還原。
設置頁還提供一鍵清理附件庫:掃描未歸檔會話日誌中仍被引用的 sha256 id,刪除 DSH_HOME/attachments/v1/objects 下未被引用且寫入超過 5 分鐘的對象,並回收 tmp 下超齡殘留;已歸檔會話不計入引用來源。操作經同源 POST 到宿主路由 /plugins/dsh-vision-tool/cleanup-attachments,採用與官方 /api 類似的 Host/Origin 信任圍欄,僅 POST。
安裝與啓用¶
官方 README 給出的 bundle 安裝方式如下(需先取得倉庫目錄的絕對路徑):
git clone https://github.com/wxy123-ctrl/dsh-vision-tool.git
# plugin_manager install_bundle target=<克隆目錄絕對路徑>
# 或在 DSH Web 端「設置 → 插件」按該目錄路徑安裝
package.json 聲明 dsh.bundle.patch 指向 cordis.patch.yml(插入 {id: vision-tool, name: dsh-vision-tool}),profile 以 link 方式掛上目錄並由 bundle 層合成補丁,無需手工編輯 profile 的 cordis.patch.yml。依賴 @deepseek-ai/schemastery 由 pnpm 安裝;開發目錄內可先執行 pnpm install 再跑冒煙測試。瀏覽器半邊隨 HMR 熱更新,宿主半邊改動需熱重組或重啓 DSH。卸載使用 remove_bundle。
當前 package 版本爲 0.1.3,許可證 MIT,Node >=18。
驗證示例:
dsh web --dump-config | Select-String 'id: vision-tool'
plugin_manager list_plugins # include:vision-tool fiberPhase=active
GUI 上:設置 → 插件 → 插件清單應顯示 vision-tool fiber active;左側出現「識圖模型」頁;打開某模型的「+ 識圖」開關後,聊天頁模型選擇裏出現對應條目。
典型用法¶
經過上面的安裝與驗證,可按 README 中的使用流程操作:
- 打開「設置 → 識圖模型」:爲需要發圖的純文本模型打開「+ 識圖」開關,並在下拉框中選擇一個視覺模型(如 GLM-4.6V、Qwen-VL 等,須已在「設置 → 模型」中配置);
- 在聊天頁右下角模型選擇器切換到「\<你的 provider> + 識圖」(僅已打開開關的模型會出現);
- 發送圖片與問題:語言模型收到圖片標記後會調用
recognize_images,識圖結果以工具返回形式進入對話。
若會話仍選中不帶「+ 識圖」的模型,請求中不會攜帶該工具,發圖場景應顯式切換到孿生條目。
適用場景與注意¶
適合已在 DSH 中配置純文本對話模型、又希望在同一會話流程裏偶爾發圖、且願意單獨指定一個視覺模型承擔識圖任務的開發者。與完整 vision-router 類方案相比,本插件刻意不做視覺後端與複雜路由,維護面更小,但識圖質量與延遲取決於所選視覺模型及 provider 配置。
安裝前請自行閱讀 GitHub 倉庫 源碼與 MIT 許可證。插件在 DSH 宿主進程權限下運行,清理附件等操作會觸及本地 DSH_HOME/attachments;README 提醒 npm 上同名第三方包 dsh-vision-tool 與本倉庫無關聯,應以 GitHub 分發爲準。
結尾¶
dsh-vision-tool 用孿生路由解除純文本模型的發圖攔截,用 recognize_images 把看圖與對話模型解耦,適合在 DSH「一切皆插件」的生態裏做最小化的識圖補位。目錄頁:https://www.skillhub.cn/plugins/wxy123-ctrl/dsh-vision-tool;源碼與說明:https://github.com/wxy123-ctrl/dsh-vision-tool。