# dsh-vision-pro-bridge 让纯文本的 **DeepSeek-V4-Pro** 真正“看见”图片 —— **不用切换模型、不用 Ollama、不用第二个 key**。 ## 解决的问题 `deepseek-v4-pro`(以及 `deepseek-v4-flash`)是纯文本模型:DeepSeek API 不接受图片字节。在 DeepSeek Harness 里,往 Pro 会话里贴图会报“不支持图片”。官方唯一的选择,是把整个会话切到(编码能力较弱的 Flash 档)`deepseek-v4-flash-vision-exp`。 ## 这个插件做什么 它注册一条**孪生路由** `deepseek-vision-pro`(模型 `deepseek-v4-pro-vision`)并声明支持图片。你贴图后,插件先用 **`deepseek-v4-flash-vision-exp`** 把图片转成文字(复用你已有的 `DEEPSEEK_API_KEY`),再把文字 + 本地路径交给 **`deepseek-v4-pro`**。DeepSeek 的对话路由永远收不到图片,V4-Pro 保留编码能力、同时“看得见”。 ``` 贴图 → [图片块被放行] → deepseek-v4-flash-vision-exp 转写为文字 → 文字 + 本地路径 → deepseek-v4-pro 回答 ``` ## 为什么选这个(优势) - **零第三方依赖**:只复用 Harness 自带的 `@deepseek-ai/dsh-llm` 与 `@deepseek-ai/dsh-llm-deepseek`。没有 `openai`、没有 `sharp`、没有 `schemastery`、没有 Ollama。 - **DeepSeek 专属、单一供应商**:图片只发给 DeepSeek(`deepseek-v4-flash-vision-exp`),走同一个 `DEEPSEEK_API_KEY`。没有第二个 VLM 厂商、没有本地模型、没有匿名免费端点。 - **官方图片管线、逐字节一致**:继承官方 `DeepSeekAdapter`,图片规范化、Files API 上传、inline-base64 回退都与官方行为完全一致,不手写 HTTP。 - **极简、可审计**:单文件、约 250 行,易读、易验、易 fork。 - **内容寻址落盘**:图片存到 `~/.dsh/vision-pro-bridge/images/`,稳定本地路径会传给模型,V4-Pro 可继续引用。 - **Pro 专精**:只暴露一个模型 `deepseek-v4-pro-vision` —— 保留 V4-Pro 编码能力,外加视觉。 ## 安装 ```bash dsh plugin --profile web add dsh-vision-pro-bridge # 重启 dsh web ``` ## 使用 1. 模型选择器里选 **DeepSeek-V4-Pro (视觉桥)**。 2. 粘贴/拖入截图,正常提问。 设为新会话默认(`~/.dsh/settings.yaml`): ```yaml agent-default-model: provider: deepseek-vision-pro model: deepseek-v4-pro-vision ``` ## 配置(环境变量) | 变量 | 默认 | 作用 | | --- | --- | --- | | `DEEPSEEK_API_KEY` | credentials 服务 | DeepSeek key(与官方路由同源) | | `DEEPSEEK_BASE_URL` | https://api.deepseek.com | 端点(与官方路由同源) | | `DSH_VISION_PRO_BRIDGE_PROMPT` | 内置英文转写提示词 | 覆盖转写提示词(例如改为中文 UI 分析) | ## 已知限制 - 转写是**有损**的:布局/OCR 足够,精确像素坐标不如真视觉。 - 转写模型固定为 `deepseek-v4-flash-vision-exp`。 - 端点从 `DEEPSEEK_BASE_URL` 解析,不读设置页里 `llm-deepseek` 的自定义项。 - 无降级链:转写失败时图片变成占位文本,对话继续。 ## 备选 需要更完整功能(VLM 降级链、本地 Ollama、设置页、图片降采样)请看 [`dsh-vision-proxy`](https://www.npmjs.com/package/dsh-vision-proxy)。本插件是同一思路的极简、纯 DeepSeek、零依赖版本。 ## License MIT