前言¶
DeepSeek Harness (DSH) 將其推理能力集中在 DeepSeek 模型上。當需要處理視覺任務時,手動配置提供商既繁瑣又容易出錯。hanchn/dsh-multimodal-router 插件解決了這個問題,它將圖像感知委託給本地或顯式配置的多模態模型,並將文本證據返回給推理 Agent。它遵循“本地優先”的理念,默認情況下禁用遠程回退以保護隱私。
它是什麼¶
這是一個由 hanchn 維護的插件,採用 MIT 許可證。它是一個零配置工具,利用 Ollama 的模型元數據自動發現具備視覺功能的模型,並支持 Ollama 和 OpenAI 兼容的視覺 API。插件通過路由能力將視覺處理與 DeepSeek 推理解耦,使 Agent 能夠專注於文本證據分析。
核心功能¶
- 自動發現與路由:通過 Ollama 的模型元數據自動發現具備視覺功能的模型,支持本地優先路由,遠程回退默認禁用。
- 多模態交互:提供圖片附件按鈕,支持拖放和剪貼板粘貼(PNG, JPEG, WebP, GIF, image data URL)。
- 語音對話能力:基於模型能力的語音對話,支持 Gemma 4 E2B, E4B, 和 12B 的音頻處理,原始音頻僅發送到本地 Ollama 且不歸檔。
- 預設與工具:內置通用描述、OCR、UI、圖表、可見代碼/錯誤等預設,並提供
inspect_image顯式工具。 - 隱私保護:API 密鑰從環境變量讀取,不存儲在插件配置中;原始音頻不上傳雲端。
安裝與啓用¶
在安裝之前,請確保系統已安裝 Node.js 22.19+,並且運行着 DeepSeek Harness 版本 0.1.0-rc.6。
1、在插件目錄下複製環境變量模板並配置密鑰:
cp .env.example .env
# Edit .env locally and set DEEPSEEK_API_KEY. Never commit .env.
2、將插件添加到 DSH 的 Web 配置中:
npx @deepseek-ai/dsh@0.1.0-rc.6 plugin --profile web add .
3、啓動 DeepSeek Harness Web 服務:
npx @deepseek-ai/dsh@0.1.0-rc.6 web
啓動後,打開 http://127.0.0.1:3080 即可開始使用。
典型用法¶
- 界面交互:使用頁面上的回形針按鈕選擇圖片,或將圖片拖入輸入框,或直接使用
Cmd/Ctrl+V粘貼。插件會自動分析附件,然後由 DeepSeek 模型基於分析結果進行回答。 - 命令行工具:使用
inspect_image工具分析本地文件路徑。例如:
Use inspect_image to analyze /absolute/path/to/screenshot.png, then explain the UI issue.
- 語音設置:插件默認使用
Serena語音。若要使用其他內置語音,可在配置中設置tts.voice爲Vivian,Dylan,Uncle_Fu, 或Eric。
配置與高級設置¶
插件支持配置多個優先級提供商。在 DSH 的 profile patch 中編輯插件行,可以自定義 Ollama 和 OpenAI 兼容的視覺 API 提供商。
- id: multimodal-router
name: '@hanchn/dsh-multimodal-router'
config:
automaticAttachments: true
archiveDirectory: .dsh-multimodal-router/images
cacheDirectory: .dsh-multimodal-router/cache
discoveryCacheMs: 300000
resultCacheMs: 3600000
resultCacheMaxEntries: 64
ollamaKeepAlive: 2m
ollamaIdleUnloadMs: 60000
maxVisionTokens: 256
providers:
- id: local-auto
type: ollama
baseUrl: http://127.0.0.1:11434
model: auto
apiKeyEnv: ''
priority: 100
- id: company-vlm
type: openai-compatible
baseUrl: https://vision.example.com/v1
model: qwen-vl
apiKeyEnv: COMPANY_VLM_KEY
priority: 50
allowRemoteFallback: false
timeoutMs: 180000
maxImageBytes: 20971520
realtimeAudio: true
transcriptionLocale: zh-CN
audioChunkMs: 1500
maxAudioSeconds: 30
maxAudioBytes: 10485760
tts:
enabled: true
autoStart: true
baseUrl: http://127.0.0.1:8000
model: mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit
voice: Serena
responseFormat: wav
browserFallback: false
maxTextCharacters: 8000
keepAliveMs: 300000
配置說明:
- allowRemoteFallback: true:僅在確認圖片可能自動離開機器時開啓,默認爲 false。
- automaticAttachments: true:將路由後的視覺能力暴露給 DSH 的 admission 層,啓用自動附件處理;設爲 false 僅使用顯式工具。
- archiveDirectory:存儲自動處理圖片的內容尋址本地副本,默認目錄默認被 Git 忽略。
適用場景與注意¶
- 環境要求:需要 Node.js 22.19+ 和 DeepSeek Harness
0.1.0-rc.6。默認路徑需要 Ollama 在127.0.0.1:11434上運行多模態模型。 - 語音限制:Gemma 4 的每次話語音頻限制爲 30 秒。瀏覽器/OS
speechSynthesis回退默認禁用。 - 可選語音服務:可選高質量語音回覆功能需要 MLX-Audio 在
127.0.0.1:8000上運行。
結語¶
hanchn/dsh-multimodal-router 通過零配置的本地發現和本地優先路由,爲 DeepSeek Harness 提供了輕量級的視覺和音頻處理能力。它適合需要在本地環境中保護隱私、不希望手動管理視覺模型提供商的開發者。