DeepSeek Harness (DSH) 采用插件化架构,允许扩展原生不支持的功能。如果你在 deepseek-v4-pro 或 deepseek-v4-flash 等不支持图片输入的模型上发送截图,消息会被网关直接拒绝。dsh-auto-vision 插件解决了这个问题,它拦截图片,利用配置的视觉模型进行识别,将图片描述作为折叠的上下文条目写入会话历史,而你的原始消息保持不变。
插件简介¶
dsh-auto-vision 是由 soarGuo 维护的 DSH 插件,属于模型推理类别。它不修改 DSH 源码,通过纯插件配置实现功能。其核心价值在于:让不支持图片输入的模型也能接收截图,并持久化视觉上下文。
核心功能¶
- 自动补全模型输入声明:默认开启
autoDeclareInput,插件会自动给已配置的模型补全input: [text, image]声明,满足网关准入检查。 - 拆分消息处理:将图片识别为文本描述,作为独立的“notice”上下文消息追加在原消息后。模型可以引用这些历史描述,实现持久化记忆。
- 请求级剥离:在发送给模型请求时,将图片数据替换为短占位符,确保图片不会实际到达网关,避免被拒绝。
- 识图路由跟随分组:识图模型的选择自动跟随当前会话模型的分组(如 sub2api 或官方路由),保证密钥和配置的一致性。
- 递归识别工具结果:不仅识别顶层消息图片,还能递归识别工具结果(如
read_image)中内嵌的图片。
安装与启用¶
使用 DSH 官方插件命令进行安装:
dsh plugin --profile web add github:soarGuo/dsh-auto-vision
安装完成后,重启 DSH 进程即可生效。插件依赖 DSH 的公开模块,无需额外运行时依赖。
典型配置¶
默认配置¶
插件安装后即可使用默认配置,无需手动修改 settings.yaml:
auto-vision:
visionProvider: deepseek-official
visionModel: deepseek-v4-flash-vision-exp
nativeVision:
[
{ provider: deepseek-official, model: deepseek-v4-flash-vision-exp },
{ provider: deepseek, model: deepseek-v4-flash-vision-exp }
]
autoDeclareInput: true
手动声明¶
如果关闭了 autoDeclareInput,或者需要使用非默认的视觉模型,需在 settings.yaml 中手动声明:
llm-deepseek:
models:
- id: deepseek-v4-pro
input: [text, image]
注意事项¶
- GUI 显示与实际行为:声明
input: [text, image]后,GUI 会显示模型支持图片,但实际图片由插件桥接,不会发送到网关。 - 插件停用后:如果停用插件,不要向被桥接的模型发送图片,否则图片会直达网关并被拒绝。此时应切换到原生视觉模型或恢复插件。
- 官方路由模型:使用官方路由(如
deepseek-official)的模型进行桥接时,同样需要在llm-deepseek.models中声明input: [text, image]。 - 失败处理:识图失败(网络或网关错误)不会阻塞消息,仅会在描述条目中标记失败;用户取消则原样中止。
总结¶
dsh-auto-vision 通过插件方式,为非视觉模型提供了视觉能力。它将图片转换为文本描述并持久化到历史记录中,使得模型能够像原生视觉模型一样处理多模态输入。若需了解最新版本或源码,可访问 GitHub 仓库。