前言¶
DeepSeek Harness(DSH)裏,宿主已經能把圖片交給聲明瞭 image 輸入能力的模型。實際開發會話裏卻常卡在兩點:內置的 read_image 要求當前會話模型本身支持圖片,純文本模型會直接拒絕;把讀圖交給子智能體並指定視覺路線時,又可能被會話級的模型選擇白名單攔住。
你需要的是:對話繼續用正在用的推理模型,讀圖單獨走一條宿主已配置的視覺路線,結果以文本回到上下文裏。維護者 YOUNG-FELIX 的 dsh-vision(分類:模型推理,當前版本 v0.4.4)就是圍繞這個缺口做的插件:一個可調用工具、一塊設置面板,無額外運行時依賴。
這是什麼¶
dsh-vision 通過宿主進程內的 ctx.llm.stream() 直連視覺模型,把模型回覆當文本交給調用方;鑑權留在宿主的 provider 適配器裏,插件不接觸 API 密鑰。SkillHub 目錄頁的簡述是:Let any DSH session read images through a vision-capable model the host already has. Tool + settings panel, no runtime dependencies.
插件在 DSH 社區目錄 SkillHub 上架,源碼與完整說明見 GitHub:YOUNG-FELIX/dsh-vision。許可爲 MIT;package.json 要求 Node >=22.19.0。
核心功能¶
工具 vision_read¶
面板裏可以改工具顯示名,默認可通過 JSON 參數調用(字段與 README 一致):
{
"path": "/home/you/shot.png",
"paths": ["a.png", "b.png"],
"task": "ui",
"prompt": "只關心左上角的錯誤提示",
"route": "someprovider/some-model"
}
path/paths:本地 PNG、JPEG、GIF、WEBP;多張時數量上限可在面板配置。task:auto | describe | text | ui | chart | diff | question。prompt:可選,追加到對應任務模板之後。route:可選,覆蓋面板裏配置的主路線。
成功時返回模型文本,並附一行元數據,例如:
[model provider/model · transport attachment · 6.2s · 1 image(s) · 220 KB · tokens 1412→180]
失敗時會露出各次嘗試的原始錯誤,不吞異常。
任務模板與可編輯提示詞¶
調用方只選 task,不必每次手寫提示詞,換模型、換會話時輸出顆粒度一致。六套預置模板含義如下(摘自官方文檔):
| task | 用途 | 產出側重 |
|---|---|---|
auto |
自定義完整指令 | 原樣發送,不套模板 |
describe |
通用(缺省) | 主體、位置、逐字文字、顏色材質、不確定項 |
text |
純 OCR | 僅文字,保留換行與縮進 |
ui |
軟件截圖 | 標題、導航、控件狀態、報錯原文、路徑與版本等 |
chart |
圖表 | 類型、座標軸、圖例、可讀數值與異常 |
diff |
多圖對比 | 逐項差異、變化區域、增刪元素 |
question |
定向問答 | 僅依據可見內容;看不出則說明 |
在 設置 → 視覺 → 提示詞 中可就地修改模板,點「保存提示詞」或頁面級「保存」後寫入 ~/.dsh/dsh-vision/config.json,下一次讀圖即生效,無需重建或改源碼。promptPrefix 會拼在每次請求最前面,便於固定輸出語言或格式。
路線與設置面板¶
設置 → 視覺 提供狀態、路線、提示詞、自定義 API、參數與限制、開關、最近調用等區塊。主路線只列出宿主已發現且聲明支持圖片輸入的 provider 模型(如 workbuddy/…、aliyun/…、direct/…);傳輸方式可選 auto / attachment / inline,並支持備用路線與「重新發現模型」。
若無付費視覺 API,文檔給出與 dsh-connect-workbuddy 組合的路徑:從市場安裝連接器並登錄後,在視覺面板選已註冊的免費視覺模型作路線,會話計費模型可保持不變。
插件還支持 OpenAI 兼容的 自定義 API(圖片僅能 base64 內聯,密鑰落在插件配置或 apiKeyRef 引用的 ~/.dsh/.credentials.yaml);有宿主路線時文檔建議優先用宿主路線。
「運行自檢」會由宿主生成純色測試圖,讓當前路線回答顏色並比對,用於端到端驗證傳輸與模型能力。
文檔中的能力邊界(實測結論)¶
README 用三張固定樣圖對比了三類路線(大視覺語言模型、小通用 VL、專用 OCR)。值得寫進調用習慣的兩點:
- 逐字轉寫:三種路線在同一條漫頁上對白一致;若目標是文字,
task: "text"通常最快、最省。 - 計數與朝向:同一模型在多圖合併請求中可能把朝向說反;涉及分格數、面板方向時,每次只送一張圖,儘管
paths[]支持多張。
不適合:當前會話模型已能直接附圖時(應直接附件);需要像素級 diff 時(文檔建議裁剪區域再問,不依賴對話模型做精確比對)。
安裝與啓用¶
官方 README 給出的是將插件目錄複製進 profile 並登記 bundle,不是一條 dsh plugin add … 命令。步驟如下。
- 將
dsh-vision目錄複製到當前 profile 的local-plugins與node_modules(<profile>換成你的 profile 名):
cp -r dsh-vision ~/.dsh/profiles/<profile>/local-plugins/dsh-vision
cp -r dsh-vision ~/.dsh/profiles/<profile>/node_modules/dsh-vision
-
在
~/.dsh/profiles/<profile>/package.json的dsh.profile.bundles中加入"dsh-vision"。 -
重啓 DSH 應用。
卸載時:從 bundles 與 dependencies 移除、刪除上述兩個目錄,並刪除 ~/.dsh/dsh-vision。
啓用後應在 設置 → 視覺 配置主路線;僅有自定義端點時再填 自定義 API。配置與統計分別落在:
~/.dsh/dsh-vision/config.json
~/.dsh/dsh-vision/stats.json
典型用法¶
下面介紹一次最小可用的讀圖調用。先確認路線已在面板保存,再在會話中讓模型調用工具(或由工作流、子智能體調用)。
單張截圖、關心 UI 文案與報錯:
{
"path": "/home/you/app-error.png",
"task": "ui",
"prompt": "只列出紅色錯誤框內的原文"
}
漫畫或掃描件、只要臺詞:
{
"path": "/home/you/page.webp",
"task": "text"
}
臨時指定便宜 OCR 路線(會話仍爲純文本模型):
{
"path": "/home/you/label.jpg",
"task": "text",
"route": "workbuddy/hy3"
}
route 的值須是宿主或面板裏已配置、且支持圖片輸入的模型 id;具體名稱以你環境中「重新發現模型」列表爲準。
倉庫內可用冒煙測試驗證插件邏輯(不啓動完整 DSH):
node scripts/smoke.mjs
適用場景與注意¶
適合誰
- 主會話綁定純文本強推理模型,但仍要把本地圖片事實納入上下文。
- 上傳鏈路被部分 provider 拒絕,需要繞過「會話模型直讀附件」的路徑。
- 讀圖想用專用模型(OCR、大 VLM),對話繼續用已在付費的會話模型。
- 腳本、子智能體或工作流需要讀圖,而不改會話模型或白名單。
不適合誰
- 會話模型已支持圖片:直接附圖即可。
- 依賴模型做像素級差異比對。
運行與安全
- 插件隨 當前 DSH 進程 運行,權限與宿主一致;安裝前請自行查閱源碼與 MIT 許可證。
vision_read只讀本地文件,不替你下載 URL;圖片字節會發往當前路線所屬的模型服務。- 插件設計爲不持有宿主路線的密鑰;自定義 API 路徑可能在配置中存 key 或通過
apiKeyRef解析,面板與/state對密鑰做不回顯處理。詳見 README「安全說明」。 - 每次調用都是真實模型請求,費用由提供該模型的方計量。
社區目錄 SkillHub 與 DeepSeek / 幻方無官方從屬關係;DSH 生態奉行「一切皆插件」,選用插件時以目錄頁與倉庫文檔爲準。
結尾¶
dsh-vision 用一條宿主內的視覺路線、一個 vision_read 工具和可配置的六套任務模板,把「讀圖」從「當前會話模型能不能看圖」裏拆出來。純文本會話、子智能體腳本和分任務選模型(OCR 對 UI 對描述)是文檔寫明的典型用法;涉及計數與方位時單圖單呼,轉寫優先 text,是 README 實測裏反覆強調的習慣。
- 目錄頁:https://www.skillhub.cn/plugins/YOUNG-FELIX/dsh-vision
- 倉庫:https://github.com/YOUNG-FELIX/dsh-vision