dsh-deepseek-vision:給 DeepSeek Harness 純文本模型增加圖片輸入路由

前言

DSH 插件機制允許開發者在現有 DeepSeek Harness 上擴展能力。對已經使用純文本 DeepSeek 模型的人來說,圖片輸入仍是一個實際缺口:聊天窗裏可以貼圖,瀏覽器可以截圖,工具也可能返回圖片,但模型本身不直接接收 image

dsh-deepseek-vision 解決的就是這個缺口。它爲純文本 DeepSeek 模型增加一條視覺語言網關路由,讓圖片能夠進入後續處理,而不是要求開發者整體更換模型。

下面介紹它是什麼、核心能力、安裝方式、配置要點,以及需要注意的邊界。

這是什麼

dsh-deepseek-visionsiegfly 維護的 DSH 插件,當前發佈版本爲 0.1.7,許可證爲 MIT。

一句話定位:它是給 DeepSeek Harness 的視覺語言網關插件,爲純文本 DeepSeek 模型增加圖片輸入路由;目錄聲明支持 image 的模型可以直通官方視覺端點,其他模型可以由可配置 VL 模型先把圖片描述爲文字。

它覆蓋兩條路徑:

  • 目錄聲明支持 image 的模型,例如 deepseek-v4-flash-vision-exp,圖片直通原生 DeepSeek 視覺端點。
  • 其他純文本或未列目錄模型,先由可配置 VL 模型把圖片描述成文字,再交給 DeepSeek。

運行環境要求如下:

Node.js ^22.19.0 || >=24.0.0

安裝插件時還需要 PATH 中有 pnpm

核心功能

註冊獨立 provider 路由

插件會註冊一條獨立路由,並在模型選擇器中使用顯示名 DeepSeek + Vision

provider: deepseek-vision
displayName: DeepSeek + Vision
inputModalities: text, image

這條路由明確聲明輸入模態包含 textimage

支持的圖片輸入

以下圖片來源可以進入該路由:

  • 聊天窗貼圖
  • tool-fs read_image
  • 瀏覽器截圖
  • MCP 工具返回圖片
  • ACP 客戶端內聯圖片

按模型分流處理

插件會根據所選模型選擇不同處理方式:

  • 如果模型目錄聲明支持 image,例如 deepseek-v4-flash-vision-exp,圖片會直通原生 DeepSeek 視覺端點。
  • 如果模型是純文本模型或未在目錄中列出,插件會先調用可配置 VL 模型,將圖片描述成文字,再交給 DeepSeek 繼續處理。

描述緩存

插件按 attachmentId 在進程內使用 LRU 緩存描述結果。

這意味着同一張圖片在重試、上下文壓縮或後續輪次中複用時,會複用同一份描述,避免重複計費。

保留原始會話記錄

原始圖片仍會持久化進 session log。

這樣可以保持歷史、回放、重構等會話行爲不受影響。

可配置 VL 端點

插件支持配置 VL 端點、模型、提示詞和密鑰,併兼容 OpenAI 風格 /chat/completions 網關。

失敗策略

插件提供 fail-closed 失敗語義,也可以配置 placeholder 降級,並有穩定錯誤碼。

默認失敗策略爲 fail

安裝與啓用

前置條件

安裝前需要滿足:

  • dsh CLI 可用
  • PATH 中有 pnpm
  • Node.js 版本滿足 ^22.19.0 || >=24.0.0

安裝 DSH CLI

如果是新機器,先安裝 DSH CLI:

npm install -g @deepseek-ai/dsh

這一步用於讓 dsh 命令進入 PATH,後續可以直接調用 dsh plugin 相關命令。

安裝插件

通過 web profile 安裝插件時,可以使用 npm spec:

dsh plugin --profile web add dsh-deepseek-vision

也可以使用 git spec 鎖定具體 commit:

dsh plugin --profile web add github:siegfly/dsh-deepseek-vision#<sha>

該插件支持 npm、git、目錄、tarball 等 spec,並支持 web 與 headless profile。實際使用時按當前環境和發佈渠道選擇對應 spec。

啓用插件

安裝完成後,重啓 dsh web

然後按以下步驟啓用:

  1. 在 Models 頁選擇 DeepSeek + Vision
  2. 在插件配置中填寫 VL 密鑰。
  3. 在聊天窗貼圖併發送消息。

卸載插件

如需移除插件,執行:

dsh plugin --profile web remove dsh-deepseek-vision

典型配置

在“設置 → 插件 → 插件配置”卡片中,可以配置以下 vl.* 項:

vl.apiKeyEnv
vl.model
vl.baseURL
vl.describePrompt
vl.timeoutMs
vl.maxCacheEntries
vl.onFailure

憑據解析優先級如下:

進程環境變量(最高、只讀)→ GUI 管理的 .credentials.yaml → .env 回退

因此,通過 Web Models 頁寫入的憑據可用;而本次進程顯式導出的 key 始終優先,並且不能在 GUI 內修改。

失敗策略方面,vl.onFailure 可配置爲 failplaceholder

  • fail:描述失敗時,整個請求失敗。
  • placeholder:描述失敗時,降級爲文字佔位繼續。

數據流與兼容邊界

使用這個插件時,需要注意以下邊界:

  • 圖片數據流只經過用戶配置的 VL 端點;無匿名回退、代理服務器、磁盤答案緩存。
  • 發佈版不鎖定官方 dsh 版本。
  • 官方 CLI 路徑直接安裝發佈產物,兼容性未經目標機驗證。
  • install-profile 重建路徑會在目標機使用自己的 dsh 重建;構建成功即兼容證明,無 CLI 路徑有分級提示。
  • dshCompat.anchorVersion 0.1.1-rc.2 僅表示 committed lib provenance,不是安裝門禁。
  • provider / displayName 修改即時生效;改成已被佔用的路由 id 時,兩個註冊表保留舊值並記日誌。

該插件會隨 dsh 進程加載運行。安裝前請檢查源碼、依賴與許可證;當前許可證爲 MIT。

適用場景

適合以下情況:

  • 想繼續使用純文本 DeepSeek 模型,同時處理聊天窗圖片、截圖或工具返回圖片。
  • 已經有一個可配置的 VL 端點,並希望通過 OpenAI 風格 /chat/completions 網關提供圖片描述能力。
  • 希望原始圖片保留在 session log,同時避免同一張圖片重複描述和重複計費。

不適合以下情況:

  • 無法訪問自配置 VL 端點的環境。
  • 要求圖片完全不出網,且不經過自己配置端點的場景。

鏈接

  • 目錄頁:https://www.skillhub.cn/plugins/siegfly/dsh-deepseek-vision
  • GitHub:https://github.com/siegfly/dsh-deepseek-vision
羽毛球分组比赛记分
小程序二维码

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

小夜