前言¶
DSH 插件机制允许开发者在现有 DeepSeek Harness 上扩展能力。对已经使用纯文本 DeepSeek 模型的人来说,图片输入仍是一个实际缺口:聊天窗里可以贴图,浏览器可以截图,工具也可能返回图片,但模型本身不直接接收 image。
dsh-deepseek-vision 解决的就是这个缺口。它为纯文本 DeepSeek 模型增加一条视觉语言网关路由,让图片能够进入后续处理,而不是要求开发者整体更换模型。
下面介绍它是什么、核心能力、安装方式、配置要点,以及需要注意的边界。
这是什么¶
dsh-deepseek-vision 是 siegfly 维护的 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
这条路由明确声明输入模态包含 text 和 image。
支持的图片输入¶
以下图片来源可以进入该路由:
- 聊天窗贴图
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。
安装与启用¶
前置条件¶
安装前需要满足:
dshCLI 可用- 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。
然后按以下步骤启用:
- 在 Models 页选择
DeepSeek + Vision。 - 在插件配置中填写 VL 密钥。
- 在聊天窗贴图并发送消息。
卸载插件¶
如需移除插件,执行:
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 可配置为 fail 或 placeholder:
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