DSH HUB
HomePlugin StoreRankingsPublish Guide
Plugin source
Back to catalog

342949145 /

dsh-vision-bridge

Verified

DSH 识图桥接插件:让 DeepSeek 等纯文本模型会话也能发送图片,图片自动经视觉模型识图转文字(识图桥接,read_image 工具兼容)

★ 1 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@da4ef0ca

dsh-vision-bridge

GitHub: https://github.com/342949145/dsh-vision-bridge · License: MIT

适用范围:本插件只服务网页版 DSH(~/.dsh,如 profiles/web/)。桌面版 Deepseek Harness EAC(当前 DeepSeek 会话所在形态)由内置插件 dsh-tool-vision 接管识图,配置在 %DSH_HOME%\settings.yaml 的 tool-vision 命名空间(当前模型 qwen3.7-plus / 阿里云百炼),无需安装本插件;两套配置互不相通,排查识图问题时先确认 DSH 形态。

让 DeepSeek 等纯文本模型 的 DSH 会话也能正常发送图片:图片在进入模型之前自动交给外部视觉模型(阿里云百炼 qwen-vl)识别,识别结果以文字形式喂给当前模型。无需切换模型、无需手动运行任何命令。

用户发图片 ──▶ DSH 会话(不再提示“当前模型不支持图片”)──▶ 本插件自动识图 ──▶ 文字描述 ──▶ DeepSeek 模型

解决的问题

DSH 将 DeepSeek 系列模型的输入能力声明为仅文本(inputModalities: ["text"]),因此:

  • 发送带图片的消息会被拒绝:“当前模型不支持图片,请切换支持图片的模型”(错误码 MODEL_DOES_NOT_SUPPORT_IMAGES);
  • read_image 工具同样被模型能力检查拦截;
  • 即使放行,DeepSeek API 本身也不接收图片。

本插件从两个层面解决:

  1. 放行:包装 ctx.llm.resolveModelInfo,对目标 provider(默认 deepseek)的模型补充声明 image 输入能力,使所有模型能力检查通过;
  2. 转译:包装目标 provider 适配器的 stream 方法,在消息进入序列化之前把 image 块逐个取出,调用百炼视觉 API 识图,替换为文字块——模型最终收到的始终是纯文本。

纯服务端插件,GUI 无需任何改动。不修改会话记录,不拦截原生支持图片的模型(如 pi-ai)。

安装

方式一:npm 安装(推荐,桌面版插件市场同款)

npm install dsh-vision-bridge

然后在 DSH profile(如 ~/.dsh/profiles/web/)中启用:

# ~/.dsh/profiles/web/cordis.patch.yml
- insert:
    - id: dsh-vision-bridge
      name: "dsh-vision-bridge"

或把 dsh-vision-bridge 加入 package.json 的 dsh.profile.bundles 列表。

方式二:本地开发挂载(link)

npm install link:./tools/dsh-vision-bridge   # 或 npm link

配置

配置优先级:环境变量 > 插件目录 .env > VISION_SKILL_DIR 指向目录的 .env / vision.js。

变量 必填 默认 说明
DASHSCOPE_API_KEY ✅ — 阿里云百炼 API Key(申请)
DASHSCOPE_BASE_URL https://dashscope.aliyuncs.com/compatible-mode/v1 OpenAI 兼容端点
VISION_MODEL qwen-vl-max 视觉模型(如 qwen-vl-plus、qwen3.7-flash-2026-07-15)
VISION_FALLBACK_MODELS qwen-vl-plus,qwen3.7-flash-2026-07-15 主模型失败时的回退列表(网络错误/限流/5xx 自动回退,认证与参数错误不重试)
VISION_PROMPT 请用中文简洁描述这张图片的内容。 识图提示词
VISION_MAX_TOKENS 256 识别结果长度上限
VISION_MAX_EDGE 512 图片压缩最长边(像素)
VISION_JPEG_QUALITY 80 图片压缩质量
VISION_PROVIDERS opencode-go,deepseek-official,deepseek 接管哪些纯文本 provider(逗号分隔;opencode-go 为 pi-ai 实际路由,deepseek-official 为官方 DeepSeek 适配器路由)
VISION_CACHE true 识别结果缓存(内存 + 落盘 %DSH_HOME%/storages/,跨会话/重启复用)
VISION_GEN_MODEL qwen-image 文生图模型(generate_image 工具)
VISION_GEN_SIZE 1024x1024 文生图尺寸(1024x1024 / 720x1280 / 1280x720)
VISION_SKILL_DIR — 复用 claude-vision-skill 配置的目录;自动读取其 .env / vision.js 中的 Key 与模型,无需重复填写

与内置 dsh-tool-vision 的图片桥冲突(重要):新版 DSH 内置插件 dsh-tool-vision 默认开启 bridgeTextOnly 图片桥(挂在 agent/pre-step 钩子),会把会话日志里的顶层 image 块替换成文本提示([User sent an image…, exported to: …]),结果是 GUI 永远不渲染图片、本插件的 generate_image 生成图也看不到。若 DSH 启用了 dsh-tool-vision,必须在 %DSH_HOME%/settings.yaml 的 tool-vision 段设置 bridgeTextOnly: false(settings.yaml 被 chokidar 实时监听,改动无需重启即热生效)。关闭后识图转换由本插件在 adapter.stream 层完成:日志保留 image 块(GUI 正常显示),发给模型的请求仍是纯文本。

最小配置示例(复制 .env.example 为 .env):

DASHSCOPE_API_KEY=sk-xxxxxxxx

本插件不包含任何真实 API Key 或本机路径,可安全开源;请通过 .env(已在 .gitignore 中)或环境变量提供配置。

设置页集成:插件注册了 dsh-vision-bridge 设置命名空间(%DSH_HOME%/settings.yaml),DSH 设置页可编辑;运行时优先级:设置页 > 环境变量 > .env > claude-vision-skill。

能力清单

能力 说明
图片上传放行 DeepSeek 等纯文本模型会话可正常附加图片(不再提示"当前模型不支持图片")
自动识图转文字 图片(含 read_image 工具结果、tool-result 嵌套、历史重放)自动经视觉模型识图后喂给模型
模型回退链 qwen-vl-max → qwen-vl-plus → flash,可恢复错误自动回退
文生图(generate_image) 对模型说"画一张…"即调用百炼 Qwen-Image 生成图片并保存为附件,模型可看到生成结果
识别缓存 同图不重复调用 API(内存 + 落盘)
URL / OCR / 多图对比 lib/vision.js 导出 describeImageUrl、ocrPrompt、describeImagesCompare、dataUrlFor 供复用

与 claude-vision-skill 的关系

claude-vision-skill 提供独立的 vision.js 识图脚本(手动运行 node vision.js <图片>)。本插件内置了等价的识图实现(压缩 + 百炼 API),并可通过 VISION_SKILL_DIR 自动复用其 API Key 与模型配置,两者互不干扰:

  • Codex / 手动场景:继续使用 claude-vision-skill;
  • DSH 会话场景:由本插件自动接管,发图即识图。

兼容性

  • 已验证 DSH 版本:0.1.0-rc.6(网页版 DSH 与 Deepseek Harness EAC 桌面版内置版本一致);
  • 上游 DSH 处于开发者预览期,如有破坏性变更请关注本仓库 Release 与 Issues。

工作原理

session.prompt(带图片)
  └─▶ ctx.llm.resolveModelInfo(插件包装)→ inputModalities 含 "image" → 检查放行
  └─▶ agent-loop prepareCall().stream(request)
        └─▶ adapter.stream(插件包装)
              ├─ 逐条检查 user 消息的 image 块
              ├─ attachments.readImage(ref) 读取图片字节
              ├─ 压缩(Windows PowerShell System.Drawing)→ data URL
              ├─ 调百炼 chat/completions(qwen-vl)→ 文字描述
              └─ 替换为 text 块 → 原始 adapter 继续

测试

node --test test/

License

MIT

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

APIPublish GuideAbout
—/ 5

No ratings yet

Verified DSH bundle

Commit da4ef0ca14bc

Community comments

No comments yet. Be the first to write one.