# 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
