nlqh7/dsh-vision-router

nlqh7★ 1TypeScript最后同步: 2026-08-16

在 GitHub 打开

给 DeepSeek Harness 纯文本模型加视觉:聊天框拖图自动分流给用户配置的视觉模型转文字,v4 不切换模型即可识图。Vision for text-only DSH models: routes chat-box images to a user-configured vision model and returns text descriptions, deepseek-v4-pro reads images without switching.

README 摘要

@deepseek-ai/dsh-vision-router English 中文 让纯文本主模型(如 deepseek-v4-pro )在聊天框接收图片:图片在前置步骤被路由到用户配置的视觉模型转成文字描述,再回填给主模型。主模型全程只看到文字,无需切换模型。 工作原理 插件做三件事: 1. 能力声明改写 — 把主模型的 inputModalities 报告为 ['text', 'image'] ,使前端放行聊天框图片。通过替换 ctx.llm.resolveModelInfo 实现(cordis 无方法装饰 API,采用 monkey-patch 并在插件卸载时恢复原方法,避免 HMR 泄漏)。 2. 自动发现视觉模型 — 扫描 ctx.llm.listProviders() 与 listModels(provider) ,找到第一个 inputModalities 含 image 的模型作为视觉模型;也可用 visionProvider / visionModel 显式指定。发现结果按 llm/adapters-updated 失效重扫。 3. pre-step 分流转文字 — 监听 agent/pre-step ,扫描进入步骤的消息里的 ImageBlock ,对每张图构造一条 [{type:'image', attachment}, {type:'text', text: 描述指令}] 的 user 消息经 ctx.llm.stream() 发给视觉模型,把返回文字作为 【图片内容】… 文本块替换原图片块。视觉模型适配器(pi-ai)负责读附件字节与 base64 序列化,插件零视觉 API 代码。 配置 挂载 插件加载前,用户需在 DSH「设置 → 模型 → 添加自定义提供方」里配置一个 OpenAI 兼容视觉模型,并给该模型声明 input: [text, image] (见 DSH 官方文档《配置模型》「图片输入」一节)。插件不内置任何视觉 provider 的地址或密钥。 安装 挂载(cordis.patch.yml) 装好并重启后,用纯文本主模型在聊天框拖图,图片会自动转成文字描述。 Model Experience 主模型请求(图片被替换) What the model sees 主模型收到的消息里,每个 ImageBlock 被替换成一个文本块。视觉调用成功时文本为 【图片内容】 前缀 + 描述正文;未配置视觉模型时为 [图片:未配置视觉模型,无法识别] ;视觉调用失败或返回空文本时为 [图片:识别失败] 。 Token effect 每张图贡献一次替换文本,长度由视觉模型描述决定;图片字节从不进入主模型上下文。每张不同的图各触发一次视觉调用,其 token 计费发生在视觉模型侧,与主模型请求分离。 KV Cache effect 替…

在 GitHub 查看完整 README →
内容/媒体codex-styledeepseek-harnessdsh-pluginimagemultimodalvisionagent

分类