前言¶
DeepSeek Harness(DSH)在判斷一個模型能否接收圖片時,只讀取 llm-pi-ai 解析出的模型元數據。中轉站的 /v1/models 通常不返回模態信息,配置裏於是沒有 input 字段,默認值是 ["text"]。圖片在到達上游之前會被本地兩道閘門攔掉:
- 會話准入:
dsh-api-session-controller的prompt()方法返回session/attachment-invalid,原因標記爲MODEL_DOES_NOT_SUPPORT_IMAGES。 - 請求適配:
dsh-llm-pi-ai的streamWithSnapshot()拋出LlmError,類型爲UNSUPPORTED_CONTENT。
即使上游模型本身支持圖片,DSH 也會在用戶按下發送時直接拒絕。
這是什麼¶
dsh-send-photos 是一個 DSH bundle 包(dsh.bundle.patch),用於補全那些收得下圖、卻沒有聲明多模態能力的中轉站/反代路由的輸入聲明。插件在 adapter 的 modelOf() 方法外面套一層,對管轄範圍內的路由,把缺失的 image 補進 input。
維護者:Ayowait
分類:模型推理
核心價值:讓 DSH 不再因爲缺少模態聲明而拒絕圖片,從而兼容更多中轉站配置。
核心功能¶
插件對管轄範圍內的路由,在解析模型元數據後,將 image 加入 input 列表,使 DSH 允許圖片通過。具體行爲:
- 不修改請求體:圖片仍以標準 OpenAI image part 格式發出,不做編碼、拆分或僞裝。
- 不修改配置文件:不觸碰
cordis.patch.yml、settings 文檔或 profile 文件。 - 可逆:卸載時將
modelOf原樣還原。 - 只作用於存在
modelOf的適配器(pi-ai 路由,如api: openai-completions)。官方 DeepSeek 賬號路由走另一適配器,不受影響。 - 監聽
llm/adapters-updated,對後掛載的路由和後續新增的模型同樣生效。
安裝與啓用¶
這是一個 DSH bundle 包,不是普通 npm 腳本。安裝方式如下:
# 桌面版:在插件管理器裏以本地目錄安裝,或
dsh plugin --profile <你的 profile> add link:<本目錄絕對路徑>
安裝後,profile 的 package.json 會增加一條依賴,Loader 裏會加載 dsh-send-photos。
卸載方式:
dsh plugin --profile <你的 profile> remove dsh-send-photos
配置示例¶
- id: dsh-send-photos
name: dsh-send-photos
config:
providers: [] # 要覆蓋的 route;空數組 = 全部已掛載路由
modalities: [text, image]
enabled: true
若只想作用於某個中轉站,可縮小範圍:
providers:
- my-relay
適用場景與注意¶
- 該插件用於補聲明,而非增強上游能力。如果上游模型確實不支持圖片,請求會在上游失敗,此時應將該 route 從
providers中排除。 - 顯式寫了
["text"]的模型也會被覆蓋(解析後無法區分“聲明爲純文本”和“沒聲明”)。如果某個 route 上有這類模型,用providers縮小範圍,或只保留需要的那條。 - 依賴
llm-pi-ai路由(api: openai-completions這類)。若將來 DSH 改了適配器內部方法名,插件會打一條 warn 並保持無害的空轉。 - 在 DSH
0.2.1-rc.2上驗證通過。
結尾¶
dsh-send-photos 讓 DSH 能夠兼容那些缺少模態聲明的中轉站配置,從而在本地完成補全後再向上游發送標準 OpenAI image part 請求。如需查看源碼或提交問題,可訪問:
- GitHub:https://github.com/Ayowait/dsh-send-photos
- 目錄頁:https://www.skillhub.cn/plugins/Ayowait/dsh-send-photos