前言¶
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 提供了轻量级的视觉和音频处理能力。它适合需要在本地环境中保护隐私、不希望手动管理视觉模型提供商的开发者。