dsh-vision-unlock:讓未聲明多模態能力的模型也能發圖

前言

DeepSeek Harness(DSH)在收到圖片時會先檢查模型是否聲明瞭 inputModalities。若未聲明或數組裏沒有 "image",DSH 會直接拒絕:會話控制器彈「當前模型不支持圖片,請切換支持圖片的模型」,子代理發圖、read_file 讀圖、MCP/ACP 圖片注入都會被攔截。

這種判定只依賴兩處能力聲明:LlmModelInfo.inputModalities(所有門禁的單一來源)和適配器自己持有的模型表。常見的觸發場景是自定義/本地網關路由只寫了 id / name / contextWindow / maxTokens,沒寫 input,於是落到默認值 ["text"],即便上游模型實際支持多模態,也會被拒絕。

dsh-vision-unlock 的目的就是去掉這個限制,讓未聲明多模態能力的模型也能發送和讀取圖片,且不修改 app.asar 或配置樹,而是通過運行時接縫實現,隨 DSH 升級繼續可用。

插件定位

  • 名稱:dsh-vision-unlock
  • 維護者:wmk66ds
  • 分類:模型推理
  • 核心價值:在 DSH 層面放行圖片,不依賴上游模型顯式聲明 inputModalities 中包含 "image"

核心功能

  • 包裝 llm.resolveModelInfo,將結果補上 "image",拆掉所有基於該字段的門禁(會話控制器、子代理、read_file、MCP/ACP 圖片注入)。
  • 遍歷 llm.adapters,把適配器模型表裏的 input / inputModalities 補上 "image",拆掉適配器自身的自檢(如 pi-ai)。
  • 適配器換快照(配置熱更新)時自動重做,無需重啓。

安裝與啓用

方式 A:用 plugin_manager 安裝(推薦)

在 DSH 裏讓 agent 執行:

plugin_manager  action: install_bundle  target: github:wmk66ds/dsh-vision-unlock

或在 Web UI 的 設置 → 插件 面板裏,把上面這串填進安裝框。

target 也可以寫完整 URL,兩種等價:

寫法 說明
github:wmk66ds/dsh-vision-unlock GitHub 簡寫,推薦
https://github.com/wmk66ds/dsh-vision-unlock 完整 git URL

鎖定版本用 # 加 ref:

github:wmk66ds/dsh-vision-unlock#v1.0.0

方式 B:手動安裝(降級方案)

  1. 把本倉庫放到一個穩定的路徑,例如 D:\workbench\dsh-vision-unlock。
  2. 在你的 profile 目錄(默認 ~/.dsh/profiles/desktop/)的 node_modules 下建立指向它的鏈接:
cmd /c "mklink /J `"%USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-vision-unlock`" `"D:\workbench\dsh-vision-unlock`""
  1. 編輯該 profile 的 package.json,在 dsh.profile.bundles 數組加入 "dsh-vision-unlock",並在 dependencies 加入 "dsh-vision-unlock": "link:D:/workbench/dsh-vision-unlock"。
  2. 重啓 DSH。

Windows 上用 junction(mklink /J)而不是符號鏈接——後者需要管理員權限。注意 desktop profile 由 Electron 應用獨佔管理,dsh plugin --profile desktop 會拒絕執行,所以纔有這裏的手動步驟。

配置

在 cordis.patch.yml 裏的 config 部分添加:

- insert:
    - id: vision-unlock
      name: 'dsh-vision-unlock'
      config:
        providers: []   # 留空 = 所有 provider;否則只放行列出的
        models: []      # 留空 = 所有模型;否則只放行列出的

兩個白名單都爲空時全部放行;非空時需同時命中才放行。

已知邊界

  • deepseek 適配器的模型表來自它自己的 plugin config,不經由 llm.adapters 暴露,本插件改不到。該路由如需圖片,請在設置頁給模型勾選 Image(等價於寫 inputModalities: [text, image])。
  • 放行後圖片真的會發出去。若上游實際不支持多模態,報錯會從模型側返回,不再是 DSH 本地拒絕——這是預期行爲,不是 bug。

卸載

從 profile 的 package.json 中刪掉 dsh-vision-unlock(bundles 與 dependencies 兩處),刪除 node_modules/dsh-vision-unlock,重啓 DSH。

適用版本

針對 DSH 桌面版(含 dsh-llm / dsh-llm-pi-ai / dsh-api-session-controller)驗證。依賴的是 llm.resolveModelInfo 與 llm.adapters 這兩個接口,若上游改動需要同步調整。

總結

dsh-vision-unlock 通過運行時接縫給未聲明多模態能力的模型補上 "image" 能力聲明,讓 DSH 不再因缺少該字段而拒絕圖片。適用於自定義網關路由、本地適配器等場景,安裝後按需配置白名單即可使用。

目錄頁|GitHub 倉庫

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

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

小夜