
Security News
Deno Goes the Way of the Dinosaur
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.
dsh-vision-proxy
Advanced tools
DeepSeek brain + automatic image transcription for DeepSeek Harness: a deepseek-vision provider route that transcribes attached images to text before delegating to the text-only DeepSeek adapter. Official deepseek-v4-flash-vision-exp by default (a pure-te
保持 DeepSeek 作为对话大脑,图片照样直接发。 为 DeepSeek Harness 打造:GUI 附加图片自动转译,纯文本 DeepSeek 也能识图。
⚠️ 兼容性与定位(2026-08):本插件已适配 dsh 0.1.1-rc.2(adapter prepareCall 接口)。dsh 0.1.1 起原生支持多模态(DeepSeek-V4-Flash-Vision-Exp 等官方视觉模型)——如果你用官方视觉模型,直接发图即可,不需要本插件。DeepSeek-V4-Pro / 普通 Flash 仍是纯文本模型,识图靠本插件转译桥接(官方仅 Flash-Vision-Exp 原生多模态)。插件适用于:Pro/文本模型识图、本地 Ollama(图片不出本机、免费)、自定义 OpenAI 兼容 VLM 场景。
DeepSeek Harness 原生按模型声明的 inputModalities 决定是否放行图片附件。DeepSeek 的 chat-completions 线路是纯文本的,所以选中 DeepSeek 时附加图片会被原生拒绝。已有的视觉插件提供 view_image 等工具(适用于文件路径),但 GUI 图片附件对纯文本模型依然失败。
本插件补上这个缺口:注册一条新提供商路由(deepseek-vision),包装真正的 DeepSeek 适配器——对外声明支持图片输入(附件预检放行),并在请求流里把每张附加图片转译成文字后再委托给 DeepSeek。对话仍然由 DeepSeek 作答,识图只是附加能力。
用户附加图片 ──▶ deepseek-vision 路由 ──▶ 经 VLM 转译(OCR+版式+细节)
│ │
▼ ▼
DeepSeek 作答 ◀── 纯文本对话(图片已替换为 [图片转译] 文字)
fallbackModels 都可以带各自独立的 baseURL/model,一个安装即可串联多家。autoLocalOllama(默认开)启动时探测 http://localhost:11434,检测到 Ollama 就自动加入降级链——图片不出本机,免 key 免注册。VISION_API_KEY / DASHSCOPE_API_KEY 或安装 Ollama)——绝不静默卡住。VISION_API_KEY / DASHSCOPE_API_KEY 后自动走你配置的付费端点(默认百炼 qwen3.7-flash——快、便宜、不限速;百炼/QwenCloud/智谱/OpenRouter 或任意 OpenAI 兼容端点均可);没有 key 的条目会被跳过而不是失败。postinstall 询问你是否有 VLM API key。非交互环境自动跳过,安装永不卡死。启动时打印 PRIVACY NOTICE 标明当前使用的端点。rate_limit / quota / auth / region / model_not_found / context_too_large / http 分类给出可操作提示。sharp 时,超过 maxImagePixels 的图片转译前自动缩小——大截图更快;没有 sharp 则优雅降级原图直发。read_image。原生 read_image 工具在该路由下同样可用(它的能力门禁读取同一份模型信息)。一套配置(baseURL + model,可选 apiKey)覆盖所有后端:
| 场景 | baseURL | model | 说明 |
|---|---|---|---|
| 百炼(国内)——默认主模型 | https://dashscope.aliyuncs.com/compatible-mode/v1 | qwen3.7-flash / qwen3-vl-flash | 便宜、快、不限速。密钥:千问平台 sk-ws-… 或百炼 sk-… |
| 本地 Ollama(自动探测) | http://localhost:11434/v1 | 第一个视觉模型 | 装了就零配置可用;图片不出本机 |
| QwenCloud(国际) | https://dashscope-intl.aliyuncs.com/compatible-mode/v1 | qwen3-vl-plus 等 | 国际版 |
| 智谱(免费档) | https://open.bigmodel.cn/api/paas/v4 | glm-4.6v-flash | 免费档仍需注册智谱(免费)key |
| 任意 OpenAI 兼容端点 | 你的端点 | 你的模型 | OpenRouter、火山 Ark、vLLM、各类网关……插件只讲 /chat/completions |
⚠️ 不再内置任何第三方匿名免费端点作为默认兜底。实测中匿名免费端点(如 OVHcloud AI Endpoints)限速极严且会无响应挂起——作为默认只会复现"卡死"体验。如果你仍想用某个匿名端点,请通过
fallbackModels自行添加并设anonymous: true(20 秒超时上限依然生效)。
| 模型 | 输入 | 输出 | 一张 1080p 截图(≈2000 token) |
|---|---|---|---|
| qwen3-vl-flash | ¥0.15/百万 token | ¥1.5/百万 token | ≈ ¥0.0005(约 0.05 分钱) |
| qwen3.7-flash | ¥0.2/百万 token | ¥0.8/百万 token | ≈ ¥0.001(约 0.1 分钱) |
| deepseek-v4-flash-vision-exp(官方,默认) | ¥3/百万(高峰)· ¥1.5(空闲) | ¥9/百万(高峰)· ¥4.5(空闲) | ≈ ¥0.01(高峰)/ ¥0.005(空闲) |
| 本地 Ollama | 免费 | 免费 | ¥0(图片不出本机) |
温馨提示:识图默认走官方 deepseek-v4-flash-vision-exp(高峰 9:00-12:00 / 14:00-18:00 为全价,其余时间半价;图片按尺寸折算 token,不按张计费)。与 V4-Pro 同档价约 1/3。
图片按 token 折算(各平台把图片按分辨率折算成 token,一张 1080p 截图 ≈ 2000 token)。按上面价格,一张图不到 1 厘钱;即使重度使用(每天 100 张)每月也就几块钱,基本可以忽略。本地 Ollama 完全免费。以百炼控制台实时标价为准。
key 读取顺序:配置 apiKey → $VISION_API_KEY → $DASHSCOPE_API_KEY。匿名端点(anonymous: true)和本地主机无需 key;无 key 的非匿名条目自动跳过。
dsh plugin --profile web add dsh-vision-proxy
安装时会问你一个问题——你有 VLM API key 吗? 回答 y 走付费快速通道,回答 N(默认)走本地/零配置路径。重启 dsh web,在模型选择器里选 DeepSeek + 自动识图,然后把图片粘贴进任意对话——完事。
pnpm ≥ 10 默认拦截依赖构建脚本——首次安装会以非零码退出并提示 Ignored build scripts: dsh-vision-proxy, sharp。请批准两者(插件的安装确认提示 + sharp 的可选二进制),然后重跑一次安装完成 bundle 注册:
# 写在 profile 的 pnpm-workspace.yaml 里
allowBuilds:
dsh-vision-proxy: true
sharp: true
dsh plugin --profile web add dsh-vision-proxy # 批准后重跑
npm 官方源太慢?
dsh plugin --profile web add dsh-vision-proxy --registry=https://registry.npmmirror.com(参数会转发给 pnpm)。
一段 deepseek-vision 路由上的真实对话(DeepSeek-V4-Flash 作为大脑):用户粘贴了一张表情包并问 "你看到了什么",图片被 VLM 自动转译,DeepSeek 基于文字完整作答——单步,约 7.6 秒。
左图:模型选择器显示 deepseek-vision 路由(DeepSeek + 自动识图)已选中——这正是图片附件得以放行的原因。右图:DeepSeek 基于转译文字给出的完整回答。
用户粘贴表情包 + "你看到了什么"
→ 图片块经 VLM 自动转译(OCR + 版式):
"我是吃白饭的 / 蓝色大肥鱼! (理直气壮.jpg) — Q版蓝发女仆装少女,
身后蓝鲸尾巴,端碗举筷,表情兴奋"
→ DeepSeek 基于文字对表情包做完整视觉分析
两条自主路径都覆盖:view_image 工具(任意路由,支持文件路径与 URL)和图片块自动转译(deepseek-vision 路由——对话中途附加的图片)。
bundle 已自带合理的默认配置(见上方策略说明),一般无需改动。要覆盖时,请在 profile 中写 id 定向覆盖,不要用 insert(见下方警告):
# $DSH_HOME/profiles/web/cordis.patch.yml —— 用户层覆盖示例
- id: dsh-vision-proxy
name: 'dsh-vision-proxy'
config:
baseURL: https://dashscope.aliyuncs.com/compatible-mode/v1
apiKey: 'sk-…' # 或留空读环境变量(Windows 下直写这里最可靠)
model: qwen3.7-flash
maxTokens: 4096
timeoutMs: 120000 # 匿名端点无论如何都会被强制 20s 上限
maxImagePixels: 4000000
marker: '[图片转译]'
autoLocalOllama: true
fallbackModels: [] # 可自行添加 {model, baseURL, apiKey?, anonymous?, timeoutMs?}
⚠️ 不要写成
- insert: [{id: dsh-vision-proxy, …}]。 dsh 的 patch 语义里insert是往条目列表追加——bundle 自带的条目和你写的同 id 条目会同时存在并被实例化,deepseek-visionadapter 会被注册两次(行为未定义)。顶层- id:条目才会命中既有行并整体替换其config;未列出的键回落到插件 zod schema 的.default()值(如maxTokens=4096、timeoutMs=120000、autoLocalOllama=true),所以只写apiKey/model也能工作。
| 键 | 默认值 | 含义 |
|---|---|---|
providerId | deepseek-vision | 模型选择器中显示的路由 id |
innerProvider | deepseek-official | 被包装的现有适配器路由 |
baseURL | DashScope 兼容模式 | OpenAI 兼容 VLM 端点(任意厂商,含 Ollama) |
apiKey | '' | VLM 密钥;回退读取 $VISION_API_KEY,再回退 $DASHSCOPE_API_KEY。Windows 下环境变量变更可能不生效,直写这里最可靠 |
anonymous | false | 跳过 Authorization 头(用于免注册端点;受 20s 超时上限约束) |
model | qwen3.7-flash | 视觉模型 id(如 Qwen2.5-VL-72B-Instruct、qwen3-vl-flash、glm-4.6v-flash、qwen3-vl:4b) |
maxTokens | 4096 | VLM 输出上限(思考型模型先耗推理 token,预算给足) |
timeoutMs | 120000 | VLM 请求超时(匿名端点无论如何都被强制 20s 上限) |
maxImagePixels | 4000000 | 超过该像素数的图片转译前自动降采样(装有 sharp 时;0 关闭) |
marker | [图片转译] | 每条转译文本前加的前缀标记 |
failureMode | placeholder | 全部 VLM 失败时的行为:placeholder(默认)插入 [图片转译失败: 原因] 文本并继续对话——死端点不会毒化会话;error 则整轮失败(旧行为) |
autoLocalOllama | true | 启动时探测 http://localhost:11434;检测到则前置进降级链 |
localOllamaModel | '' | 指定 Ollama 模型 id;留空自动选本地 Ollama 报告的第一个视觉模型 |
fallbackModels | [] | 降级链:{model, baseURL?, apiKey?, anonymous?, timeoutMs?},每条可指向不同厂商;无 key 的非匿名条目自动跳过 |
Windows 上关于 API key 的说明:
dsh --profile <name> --dump-config会原样打印组合后的配置(写在cordis.patch.yml里的 key 会出现在明文输出中),但另一方面,进程启动后设置的环境变量(explorer.exe 会缓存旧环境)可能永远到不了正在运行的 dsh。如果你明明导出了 key 却看到skipped — no API key,请把apiKey直接写进插件配置——这是 Windows 上唯一可靠的方式。(注意:dsh rc.6 不加载.env文件,那不是替代方案。)
dsh --profile web --dump-config | grep -A3 dsh-vision-proxy # 应恰好一个条目(注意:会明文打印配置,含 key)
dsh web → 模型选择器出现 DeepSeek + 自动识图。[图片转译] 标记后 DeepSeek 作答。failureMode: placeholder,默认):某张图全部 VLM 失败时插入 [图片转译失败: 原因] 占位文本并继续对话;失败的图片按内容哈希记忆 60 秒,期间不再发起网络请求。历史里有过图片的会话,即使 VLM 挂掉也能继续纯文字对话。failureMode: error 时),错误会列出每一次尝试并附可操作指引。qwen3-vl-plus)或调大 maxTokens。| 现象 | 原因与解决 |
|---|---|
明明导出了 VISION_API_KEY 仍报 skipped — no API key | Windows 在 explorer.exe 里缓存环境变量,运行中的 dsh 读不到新值。把 apiKey 直写进插件配置,重启 dsh |
安装时报 Ignored build scripts: dsh-vision-proxy, sharp | pnpm ≥ 10 默认拦截依赖构建脚本。在 profile 的 pnpm-workspace.yaml 加 allowBuilds: {dsh-vision-proxy: true, sharp: true},然后重跑安装 |
发布当天安装报 ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION | pnpm 11 默认 minimumReleaseAge 为 1 天(供应链策略)。在 profile 的 pnpm-workspace.yaml 加 minimumReleaseAge: 0,或给 dsh plugin add 加 --config.minimum-release-age=0,然后重跑 |
匿名端点报 all N vision model(s) failed … rate_limit | 匿名免费档限速极严且可能挂起。配置 key 或改用本地 Ollama |
| 新装无 key 时约 20 秒后失败 | 没有 key 也没有本地 Ollama——这是预期的快速失败路径。安装 Ollama 或配置 key |
| npm 官方源下载慢 | 使用 --registry=https://registry.npmmirror.com(参数转发给 pnpm) |
转译会把图片字节(base64,HTTPS)发送到配置的 VLM 端点——图片数据会离开你的机器,除非 baseURL 指向本地服务(如 Ollama)。除 harness 自身的附件存储外不持久化任何东西。敏感图片请使用自己的端点或本地模型——或者不安装本插件。
本插件只使用 rc.6 上稳定的公共接口:
ctx.llm.registration(innerProvider).adapter —— 拿到被包装的适配器;ctx.llm.registerAdapter([providerId], proxyAdapter) —— 注册新路由(无 DUPLICATE_ADAPTER 冲突);resolveModel 把 inputModalities 覆盖为 ['text', 'image'] —— 满足附件预检(api-proxy)与 read_image 门禁(dsh-tool-fs);stream 转译图片块(结构 { type: 'image', attachment },字节经 ctx.get('attachments').readImage(ref) 获取),再 yield* 原样转发内部适配器的流。MIT
FAQs
DeepSeek brain + automatic image transcription for DeepSeek Harness: a deepseek-vision provider route that transcribes attached images to text before delegating to the text-only DeepSeek adapter. Official deepseek-v4-flash-vision-exp by default (a pure-te
The npm package dsh-vision-proxy receives a total of 0 weekly downloads. As such, dsh-vision-proxy popularity was classified as not popular.
We found that dsh-vision-proxy demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.

Security News
Anthropic’s free OSS Scanner uses Mythos and other Claude models to find open source vulnerabilities and send maintainers reports with proposed fixes.

Security News
On Front Lines’ Early Adopters: CISO podcast, Andrew Becherer shares lessons from Datadog, weighs the long-term costs of AI-built tools, and explains how founders can actually gain a CISO’s trust.