dsh-vision-proxy

12Star1Fork0Issue0Watching

让 DeepSeek Harness 在 DeepSeek 模型下也能发送图片:自动调用第三方视觉模型把图片转写成文字,再交给 DeepSeek 作答。

机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
JavaScript
License
MIT
分支
main
dashscopedeepseek-harnessdsh-pluginimage-understandingmultimodalocrqwenvision

安装

$ dsh plugin --profile web add dsh-vision-proxy

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 Flyvhidbwo/dsh-vision-proxy:先查看仓库 https://github.com/Flyvhidbwo/dsh-vision-proxy.git 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

在 DeepSeek Harness 里,选中 DeepSeek 模型时 GUI 附加图片会被原生拒绝。本插件注册一条新的"DeepSeek + 自动识图"路由:在请求流出站前自动把每张图片交给第三方视觉模型转写成结构化文字,再把纯文本对话交给 DeepSeek 作答——DeepSeek 仍然是回答的"大脑",图片理解只是附加能力。

核心能力

  • 把 GUI 粘贴的图片自动转写成文字,让 DeepSeek 也能基于图片内容作答
  • 支持任意 OpenAI 兼容视觉端点:默认百炼 qwen3.7-flash,也兼容 QwenCloud 国际站、智谱、OpenRouter、自建网关
  • 自动探测本机 Ollama,图片不出本机即可识图,无 key 无注册也能用
  • 多模型降级链:主模型失败自动按顺序切换其他厂商/端点
  • 同一张图片按内容哈希在进程内缓存,每进程最多转写一次
  • 防卡死:免费端点 20 秒硬超时,刚失败的端点冷却 60 秒避免反复踩坑

技术实现

  • 语言: JavaScript (ESM, 带 JSDoc 类型注释)
  • 关键依赖: schemastery(配置 schema 校验)、sharp(可选图片降采样)、node:crypto(SHA-256 内容哈希)
  • 架构模式: 通过 cordis.patch.yml 注入新条目,注册一条新 LLM 路由(默认 deepseek-vision)作为 proxy adapter:包装现有 DeepSeek 适配器,resolveModelinputModalities 覆盖为 ['text', 'image'] 通过附件预检,stream 拦截图片块调用视觉模型转写后再转发
  • 入口文件: lib/index.js 中的 apply(ctx, config),由 postinstall 钩子和 cordis 自动加载

适用场景

在 DeepSeek Harness 中选了 DeepSeek 模型,又想直接粘贴截图、表情包、UI 截图、代码截图等图片继续提问——DeepSeek 官方接口不接受图片,每次只能"先复制到别的工具看图,再打字告诉 DeepSeek"。本插件在请求流出站前自动把图片转成文字,让 DeepSeek 基于文字描述作答,体验接近原生多模态。

前置依赖与兼容性

依赖最低版本说明
DSH>=0.1.0-rc.6插件包通过 engines.dsh 声明;需要 cordis.patch.yml 注入机制
Node>=22.19.0插件包通过 engines.node 声明
平台跨平台macOS / Windows / Linux 均可;Windows 下环境变量变更可能不传到运行中的进程,建议直写 apiKey 配置
原生模块sharp 仅作为 optionalDependencies 提供,未安装时大图不降采样、其余功能正常

安装方式

dsh plugin --profile web add dsh-vision-proxy

配置项

配置类型说明默认值
providerId字符串模型选择器中显示的路由 iddeepseek-vision
innerProvider字符串被包装的现有适配器路由 iddeepseek-official
baseURL字符串视觉模型的 OpenAI 兼容端点(任意厂商,含本地 Ollama)DashScope 兼容模式
apiKey字符串(密钥)视觉模型密钥;空时依次回退 $VISION_API_KEY$DASHSCOPE_API_KEY;Windows 下直写最可靠
anonymous布尔跳过鉴权头,用于免注册端点;受 20 秒超时上限约束false
model字符串视觉模型 id(如 qwen3.7-flash、qwen3-vl-flash、glm-4.6v-flash)qwen3.7-flash
maxTokens数字 (1-32768)视觉模型单次输出上限,思考型模型建议给足4096
timeoutMs数字 (1000-300000)单次视觉模型请求超时;匿名端点无论如何被强制 20 秒上限120000
maxImagePixels数字 (0-100000000)超过该像素数的图片在转写前自动缩小(需装 sharp);设为 0 关闭4000000
marker字符串每条转写文本前的前缀标记,便于辨识[图片转译]
failureMode枚举 placeholder / error所有视觉模型都失败时的行为:占位文本继续(默认)或整轮失败placeholder
autoLocalOllama布尔启动时探测本机 Ollama,命中则前置进降级链,图片不出本机true
localOllamaModel字符串指定 Ollama 模型 id;空则自动选本地报告的首个视觉模型
fallbackModels对象数组自定义降级链,每条可指向不同厂商;无 key 的非匿名条目自动跳过[]

常见问题

Q: 安装后怎么验证生效?

A: 执行 dsh --profile web --dump-config | grep dsh-vision-proxy,应看到恰好一条插件条目;然后重启 dsh web,模型选择器会出现"DeepSeek + 自动识图"选项。向对话粘贴图片时,应能看到 [图片转译] 标记后由 DeepSeek 作答。

Q: 没有 API key 能用吗?

A: 可以。插件默认会自动探测本机 Ollama(http://localhost:11434),命中就把 Ollama 前置进降级链——图片不出本机、无需注册。Ollama 也没装且没 key 时,转写会在数秒内快速失败并给出配置指引,不会卡死对话。

Q: Windows 下明明导出了环境变量却报"no API key"?

A: Windows 的 explorer.exe 会缓存环境变量,运行中的 dsh 进程读不到新值。在 profile 的 cordis.patch.yml 里直接把 apiKey 写进插件配置,是 Windows 上唯一可靠的方式。dsh rc.6 不读 .env 文件,那不是替代方案。

Q: pnpm ≥ 10 安装报 Ignored build scripts 怎么办?

A: pnpm 10 起默认拦截依赖构建脚本。在 profile 的 pnpm-workspace.yamlallowBuilds: { dsh-vision-proxy: true, sharp: true },然后重跑一次 dsh plugin --profile web add dsh-vision-proxy 完成 bundle 注册。

Q: 转写结果丢失小字细节怎么办?

A: 这是视觉模型本身的能力上限,不是插件 bug。密集 UI 截图/小字场景建议换更强的模型(如 qwen3-vl-plus)或调大 maxTokens;也可以让图片先降采样到合适分辨率再发起对话。

Q: 图片数据会上传到哪?会被保存吗?

A: 转写时图片以 base64 通过 HTTPS 发往当前生效的视觉端点(配置的主模型 / 探测到的本地 Ollama / 降级链条目)。插件只在进程内做 SHA-256 内容缓存(200 条上限),不写本地文件,不上传到任何插件自有的服务。敏感图片请用本地 Ollama 或自建端点。

Q: 全部视觉端点都失败时整个对话会断吗?

A: 默认不会。failureMode: placeholder(默认)会在原图位置插入"[图片转译失败: 原因]"占位文字,对话继续;失败的图片按内容哈希记 60 秒,期间不发起新网络请求。failureMode: error 才会让整轮失败。

Q: 哪些厂商或模型可选?

A: 任何 OpenAI 兼容的视觉端点都行。默认主模型是百炼 qwen3.7-flash(便宜、快、不限速),也支持 QwenCloud 国际站、智谱 glm-4.6v-flash、OpenRouter、本地 Ollama、自建网关;通过 baseURL/model 切换主模型,通过 fallbackModels 把多家厂商串成降级链。

上手难度

入门 — bundle 自带合理默认配置,无需任何配置即可工作:有 key 自动走付费快速通道,无 key 自动探测本地 Ollama,再不行就快速失败而非卡死。

已知问题与限制

  • 密集 UI 截图的小字细节可能在转写中遗漏,这是视觉模型本身的能力上限,不是插件 bug;建议换更强大模型或调大 maxTokens(README.md:174)
  • 免费匿名端点限速严格,HTTP 429 时本插件立即失败并跳过(不重试 Retry-After),以防卡死整轮对话(lib/index.js:248-255)
  • 刚失败的端点会进入 60 秒冷却被跳过,避免反复踩坏死端点(lib/index.js:62, 390-392)
  • 转写结果仅做进程内缓存(SHA-256,200 条上限),重启进程后失效,且不写入磁盘(lib/index.js:66, 333)
  • sharp 是可选依赖,未安装时超过像素阈值的图片不降采样、转写成本可能更高(package.json:58-60)
  • 默认不再内置任何第三方匿名免费端点作为兜底,需要时可自行通过 fallbackModelsanonymous: true 条目(README.md:55, lib/index.js:117)

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/Flyvhidbwo/dsh-vision-proxy)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录