dsh-eyes:讓 DeepSeek Harness 裏的純文本模型隨時能看圖

前言

在 DeepSeek Harness(DSH)裏用 DeepSeek 這類純文本模型當主模型時,有一個繞不開的限制:Harness 默認不允許向「當前模型不支持圖片」的會話發送帶圖消息。想讓模型看一張報錯截圖、一段界面佈局或一張表格照片,要麼自己先把圖裏的內容轉成文字再發過去,要麼換一個多模態主模型。

dsh-eyes 提供了另一種做法:圖片照常粘貼和發送,留在後臺持久化保存;主模型在自己需要的時候調用 view_image 工具看圖,識別部分由任意 OpenAI 兼容的視覺接口完成(默認百鍊 Qwen)。對使用方式來說,效果接近模型原生具備多模態。下面介紹它的功能、安裝和用法。

這是什麼

dsh-eyes 是 DeepSeek Harness 的一個插件,作者是 Leeminjing,以 MIT 協議開源,在社區目錄裏歸在「模型推理」分類下。它解決的問題很具體:讓帶圖消息在純文本主模型的會話裏能通過發送准入、被持久化保存,並且模型能按需查看。

DSH 的理念是「一切皆插件」,能力補齊交給插件來做。dsh-eyes 就屬於這一類:不改主模型、不加開關,把「看圖」做成一個模型可以隨時調用的工具。

核心功能

  • 發送准入放行:讓帶圖消息能通過發送准入檢查並被持久化保存;
  • 派發前剝離圖片:把請求裏的圖片塊換成帶序號的引用說明(【圖片N attachment_id=…】),主模型收到的是純文本;
  • view_image 工具:支持按單個 attachment_id、attachment_ids 數組一次看多張,或用本地 image_path 讀圖;
  • OpenAI 兼容視覺接口:同時支持 Chat Completions 與 Responses API,由 VISION_API_STYLE(auto / chat / responses)控制;
  • 會話隔離與持久化:圖片引用索引按 sessionId 分片,持久化到 .dsh/attachments/v1/dsh-eyes-index.json,重啓或上下文壓縮後仍能通過 attachment_id 查看歷史圖片;
  • 主模型自動適配:任何純文本主模型(不限 provider)自動被保護;本身原生支持圖片的多模態主模型不受干預。

安裝與配置

先安裝插件,再配置視覺接口的環境變量,最後重啓 dsh。以 Windows 爲例,完整步驟如下:

# 1) 安裝插件(github 方式,也可以換成 npm 包名)
dsh plugin --profile web add github:Leeminjing/dsh-eyes

# 2) 配置 API Key(換成你所用視覺提供商的 key)
setx VISION_API_KEY "sk-你的key"

# 3) 配置視覺模型(必填,無默認值)
setx VISION_MODEL "qwen-vl-plus"

# 4) 配置接口端點(默認百鍊;換其他提供商時必改)
setx VISION_ENDPOINT "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions"

# 5) 重啓 dsh,讓環境變量生效

四個環境變量的含義:

環境變量 說明 默認值
VISION_API_KEY 視覺接口的 API Key 必填
VISION_MODEL 視覺模型名,如 qwen-vl-plus 必填,無默認
VISION_ENDPOINT 視覺接口端點 https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
VISION_API_STYLE API 風格 auto

注意 setx 只對新啓動的進程生效,配置後必須重啓 dsh。VISION_API_STYLE 取 auto 時按端點路徑自動判斷:路徑含 chat/completions 走 Chat Completions,含 responses 走 Responses API,裸 base URL 默認按 Chat Completions 並自動補全路徑;也可以強制指定 chat 或 responses,插件會把端點路徑歸一化到對應協議。

常見視覺提供商

提供商 端點 模型示例
阿里雲百鍊 https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions qwen-vl-plus / qwen-vl-max
OpenAI https://api.openai.com/v1/chat/completions gpt-4o / gpt-4o-mini
Moonshot https://api.moonshot.cn/v1/chat/completions moonshot-v1-8k-vision-preview
OpenRouter https://openrouter.ai/api/v1/chat/completions qwen/qwen2.5-vl-72b-instruct

Anthropic 和 Gemini 的原生接口不直接支持,需要走它們各自的 OpenAI 兼容網關。

用 cordis.patch.yml 覆蓋配置

除了環境變量,也可以在 cordis.patch.yml 裏給該行傳 config,會覆蓋默認值和環境變量:

- insert:
    - id: dsh-eyes
      name: dsh-eyes
      config:
        apiKey: sk-xxx          # 同 VISION_API_KEY
        model: qwen-vl-plus     # 同 VISION_MODEL
        # endpoint, targetProvider, maxImageBytes 同理

目標主模型由代碼內的 targetProvider 決定,默認 deepseek-official;maxImageBytes 控制本地圖片大小上限,默認 15 MB。

典型用法

不需要開關,也不需要手動調用工具:

  1. 在會話裏直接 Ctrl+V 粘貼一張截圖,或拖拽/點附件添加;
  2. 像發普通消息一樣提問,例如「這張圖裏寫了什麼?」;
  3. 主模型收到的是圖片引用說明,它在思考中自行決定調用 view_image(attachment_id=…);
  4. 視覺模型提取描述或 OCR 文字,主模型基於這些文字繼續回答。

圖片會一直留在後臺。後續任意一輪都可以繼續追問同一張圖,比如「再看一下圖裏第二行的數字」。因爲引用索引已持久化,即使上下文被壓縮或 dsh 進程重啓,模型仍能通過 attachment_id 查看歷史圖片。

工作原理

插件在三個環節介入:

  1. 准入放行:包裝 llm.resolveModelInfo,讓目標主模型聲明 inputModalities: ['text','image'],帶圖消息由此通過 Host 的發送准入檢查並被持久化,生成 attachment_id。
  2. 圖片剝離:包裝 llm.streamWithRegistration,在請求派發給模型之前,把每個 image 塊(含嵌套在 tool-result 裏的)換成 【圖片N attachment_id=…】 引用說明,並按 sessionId 分片登記 attachment_id → ImageAttachmentRef。
  3. view_image 調用:主模型需要看圖時,插件按 attachment_id(或 attachment_ids、image_path)讀出圖片字節,轉成 data: URL,POST 到配置的視覺接口,把返回的文本交給主模型作答;一次看多張時,返回文本按【圖片N】分段。

之所以直接包裝這兩個方法,是因爲 Harness 目前沒有公開的擴展點用於「發送准入的圖片能力判斷」和「派發前剝離圖片」。

適用場景與注意

適合的場景:主模型必須是 DeepSeek 或其他純文本模型、又需要偶爾看圖(截圖 OCR、界面檢查、表格識別等)的 DSH 用戶。如果你的主模型本身是多模態的,這個插件不會介入,也沒有安裝的必要。

安裝與使用前注意幾點:

  • 插件以當前 dsh 進程的權限運行。安裝前建議先閱讀源碼和許可證(MIT),確認無誤再裝;
  • API Key 請用環境變量或憑證服務管理,不要硬編碼進倉庫;
  • 大小限制有兩套且互不相關:本地 image_path 讀圖上限 15 MB(maxImageBytes);粘貼/附件圖片受 Harness 附件存儲限制(默認 5 MB);
  • 純文本主模型會在模型選擇器裏顯示爲「支持圖片」,這是有意爲之,目的是放行帶圖消息,不代表模型本身變成了多模態;
  • 視覺接口必須 OpenAI 兼容(Chat Completions 或 Responses API)。

小結

dsh-eyes 的思路是把「看圖」從主模型的能力要求裏拆出來:圖片留在後臺,模型按需調用 view_image,識別交給外部的 OpenAI 兼容視覺接口。對被「純文本模型發不了圖」擋住的 DSH 用戶來說,這是一個改動很小、可以立刻試用的方案。

  • GitHub:https://github.com/Leeminjing/dsh-eyes
  • 社區目錄:https://www.skillhub.cn/plugins/Leeminjing/dsh-eyes

需要說明的是,社區目錄是獨立站點,與 DeepSeek、幻方沒有官方從屬關係,插件信息以 GitHub 倉庫爲準。

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

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

小夜