dsh-vision-tool: Adding Image Understanding Capabilities to a Text-Only Main Model

前言

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

使用示例

配置完成后,直接在会话中贴图提问即可。

  1. 贴图提问:用户发送一张图片并附带具体问题(例如“这张图里的代码有什么问题?”)。
  2. 工具调用:纯文本主模型收到图片占位符后,根据系统提示中的指导,自主调用 understand_image 工具(不带 path 时默认检查最近一张图)。
  3. 结果返回:视觉模型对图片进行分析并返回文本结果,主模型基于此结果继续推理。

注意事项

  • 环境要求:需要 DSH 0.2.0-rc.2 环境(peer 范围 ^0.2.0-rc.1,@deepseek-ai/cordis ^4.0.1)。
  • 安全风险:Git 安装时需放行 pnpm 构建,这等同于允许该包在本地执行代码。
  • 流式中止:工具执行的流式调用支持随请求中止,取消即中断。
  • 零依赖:构建产物自包含,天然适合离线分发。
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye