@dsh-extension/dsh-vision-bridge:給 text-only DSH 會話按需接入視覺能力

前言

在 DSH 的插件化擴展方式下,社區目錄是獨立站點,本文介紹的 @dsh-extension/dsh-vision-bridge 是一個第三方插件。它面向 text-only DSH 會話,解決一個具體問題:會話中會出現上傳圖片或工具產生的圖片,但文本模型請求不適合攜帶 image blocks;如果爲了“看圖”直接把長會話歷史發給視覺模型,成本和控制都不好把握。

這個插件讓會話繼續走文本模型,只在需要理解圖片時調用 vision_describe。每次視覺調用只發送指定圖片和一個聚焦問題,把視覺模型作爲按需調用的外部能力。

這是什麼

@dsh-extension/dsh-vision-bridgesfyyy 維護,許可證爲 MIT。它的一行定位是:

On-demand vision for text-only DSH sessions: images become markers, and a vision_describe tool sends only image + question to an OpenAI-compatible vision model.

簡單說,它給 text-only DSH 會話提供按需視覺能力:圖片在會話和 UI 中仍作爲圖片存在,進入文本模型輸入層時被改寫成 text marker;模型需要看圖時調用工具,由 OpenAI-compatible 視覺端點返回文本結果。

核心能力

按需調用視覺模型

插件不把所有圖片都主動發給視覺模型。它註冊 vision_describe 工具,由文本模型在需要時調用。每次調用只發送圖片和 question,不發送長 conversation history,從而把視覺調用控制在“只發當前要看的內容”這一層。

會話保留原圖,只改寫模型輸入

插件通過 agent/pre-step hook 記錄會話中出現的圖片附件,並建立 attachment index,供 vision_describe 按 id 解析圖片。

同時,它包裝 session.deriveMessages(),讓發給文本模型的消息不包含 image blocks。會話日誌和 UI 仍然保留原始圖片;被改寫的只是模型輸入。

使用 OpenAI-compatible 視覺端點

插件支持任何 OpenAI-compatible /v1/chat/completions endpoint 作爲視覺端點。它在 DSH llm-pi-ai providers 中只維護一條 vision-bridge provider route。

禁用後恢復原生行爲

配置 enabled: false 會關閉整條鏈路:不註冊工具、不做圖片改寫、不保留 admission bypass,恢復 native behavior。

安裝與啓用

安裝命令

從 npm registry 安裝,不使用 local checkout:

dsh plugin --profile web add @dsh-extension/dsh-vision-bridge

如果一直通過 npx 調用 DSH CLI,也可以用:

npx @deepseek-ai/dsh@0.1.0-rc.6 plugin --profile web add @dsh-extension/dsh-vision-bridge

--profile 指向你要啓動的 profile;web 是瀏覽器 UI profile。如果新增 client bundle,需要重啓一次 dsh web,讓 UI 加載到插件。

基本配置

可以在 DSH Web 的 Settings -> Vision Bridge 中配置,也可以編輯 ~/.dsh/vision-bridge.json

{
  "enabled": true,
  "baseUrl": "https://api.openai.com/v1",
  "apiKey": "sk-xxxx",
  "apiKeyEnv": "",
  "model": "gpt-5.6-terra"
}

配置項包括:

  • enabled:是否啓用整條鏈路。
  • baseUrl:OpenAI-compatible /v1/chat/completions 視覺端點。
  • apiKey:直接填入的 API key。
  • apiKeyEnv:用於引用環境變量的字段;與 apiKey 互斥。
  • model:視覺模型名稱。

直接填入的 key 會同步到 DSH credential store,並被引用爲 DSH_VISION_BRIDGE_API_KEY

配置優先級

優先級從高到低:

Settings page (with schema defaults) -> environment variables -> config file

可用的環境覆蓋項包括:

DSH_VISION_BRIDGE_BASE_URL
DSH_VISION_BRIDGE_API_KEY
DSH_VISION_BRIDGE_API_KEY_ENV
DSH_VISION_BRIDGE_MODEL
DSH_VISION_BRIDGE_ENABLED

檢查運行狀態

可以請求插件提供的 settings 接口,查看當前 live 的 value.admissionBypass 和 dependency-service status:

GET /_dsh/vision-bridge/settings

典型用法

調用 vision_describe

vision_describe 用於讓視覺模型回答關於圖片的問題。它接受:

  • attachmentIds:當前會話中的圖片 attachment ids。
  • paths:圖片文件路徑,通過 DSH 的 sandbox-aware file service 解析,支持 pngjpegwebpgif
  • question:必填,必須是聚焦、具體的問題。

一次調用的圖片總數爲 1-4

一個參數層面的調用可以寫成模板形式:

vision_describe(
  attachmentIds: ["<current-conversation-attachment-id>"],
  paths: ["<image-path>"],
  question: "<question>"
)

多張圖片

如果需要一次查看多張圖片,可以把 1-4 張圖片一起傳給 vision_describe,並在 question 中說明要觀察或比較的內容。

驗證與本地開發

運行測試:

npm test

測試覆蓋 marker rewriting、attachment resolution、event-log indexing、disabled shutdown 和 text-only session behavior。

如果從 local checkout 開發,可以注入本地路徑:

dsh plugin inject /path/to/dsh-vision-bridge

適用場景與注意

適合以下情況:

  • text-only DSH 會話中偶爾需要理解截圖、上傳圖片或圖表。
  • 希望視覺模型只接收圖片和聚焦問題,不接收長會話歷史。
  • 已有 OpenAI-compatible /v1/chat/completions 視覺端點。
  • 希望 UI 和會話日誌繼續顯示原始圖片,只改寫發給文本模型的輸入。

使用前注意:

  • 插件以當前 dsh 進程權限運行,安裝前建議檢查源碼與 MIT 許可證。
  • apiKeyapiKeyEnv 互斥;不要同時依賴兩種方式產生歧義。
  • enabled: false 會關閉工具註冊、圖片改寫和 admission bypass。
  • attachment ids 必須來自當前會話;paths 走 DSH 的 sandbox-aware file service。

結尾

@dsh-extension/dsh-vision-bridge 的價值在於給 text-only DSH 會話補上“按需看圖”的能力:圖片留在會話和 UI 中,文本模型通過 text marker 感知圖片,真正需要時再用最小 payload 調用視覺模型。

GitHub 倉庫:

https://github.com/sfyyy/dsh-vision-bridge

社區目錄頁 URL 未在已覈實資料中提供;安裝時可用上面的 npm registry 安裝命令。

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

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

小夜