dsh-image-bridge:讓 DeepSeek Harness 中的文本模型支持圖片輸入

前言

在 DeepSeek Harness (DSH) 中,許多文本模型(如 DeepSeek)的 inputModalities 只有 text。當嘗試在對話中粘貼圖片時,DSH 的 api-proxy 會在發送階段直接拒絕含圖消息(報錯“當前模型不支持圖片”)。dsh-image-bridge 插件解決了這一限制,使文本模型能夠在 DSH 環境中接收並處理圖片。

插件介紹

定位:DSH 插件,由開發者 haitang1 維護。
核心價值:讓文本模型在 DSH 裏也能正常粘貼併發送圖片。

核心功能

  1. 圖片落盤:圖片會自動寫入會話工作區的 .attachments/ 目錄。
  2. 界面展示:對話區顯示圖片縮略圖(可點擊放大),不再顯示文件路徑文字。
  3. 模型輸入:模型側會收到 [圖片N]:"<路徑>" 的文本,模型可據此調用已有的視覺或 MCP 工具(例如 vision_glance、mcp__mcp-vision__analyze_image)。
  4. 原生支持:本身支持圖片的模型不做任何處理,走原生路徑。
  5. 技術實現:
    - 包裝 llm.resolveModelInfo 放行預檢。
    - 在 agent/pre-step 中用 attachments.readImage 落盤。
    - 利用 agent/request-error 解耦顯示與模型輸入。

安裝與啓用

本包是 profile bundle(package.json 聲明瞭 dsh.bundle.patch)。在 DSH 源碼 checkout 根目錄執行:

pnpm dsh plugin --profile web add 'github:haitang1/dsh-image-bridge#b5c64ea'

安裝成功後,插件會自動加入該 profile 的 dsh.profile.bundles,下次啓動(或長駐 surface 熱載後)生效。

如果 CLI 不可用,可手工等價操作:
1. 編輯 $DSH_HOME/profiles/<profile>/package.json:
- 在 dependencies 添加:"dsh-image-bridge": "github:haitang1/dsh-image-bridge#b5c64ea"
- 在 dsh.profile.bundles 數組末尾添加:"dsh-image-bridge"
2. 在該 profile 目錄執行 pnpm install。

原理與實現

文本模型通常被 api-proxy 拒絕。本插件通過三個步驟實現支持:

  1. 放行預檢:包裝 llm.resolveModelInfo,對文本模型補上 image 模態,讓含圖消息進入 agent 流程。
  2. 落盤:在 agent/pre-step 裏用 attachments.readImage 讀出圖片字節,寫到工作區 .attachments/<sha256>.<ext>。
  3. 解耦顯示與模型輸入:利用 DSH 的 surface replace 機制,在 agent/request-error 裏追加一條“僅模型可見”的替換事件,把圖片塊在模型可見面換成 [圖片N]:"<路徑>",而人類 transcript 仍渲染原圖。首次調用會因適配器拒絕圖片在本地失敗(無 API 開銷),隨後自動重試。

使用注意

  1. 命令與圖片混用限制:命令(以 / 開頭)與圖片不要在同一輪混用。DSH 客戶端輸入框的“命令路徑”提交時(如 /plan、/goal 等)不會攜帶草稿圖片,圖片會留在輸入框。變通方式是先發命令,再單獨發圖;或命令與圖片分開兩條消息發送。
  2. 歷史圖片處理:會話歷史中殘留的視覺模型產生的圖片塊(未切換前),切迴文本模型後這些歷史圖片不在本插件處理範圍,可能觸發適配器報錯。建議切迴文本模型前清空或壓縮歷史。

總結

該插件通過包裝接口和利用 DSH 的 surface replace 機制,使純文本模型也能通過 MCP 工具處理圖片。對於需要視覺能力的文本模型開發場景,這是一個必要的工具。更多詳情請訪問 GitHub。

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

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

小夜