前言¶
DeepSeek Harness (DSH) 的引擎依据模型声明的 inputModalities 对输入进行路由。纯文本模型(不含 image)在消息准入阶段会被拒绝,或者收到的图片字节会被投影为文本占位符,导致无法真正处理图片。
dsh-vision-tool 是一个由 YJLTF 维护的插件,旨在解决这一问题。它通过放宽准入、注册工具和注入指导,将图片理解能力委托给用户配置的一个多模态模型,再把结果交还给主模型。同时,插件具备智能退避机制,当主模型原生支持图片时,会自动停止干预,保持原生体验。
核心功能¶
- 放宽图片准入:包装
llm.resolveModelInfo服务,让纯文本模型接收带图消息,但引擎仍按适配器真实元数据处理字节投影。 - 工具集成:
understand_image:自动检查会话中最近的一张图(典型贴图场景),或读取指定路径的文件。list_conversation_images:列出会话中出现的全部图片供挑选。
- 智能退避:按模型能力退避,原生支持图片的模型不受任何影响。
- 指导注入:自动在系统提示中注入识图指导,引导主模型结合上下文具体提问。
- 配置即改即生效:支持 Web 端官方风格的配置卡片,修改配置无需重启会话。
- 零运行时依赖:产物约 18 kB,仅依赖宿主提供的 dsh 包与 schemastery。
安装与启用¶
在目标 dsh 环境中执行以下命令安装:
dsh plugin --profile <profile> add github:YJLTF/dsh-vision-tool
注意:Git 安装会拉取源码并触发构建。若使用 pnpm ≥ 10,首次安装可能会失败,需在 profile 的 pnpm-workspace.yaml 中放行构建授权:
allowBuilds:
dsh-vision-tool: true
安全提示:放行构建即允许该包代码在安装期于本地执行,请仅对可信的包放行,建议钉住 commit 版本。
配置说明¶
插件依赖宿主环境配置,需指定视觉模型并提供方。
最小可用配置:
visionProvider: zai-coding-cn
visionModel: glm-5.3-flash
配置项说明:
| 字段 | 类型 | 默认值 | 含义 |
|---|---|---|---|
visionProvider |
string | '' |
小参数多模态模型的提供方路由。 |
visionModel |
string | '' |
小参数多模态模型的精确模型 id。 |
maxTokens |
number | 2048 |
视觉调用最大输出 token 数。 |
guidanceInjection |
boolean | true |
是否注入识图指导到系统提示。 |
overrides |
[] |
按模型显式声明模态,优先级高于适配器元数据。 |
前置条件:所选的视觉模型必须在 DSH 的模型配置中声明图片输入能力,否则引擎会投影掉图片字节,导致视觉模型无法识图:
models:
- id: <vision-model>
input: [text, image] # 必须声明 image
使用示例¶
配置完成后,直接在会话中贴图提问即可。
- 贴图提问:用户发送一张图片并附带具体问题(例如“这张图里的代码有什么问题?”)。
- 工具调用:纯文本主模型收到图片占位符后,根据系统提示中的指导,自主调用
understand_image工具(不带path时默认检查最近一张图)。 - 结果返回:视觉模型对图片进行分析并返回文本结果,主模型基于此结果继续推理。
注意事项¶
- 环境要求:需要 DSH 0.2.0-rc.2 环境(peer 范围
^0.2.0-rc.1,@deepseek-ai/cordis ^4.0.1)。 - 安全风险:Git 安装时需放行
pnpm构建,这等同于允许该包在本地执行代码。 - 流式中止:工具执行的流式调用支持随请求中止,取消即中断。
- 零依赖:构建产物自包含,天然适合离线分发。