前言¶
在 DeepSeek Harness (DSH) 中,許多文本模型(如 DeepSeek)的 inputModalities 只有 text。當嘗試在對話中粘貼圖片時,DSH 的 api-proxy 會在發送階段直接拒絕含圖消息(報錯“當前模型不支持圖片”)。dsh-image-bridge 插件解決了這一限制,使文本模型能夠在 DSH 環境中接收並處理圖片。
插件介紹¶
定位:DSH 插件,由開發者 haitang1 維護。
核心價值:讓文本模型在 DSH 裏也能正常粘貼併發送圖片。
核心功能¶
- 圖片落盤:圖片會自動寫入會話工作區的
.attachments/目錄。 - 界面展示:對話區顯示圖片縮略圖(可點擊放大),不再顯示文件路徑文字。
- 模型輸入:模型側會收到
[圖片N]:"<路徑>"的文本,模型可據此調用已有的視覺或 MCP 工具(例如vision_glance、mcp__mcp-vision__analyze_image)。 - 原生支持:本身支持圖片的模型不做任何處理,走原生路徑。
- 技術實現:
- 包裝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 拒絕。本插件通過三個步驟實現支持:
- 放行預檢:包裝
llm.resolveModelInfo,對文本模型補上image模態,讓含圖消息進入 agent 流程。 - 落盤:在
agent/pre-step裏用attachments.readImage讀出圖片字節,寫到工作區.attachments/<sha256>.<ext>。 - 解耦顯示與模型輸入:利用 DSH 的 surface replace 機制,在
agent/request-error裏追加一條“僅模型可見”的替換事件,把圖片塊在模型可見面換成[圖片N]:"<路徑>",而人類 transcript 仍渲染原圖。首次調用會因適配器拒絕圖片在本地失敗(無 API 開銷),隨後自動重試。
使用注意¶
- 命令與圖片混用限制:命令(以
/開頭)與圖片不要在同一輪混用。DSH 客戶端輸入框的“命令路徑”提交時(如/plan、/goal等)不會攜帶草稿圖片,圖片會留在輸入框。變通方式是先發命令,再單獨發圖;或命令與圖片分開兩條消息發送。 - 歷史圖片處理:會話歷史中殘留的視覺模型產生的圖片塊(未切換前),切迴文本模型後這些歷史圖片不在本插件處理範圍,可能觸發適配器報錯。建議切迴文本模型前清空或壓縮歷史。
總結¶
該插件通過包裝接口和利用 DSH 的 surface replace 機制,使純文本模型也能通過 MCP 工具處理圖片。對於需要視覺能力的文本模型開發場景,這是一個必要的工具。更多詳情請訪問 GitHub。