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 仓库

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

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

小夜