DeepSeek Harness (dsh) 是一个以插件为核心的智能体开发框架。在构建智能体时,若使用不支持视觉的纯文本模型,直接上传图片会导致处理中断。dsh-mingmu 插件为这类模型增加了视觉处理能力:当检测到模型无法处理图片时,自动调用视觉模型识别内容,并将识别出的文本喂回主模型。
该插件由 Lab-sku 维护,是一个纯 ESM 插件,不修改源码,卸载后即可还原。
核心功能¶
- 按模型能力触发:插件运行时拦截模型调用,仅对不支持视觉输入的模型进行桥接;原生支持视觉的模型保持原生处理路径。
- 视觉模型识别:内置全球视觉模型启发式识别规则,支持 OpenAI、Anthropic、Google、Qwen、MiniMax、Kimi、GLM、DeepSeek-VL 等 20+ 模型家族。若无法自动识别,也会尝试走桥接。
- 自动升级策略:默认采用级联策略,首选识别模型失败或结果为空时,自动切换备选模型;高级用户可通过环境变量
DSH_VISION_STRATEGY=race开启并发赛跑模式。 - 可视化配置:在 dsh Web 的「设置 → 插件」页面,可以直接配置提供商、模型和策略,支持实时生效。
- 失败不静默:提供
annotate(将失败原因作为文字喂给主模型)和error(严格报错)两种模式,避免静默丢图。 - 凭据安全:API Key 存储于 dsh 官方凭据库(
~/.dsh/.credentials.yaml),不落盘到插件配置文件中。 - 环境变量兜底:除了 Web 设置页,还支持通过环境变量配置所有关键参数。
安装¶
使用官方命令安装插件:
dsh plugin --profile web add github:Lab-sku/dsh-mingmu
配置与使用¶
方式一:Web 设置页(推荐)¶
在 dsh Web 的「设置 → 插件 → 明眸 Mingmu」页面进行配置。修改后保存即可即时生效。
方式二:环境变量¶
在环境变量中配置以下关键项:
| 变量名 | 默认值 | 说明 |
|---|---|---|
DSH_VISION_ENABLED |
true |
总开关 |
DSH_VISION_MODEL |
Qwen/Qwen3-VL-8B-Instruct |
首选视觉识别模型 |
DSH_VISION_MODEL_UPGRADE |
Qwen/Qwen3-VL-32B-Instruct |
备选识别模型 |
DSH_VISION_STRATEGY |
cascade |
策略:cascade(级联)或 race(并发) |
DSH_VISION_BASE_URL |
https://api.siliconflow.cn/v1 |
视觉 API 端点 |
DSH_VISION_API_KEY_ENV |
SILICONFLOW_API_KEY |
API Key 环境变量引用 |
DSH_VISION_FAILURE_MODE |
annotate |
失败模式:annotate 或 error |
DSH_VISION_MAX_TOKENS |
4096 |
识别最大 Token 数 |
DSH_VISION_TIMEOUT_MS |
180000 |
识别超时时间(毫秒) |
API Key 管理¶
插件支持两种 API Key 配置方式,任选其一:
- Web UI:在「明眸 Mingmu」设置页的「视觉 API Key」输入框中粘贴 Key,点击保存。Key 会写入 dsh 官方凭据库。
- 手动写入:在
~/.dsh/.credentials.yaml文件中手动添加,例如:
SILICONFLOW_API_KEY: sk-xxx
注意事项¶
- 依赖版本:本插件基于 dsh
0.1.0-rc.6实测。dsh 接口仍处于 rc 阶段,后续版本升级可能需要适配。 - 性能开销:由于需要判断模型能力,含图消息的每个 step 会额外调用一次
resolveModelInfo,对延迟敏感的场景需留意。 - 隐私与端点:默认图片会发送到 SiliconFlow (
https://api.siliconflow.cn/v1)。用户可将其替换为任意 OpenAI 兼容端点,但需自行评估隐私与可用性。 - Node.js 版本:运行环境 Node.js 版本要求 >= 22.19.0。
- 并发策略:
race/cascade仅在单会话内生效,不改变 dsh 本身的并发模型逻辑。
总结¶
dsh-mingmu 通过拦截和桥接,解决了纯文本模型在 dsh 环境下无法处理图片的问题。它提供了可视化的配置入口和环境变量支持,并注重 API Key 的安全性。在使用前,建议确认本地环境版本(Node.js 和 dsh)并评估第三方 API 端点的隐私策略。