hanchn/dsh-multimodal-router:DeepSeek Harness 的零配置多模態路由工具

前言

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 提供了輕量級的視覺和音頻處理能力。它適合需要在本地環境中保護隱私、不希望手動管理視覺模型提供商的開發者。

插件目錄
GitHub 倉庫

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

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

小夜