dsh-sight:爲 text-only DSH 模型提供插件式視覺能力

前言

在 DSH 的使用場景裏,一個常見限制是:部分模型是 text-only 的,不能直接處理圖片粘貼或圖片塊。dsh-sight 是面向這類模型的插件,目標是用一個 vision tool 和內置 VLM preset,把圖片內容轉成文本描述,讓 text-only 模型也能基於圖片回答問題。

下面介紹它的能力、安裝方式、典型用法,以及使用時的限制。

這是什麼

dsh-sight 是一個 DSH 插件,維護者爲 Fu3rte,許可證爲 MIT。

它解決的問題可以概括爲:給 text-only DeepSeek Harness (dsh) 模型增加“看圖並描述”的能力。插件通過包裝 prompt 准入流程,使圖片粘貼進入流程,並將圖片塊轉換爲路徑提示;隨後模型可以調用 vision tool,由插件把圖片交給配置的 VLM 後端,返回文本描述。

核心能力

內置 VLM presets

插件提供兩類內置 preset:

  • opencode-zen:OpenCode Zen,免費、無需 key。
  • gemini-flash:Gemini Flash,free tier。

它也支持 custom 模式,可以接入任意 OpenAI-compatible endpoint。配置入口在 Web 設置頁中,選擇 preset 或 custom endpoint 後保存即可。

vision tool

vision tool 接受本地路徑或 http(s) URL。一次調用最多接受 10 個路徑或 URL,並在一個請求中返回逐條標註的描述。

返回形式類似:

--- Image 1 ---
<description>
--- Image 2 ---
<description>

粘貼圖片轉路徑提示

對於 text-only 模型,dsh 通常不會接受圖片粘貼。dsh-sight 通過包裝 apiProxy.sessions.prompt 實現 prompt-admission override:

  • 圖片粘貼被接受;
  • 圖片內容保存到插件目錄;
  • 圖片塊在進入歷史前被轉換爲路徑提示。

例如,粘貼圖片後可能生成類似提示:

[Image #1 auto-saved to /tmp/dsh-sight/image1/xxxx.png]

這個路徑提示可供後續調用 vision tool 使用。

Web 設置頁

插件提供 Settings → Vision 頁面,可以完成以下操作:

  • 選擇 preset 或 custom endpoint;
  • 填寫 model、Base URL、API key;
  • 查看 effective config,確認實際會使用哪個 backend;
  • 保存後熱更新,無需重啓。

安裝與啓用

安裝命令:

dsh plugin --profile web add dsh-sight

安裝後打開:

Settings → Vision

在設置頁中選擇一個 preset,或填寫 custom endpoint,保存配置。

環境要求方面,package.json 的 engines 要求:

{
  "engines": {
    "node": ">=20"
  }
}

典型用法

使用粘貼圖片

先粘貼一張圖片。插件會把圖片保存到插件目錄,並生成路徑提示,例如:

[Image #1 auto-saved to /tmp/dsh-sight/image1/xxxx.png]

隨後模型可以基於該路徑調用 vision tool。

直接調用 vision tool

也可以直接傳入本地路徑或 URL:

{
  "paths": ["/tmp/dsh-sight/image1/xxxx.png"],
  "question": "What does this chart show?"
}

如果一次需要分析多張圖片,最多可以傳 10 個路徑或 URL:

{
  "paths": [
    "/tmp/dsh-sight/image1/xxxx.png",
    "https://example.com/chart-2.png"
  ],
  "question": "Compare these two charts."
}

插件會按圖片逐條返回描述。

緩存與清理

粘貼圖片會保存到插件目錄,文檔示例中爲:

/tmp/dsh-sight/image{N}/

緩存策略包括:

  • MD5 去重;
  • LRU 限制,maxImages 默認爲 200;
  • 啓動時清理超過 7 天的插件圖片目錄。

配置優先級

無 GUI 或腳本化配置時,配置優先級從高到低爲:

  1. settings.yaml 中的 dsh-sight: 段;
  2. DSH_SIGHT_* 環境變量;
  3. ~/.config/dsh-sight/config.json;
  4. profile 的 cordis.patch.yml 中的插件配置;
  5. preset defaults。

相關環境變量包括:

DSH_SIGHT_PROVIDER
DSH_SIGHT_API_KEY
DSH_SIGHT_MODEL
DSH_SIGHT_BASE_URL
DSH_SIGHT_TIMEOUT_MS
DSH_SIGHT_MAX_TOKENS
DSH_SIGHT_MAX_IMAGES
DSH_SIGHT_CONFIG

安全與限制

插件對 API key 和輸入做了限制:

  • API key 標記爲 secret,使用 role('secret');
  • API key 不隨 settings response 返回;
  • UI 使用 write-only 字段,並報告是否已存儲;
  • 本地圖片讀取上限爲 25 MiB;
  • URL 抓取有 30 秒超時;
  • URL 抓取上限爲 25 MiB;
  • URL 抓取要求聲明 image/* content type;
  • 僅接受 png/jpeg/webp/gif/bmp 圖片。

適用場景與注意

dsh-sight 適合以下場景:

  • 正在使用 text-only DSH 模型,但需要處理圖片內容;
  • 希望用免費或低成本 VLM preset 完成圖片描述;
  • 需要把多張圖片批量轉成文本描述;
  • 希望保留原有模型,不切換到視覺模型。

使用前需要注意:插件會運行在當前 dsh 進程的權限下,並且會讀取本地文件、抓取 URL、調用外部 VLM endpoint。安裝前建議先檢查源碼、許可證和 endpoint 配置。雖然 API key 被標記爲 secret,仍應避免在不信任的環境中使用。

鏈接

GitHub:

https://github.com/Fu3rte/dsh-sight
羽毛球分组比赛记分
小程序二维码

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

小夜