前言¶
在 DeepSeek Harness (DSH) 中开发智能体时,处理多模态输入通常需要手动判断。此插件解决了这个问题:它检测用户消息中的图像,并自动将路由切换到视觉模型,同时将纯文本请求保留在原始模型上。这避免了在文本轮次中调用视觉模型造成的资源浪费,也防止了在图像轮次中调用纯文本模型导致的失败。
插件介绍¶
@blue/dsh-image-model-router 是一个由 Blue-2571 维护的 DSH 插件。它的核心功能是:当用户消息包含图像时,将代理请求路由到视觉模型(默认为 deepseek-v4-flash-vision-exp);当消息仅包含文本时,保持使用原始模型(如 deepseek-v4-pro)。插件内部使用 WeakMap 进行状态标记,确保状态仅在当前代理和步骤内有效,不会跨代理或跨轮次泄漏。
安装与启用¶
插件默认处于禁用状态,安装后不会立即改变现有路由逻辑。
1. 通过 NPM 安装:
dsh plugin --profile web add @blue/dsh-image-model-router
2. 从本地 Git 检查安装(开发模式):
git clone https://github.com/Blue-2571/dsh-image-model-router.git
cd dsh-image-model-router
dsh plugin --profile web add .
配置说明¶
插件安装后不会自动生效,必须在对应 profile 的 cordis.patch.yml 文件中手动配置并启用。
配置示例:
- id: dsh-image-model-router
disabled: false
config:
provider: deepseek-official
model: deepseek-v4-flash-vision-exp
配置项说明:
* provider:视觉请求的目标提供者 ID,默认为 deepseek-official。
* model:视觉模型 ID,默认为 deepseek-v4-flash-vision-exp。你可以根据 provider 支持的任何图像能力模型进行修改。
工作原理¶
插件在代理执行流程中拦截请求并检测图像:
1. 当用户消息包含图像块时,插件会在 agent/pre-step 阶段标记当前代理。
2. 在 agent/request 阶段,插件检查标记。如果存在标记,则交换 provider 和 model 为视觉配置,并在处理完成后清除标记。
3. 如果消息不包含图像,则跳过标记和交换,使用原始模型配置。
插件会像 DSH 本身的图像策略一样,遍历嵌套的 tool-result 内容,因此工具返回的图像也会被视为输入图像。
注意事项¶
- 默认禁用:安装后必须显式在
cordis.patch.yml中将disabled设为false才能启用。 - 刷新生效:修改配置后,必须重启 profile (
dsh web) 并在浏览器中执行硬刷新,配置才会生效。 - 环境要求:需要 Node.js 环境
^22.19.0 || >=24.0.0。
总结¶
该插件通过自动化模型路由逻辑,降低了在 DSH 中处理多模态输入的复杂度。更多细节和源码,请参考:GitHub 或 DSH 插件目录。