DeepSeek Harness 怎么让 AI 看图?DSH 图片理解能力的开关、视觉模型配置与看图插件 ModLens
DeepSeek Harness 的图片理解能力来自模型,而不是插件:只有声明接受图片的模型才会收到图片,手填的自定义模型默认按纯文本处理。 这篇按「能力从哪来 → 三个字段怎么写 → 插件补什么 → 报错怎么分流」讲完,最后把两种图片报错分开。
DeepSeek Harness 的图片能力来自模型,而不是插件
决定「能不能收图」的是模型自身的模态声明:只有声明了图片输入的模型才会收到图片,而声明只是对端点的断言、不是检查(来源)。 三条要认清的边界:
- 模型说了算 — 模型声明接受图片,请求才带得上图片;没声明的手填自定义模型一律按纯文本处理。预期:给纯文本模型附图片,会在发送前被拒并点名该模型。
- 声明是断言,不是检测 — 写了
image不代表端点真的支持。预期:端点不支持的模型不会被 DSH 拦下,而是由提供方在请求阶段拒绝。 - DeepSeek 自身的 chat-completions 路由是纯文本的 — 并且无法通过配置改变。预期:想让 DeepSeek 模型看图,得走外挂路线(看图插件)或换到声明了图片能力的模型。
DeepSeek Harness 怎么开图片能力:input、defaultInput 与 modelOverrides
input 写在单个模型上、defaultInput 是路由级回退值(默认 [text])、目录提供方的模型则用 modelOverrides 收窄——三者位置不同、语义也不同(来源)。 按场景挑一个:
-
只给某个模型开图 — 在该模型的
input下写[text, image]:yamlmodels: - id: legacy-chat - id: vision-preview input: [text, image]预期:一条路由可同时服务两类模型,
input只作用于写了它的那个模型。 -
给整条路由的手填模型统一开图 — 在路由上写一次
defaultInput:yamlvision-gateway: defaultInput: [text, image] models: - id: first-model - id: second-model预期:目录未描述的模型按它作答;已经声明过图片能力的目录模型不受影响。
-
收窄目录里那个「本来就能看图」的模型 — 用
modelOverrides以模型 id 为键写它自己的input:yamlanthropic: modelOverrides: claude-sonnet-4-5: input: [text]预期:该模型被按纯文本处理,其余目录模型不受牵连。
-
守住两条语法约束 — 除模型自身的列表外,每个模态列表至少要写一项;未知模态在任何位置写入都会被拒绝。预期:写得不对会在配置层面直接报错,而不是等到请求时才暴露。
省略 input、或把它写成空列表,两者同义:保留已安装目录为该模型记录的模态。想按报错反查配置的完整流程,见《模型不支持图片怎么修》。
DeepSeek Harness 的看图类插件补什么:以 ModLens 为例
看图类插件解决的是另一半问题:模型本身不接受图片时,先把图片转成它能读的证据。以生态里的 modlens 为例,它在聊天里粘贴图片后输出结构化 JSON 证据(OCR、版面、语义),让模型引用具体细节而不是凭空想象(来源)。 这类插件的典型分工是:
- 自动发现并包装符合条件的纯文本路由 — 例如文本型的 DeepSeek、GLM 模型会被包装出可选的视觉条目,原生视觉模型自动排除。预期:不用逐个模型手改配置。
- 零配置启动 — 复用你已有的模型配置,装上就有可用条目。预期:装完在模型选择器里能看到带视觉标记的条目。
- 粘贴即读 — 直接粘贴图片,由插件转换成结构化证据再交给模型。预期:模型拿到的是文本证据,因此纯文本模型也能处理图片内容。
- 把插件能力和模型能力配起来看 — 插件补的是转换链路,模型声明决定能不能直接收图。预期:两者要匹配,指望插件「让不支持图片的模型直接收图」是对不上的。

插件市场是发现与安装插件的图形化入口,DSH Plugin Hub 把搜索、分类、版本与更新收在一页里,按分类或关键词就能找到看图类插件和它们的详情页。
DeepSeek Harness 图片报错怎么分流:发送前被拒 vs 提供方拒绝
两种报错指向完全不同的原因:发送前被拒是「模型没声明图片模态」,提供方拒绝是「声明了端点并不提供的能力」(来源)。 按现象分流:
- 图还没发出去就被拒 — 该模型未声明图片模态。预期:给自定义提供方的模型补上
input: [text, image];若模型是 DeepSeek 自身的 chat-completions 路由,则无法通过配置改变,得换模型或走看图插件。 - 请求发出后被提供方拒绝 — 模型声明了端点实际并不提供的图片能力。预期:从授予它图片能力的那个列表里移除
image——可能是模型的input,也可能是路由的defaultInput。 - 改完配置仍然反复失败 — 开启新会话再试。预期:附加的图片会留在会话日志里,只要还待在原会话,同一个请求就会不断重放。
- 报错是转码/Base64 相关,而不是模态相关 — 那是图片编码链路的问题,不是模态声明。预期:按《图片 Base64 400 修复》分流,别去改
input。
DeepSeek Harness 图片理解能力的注意事项与局限
- 模态声明不等于真实能力:
input与defaultInput都是对端点的断言,写错了不会在本地被拦下,只会在请求阶段被提供方拒绝。 - DeepSeek chat-completions 路由改不了:它本身是纯文本的,这不是配置项能解决的问题,只能换模型或外挂视觉插件。
defaultInput不会削掉目录模型的能力:它是回退值,想收窄必须用模型自己的input或modelOverrides。- 改模态后记得换会话:历史消息里的图片会让旧请求持续重放,不清会话就看不到修复效果。
- 插件能力不能替代模型能力:看图插件把图片转成证据喂给模型,改变不了模型是否声明接受图片这一点。
想把图片相关的模型配置整体调一遍,回到《DeepSeek Harness 怎么配置》;想看插件生态的全貌,进 DSH Plugin Hub 的插件市场按分类浏览。
常见问题
DeepSeek Harness 的图片能力来自模型而不是插件:只有声明接受图片的模型才会收到图片,插件补的是「把图片变成模型能读的东西」这类外围能力。所以装看图插件不改变模型本身的模态声明,模型能力与插件能力要配合起来才算真正能看图。
DeepSeek Harness 的手填自定义模型默认按纯文本处理,附上图片会在发送前被拒并点名该模型。修法是在 $DSH_HOME/settings.yaml 给该模型加 input: [text, image];如果这条路由下的手填模型都接受图片,也可以在路由上写一次 defaultInput: [text, image]。
DeepSeek Harness 里 defaultInput 是路由级回退值(默认 [text]),只为目录未描述的模型作答,不会去掉目录模型已有的图片能力。要收窄目录里本就支持图片的模型,得用它自己的 input,而目录提供方没有 models 列表,所以写在 modelOverrides 下、以模型 id 为键。
DeepSeek Harness 分两种:发送前就被拒说明该模型没声明图片模态,属配置问题;请求发出去被提供方拒绝,说明模型声明了端点实际并不提供的图片能力,属过度声明。后者要从授予它图片能力的列表里移除 image,然后**开启新会话**——图片留在会话日志里,不清会话会一直重放同一个失败请求。
modlens 是 DeepSeek Harness 生态里的看图类插件,为纯文本模型外挂视觉:粘贴图片后输出结构化 JSON 证据(OCR、版面、语义),让模型引用具体细节而不是凭空想象。它自动发现并包装符合条件的纯文本模型路由、原生视觉模型会被自动排除,所以它替代不了模型自身的视觉能力,只补纯文本模型的短板。
相关术语
- input(模型模态声明)
- input 是 DeepSeek Harness 里写在单个模型上的模态声明,接受 text 与 image 两个值,只作用于该模型。省略它或写成空列表同义,此时保留已安装目录为该模型记录的模态,目录未描述的模型则回退到路由的 defaultInput。— DeepSeek Harness 官方文档 - 配置模型
- defaultInput(路由级模态回退)
- defaultInput 是 DeepSeek Harness 的路由级模态回退值,默认为 [text]。它是回退而不是覆盖:在目录提供方上只为目录未描述的模型作答,因此绝不会把目录中本就具备图片能力的模型的该能力去掉。— DeepSeek Harness 官方文档 - 配置模型
- modelOverrides(目录模型覆盖)
- modelOverrides 是 DeepSeek Harness 针对目录提供方的模型级覆盖入口,以模型 id 为键。因为目录提供方没有可供填写的 models 列表,要收窄目录中某个模型的模态就得写在这里。— DeepSeek Harness 官方文档 - 配置模型
- 看图类插件(vision plugin)
- 看图类插件是 DeepSeek Harness 生态里把图片转换成文本模型可读证据的一类插件,典型产物是 OCR、版面与语义的结构化 JSON。它作用于纯文本模型的外围链路,并不改变模型自身的模态声明。— liustack/modlens GitHub 仓库
来源
- DeepSeek Harness 官方文档 - 配置模型· deepseek-ai
- liustack/modlens GitHub 仓库· GitHub
- dshplugin/dsh-plugin-hub GitHub 仓库· GitHub