dsh-vision-fallback:給 DeepSeek Harness 會話加一個“視覺代理”開關

前言

DeepSeek Harness(DSH)支持通過插件擴展功能。在 text-only 會話中,純文本模型通常無法處理圖片輸入。dsh-vision-fallback 是一個工作流插件,由 WEIHAOLEE 維護,它給 DSH 的 text-only 會話加了一個“視覺代理”開關。開啓後,插件會根據消息內容,將純文本請求原樣轉發給當前選中的模型,將包含圖片的請求自動轉發給視覺服務商。

核心功能

  • 純文本請求完全不干預:原樣走你原來選的模型(任意文本模型均可)。
  • 含圖請求自動轉發:直接把當前消息裏的圖片 + 文字發給視覺模型(OpenAI 兼容),不帶歷史上下文。
  • 開關式使用:輸入框旁有一個“視覺代理”開關,點開即用,點關恢復原狀。
  • 多視覺服務商:設置頁“Vision 模型”面板裏可增刪服務商、設默認、測試連接,支持熱生效。
  • 原圖直髮:不做圖片壓縮。
  • OpenAI 兼容:視覺服務商需支持 OpenAI 兼容接口。
  • SSE 流式翻譯:支持流式響應。

安裝

# 1. 安裝進 profile
dsh plugin --profile web add D:\dsh-vision-fallback

# 2. 把插件加入 profile 的 bundle 列表
#    編輯 %DSH_HOME%\profiles\web\package.json,在 dsh.profile.bundles 裏追加:
#    "@local/dsh-vision-fallback"

# 3. 插件依賴自包含
cd D:\dsh-vision-fallback
pnpm install

# 4. 重啓 dsh web
dsh web

安裝注意事項
* dsh plugin add 會以 link: 方式把插件鏈入 profile,Node 解析插件內部 import 時會還原到真實路徑,因此插件目錄裏必須有自己的 node_modules。
* package.json 的 exports 裏必須保留 "./package.json" 條目,否則設置面板永遠不加載。

配置

熱生效於 %DSH_HOME%\settings.yaml 的 llm-vision-fallback: 段:

llm-vision-fallback:
  defaultProvider: ark        # 含圖請求走哪個服務商
  providers:                  # 可配多個,面板裏也可管理
    ark:
      displayName: 豆包(火山方舟)
      baseUrl: https://ark.cn-beijing.volces.com/api/v3
      model: doubao-seed-2-1-turbo-260628
      apiKeyEnv: ARK_API_KEY  # 憑據引用:key 本身存在 DSH 憑據庫,絕不在配置文件裏
  • API Key 通過 DSH 憑據服務寫入(設置頁/憑據入口),本倉庫不含任何密鑰。
  • 想加服務商(硅基流動 / 百鍊千問 / GLM / OpenRouter / 本地 vLLM…):只要 OpenAI 兼容即可。

使用

  1. 會話裏選好你的文本模型(任意)。
  2. 點輸入框旁的“視覺代理”開關(變藍,顯示“視覺代理 · 你的模型名”)。
  3. 正常聊天 = 你的模型;讓 agent 看某張圖(read_image)= 自動轉發視覺服務商。
  4. 想換視覺服務商:設置 → Vision 模型 面板。

注意事項

  • 開發性質:這是 vibe coding 產物,作者對 DSH 內部 API 的理解靠讀源碼試錯,不保證符合官方意圖。目前僅驗證環境:Windows 11 + deepseek-v4-pro + 火山方舟豆包(單個賬號);其他系統/服務商未測。
  • 圖片處理:視覺請求只發最後一條消息(圖片 + 文字):多輪“追問上一張圖”的場景不適用,追問時請重新發圖。原圖直髮、不做壓縮:超大圖可能超過豆包的圖片 token 上限。
  • Token 限制:視覺回覆的 max_tokens 被鉗制在 8192。
  • 服務商要求:視覺服務商必須 OpenAI 兼容(/chat/completions + SSE + /models)。
  • 路由依賴:開關開啓期間會話路由掛在 vision-fallback 上:若插件卸載/停用,該會話會失效,需手動切回原模型。
  • 配置坑:package.json exports 缺 ./package.json → 設置面板永遠不加載;客戶端 RPC 返回是 {result:{ok,value}} 信封,忘了解包 → 面板永遠“不可寫”。

不確定與已知問題

  • 對 DSH 內部機制的理解:作者對 DSH 內部 API(LlmAdapter seam、slots、RPC 信封)的理解靠讀源碼試錯,不保證符合官方意圖。
  • 未驗證場景:多圖同時讀、併發切換開關、子代理會話裏的表現未驗證;推理強度(off/high/max)透傳只驗證過 deepseek-official 一家。
  • 兼容性:官方“模型”設置頁也會顯示本插件的 provider 行,但它不理解本插件的配置結構——請在專屬面板裏改配置。

License

MIT

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

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

小夜