dsh-deepseek-vision:给 DeepSeek Harness 纯文本模型增加图片输入路由

前言

DSH 插件机制允许开发者在现有 DeepSeek Harness 上扩展能力。对已经使用纯文本 DeepSeek 模型的人来说,图片输入仍是一个实际缺口:聊天窗里可以贴图,浏览器可以截图,工具也可能返回图片,但模型本身不直接接收 image

dsh-deepseek-vision 解决的就是这个缺口。它为纯文本 DeepSeek 模型增加一条视觉语言网关路由,让图片能够进入后续处理,而不是要求开发者整体更换模型。

下面介绍它是什么、核心能力、安装方式、配置要点,以及需要注意的边界。

这是什么

dsh-deepseek-visionsiegfly 维护的 DSH 插件,当前发布版本为 0.1.7,许可证为 MIT。

一句话定位:它是给 DeepSeek Harness 的视觉语言网关插件,为纯文本 DeepSeek 模型增加图片输入路由;目录声明支持 image 的模型可以直通官方视觉端点,其他模型可以由可配置 VL 模型先把图片描述为文字。

它覆盖两条路径:

  • 目录声明支持 image 的模型,例如 deepseek-v4-flash-vision-exp,图片直通原生 DeepSeek 视觉端点。
  • 其他纯文本或未列目录模型,先由可配置 VL 模型把图片描述成文字,再交给 DeepSeek。

运行环境要求如下:

Node.js ^22.19.0 || >=24.0.0

安装插件时还需要 PATH 中有 pnpm

核心功能

注册独立 provider 路由

插件会注册一条独立路由,并在模型选择器中使用显示名 DeepSeek + Vision

provider: deepseek-vision
displayName: DeepSeek + Vision
inputModalities: text, image

这条路由明确声明输入模态包含 textimage

支持的图片输入

以下图片来源可以进入该路由:

  • 聊天窗贴图
  • tool-fs read_image
  • 浏览器截图
  • MCP 工具返回图片
  • ACP 客户端内联图片

按模型分流处理

插件会根据所选模型选择不同处理方式:

  • 如果模型目录声明支持 image,例如 deepseek-v4-flash-vision-exp,图片会直通原生 DeepSeek 视觉端点。
  • 如果模型是纯文本模型或未在目录中列出,插件会先调用可配置 VL 模型,将图片描述成文字,再交给 DeepSeek 继续处理。

描述缓存

插件按 attachmentId 在进程内使用 LRU 缓存描述结果。

这意味着同一张图片在重试、上下文压缩或后续轮次中复用时,会复用同一份描述,避免重复计费。

保留原始会话记录

原始图片仍会持久化进 session log。

这样可以保持历史、回放、重构等会话行为不受影响。

可配置 VL 端点

插件支持配置 VL 端点、模型、提示词和密钥,并兼容 OpenAI 风格 /chat/completions 网关。

失败策略

插件提供 fail-closed 失败语义,也可以配置 placeholder 降级,并有稳定错误码。

默认失败策略为 fail

安装与启用

前置条件

安装前需要满足:

  • dsh CLI 可用
  • PATH 中有 pnpm
  • Node.js 版本满足 ^22.19.0 || >=24.0.0

安装 DSH CLI

如果是新机器,先安装 DSH CLI:

npm install -g @deepseek-ai/dsh

这一步用于让 dsh 命令进入 PATH,后续可以直接调用 dsh plugin 相关命令。

安装插件

通过 web profile 安装插件时,可以使用 npm spec:

dsh plugin --profile web add dsh-deepseek-vision

也可以使用 git spec 锁定具体 commit:

dsh plugin --profile web add github:siegfly/dsh-deepseek-vision#<sha>

该插件支持 npm、git、目录、tarball 等 spec,并支持 web 与 headless profile。实际使用时按当前环境和发布渠道选择对应 spec。

启用插件

安装完成后,重启 dsh web

然后按以下步骤启用:

  1. 在 Models 页选择 DeepSeek + Vision
  2. 在插件配置中填写 VL 密钥。
  3. 在聊天窗贴图并发送消息。

卸载插件

如需移除插件,执行:

dsh plugin --profile web remove dsh-deepseek-vision

典型配置

在“设置 → 插件 → 插件配置”卡片中,可以配置以下 vl.* 项:

vl.apiKeyEnv
vl.model
vl.baseURL
vl.describePrompt
vl.timeoutMs
vl.maxCacheEntries
vl.onFailure

凭据解析优先级如下:

进程环境变量(最高、只读)→ GUI 管理的 .credentials.yaml → .env 回退

因此,通过 Web Models 页写入的凭据可用;而本次进程显式导出的 key 始终优先,并且不能在 GUI 内修改。

失败策略方面,vl.onFailure 可配置为 failplaceholder

  • fail:描述失败时,整个请求失败。
  • placeholder:描述失败时,降级为文字占位继续。

数据流与兼容边界

使用这个插件时,需要注意以下边界:

  • 图片数据流只经过用户配置的 VL 端点;无匿名回退、代理服务器、磁盘答案缓存。
  • 发布版不锁定官方 dsh 版本。
  • 官方 CLI 路径直接安装发布产物,兼容性未经目标机验证。
  • install-profile 重建路径会在目标机使用自己的 dsh 重建;构建成功即兼容证明,无 CLI 路径有分级提示。
  • dshCompat.anchorVersion 0.1.1-rc.2 仅表示 committed lib provenance,不是安装门禁。
  • provider / displayName 修改即时生效;改成已被占用的路由 id 时,两个注册表保留旧值并记日志。

该插件会随 dsh 进程加载运行。安装前请检查源码、依赖与许可证;当前许可证为 MIT。

适用场景

适合以下情况:

  • 想继续使用纯文本 DeepSeek 模型,同时处理聊天窗图片、截图或工具返回图片。
  • 已经有一个可配置的 VL 端点,并希望通过 OpenAI 风格 /chat/completions 网关提供图片描述能力。
  • 希望原始图片保留在 session log,同时避免同一张图片重复描述和重复计费。

不适合以下情况:

  • 无法访问自配置 VL 端点的环境。
  • 要求图片完全不出网,且不经过自己配置端点的场景。

链接

  • 目录页:https://www.skillhub.cn/plugins/siegfly/dsh-deepseek-vision
  • GitHub:https://github.com/siegfly/dsh-deepseek-vision
羽毛球分组比赛记分
小程序二维码

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

小夜