Back to home

C-4-C-4

dsh-vision-bridge

让 DeepSeek 模型获得图像理解能力

Stars
0
Language
TypeScript
Created
Aug 15, 2026
Updated
Aug 15, 2026

Introduction

dsh-vision-bridge(识图插件)

一个常驻型 DeepSeek Harness 插件,让纯文本的 DeepSeek 模型获得图像理解能力:在聊天框上传图片(回形针按钮或拖拽),插件会调用你配置的视觉模型 API(OpenAI 兼容或 Google Gemini),将识别出的文本回填到对话中,让 DeepSeek 能够回答关于图片的问题。

这是动态插件的常驻、开源版本——一个真实安装到 DSH 配置文件中的包:配置可跨重启保留(存储于 $DSH_HOME/settings.yaml),UI 使用 DeepSeek Harness 原生组件库(dsh-client-ui-primitives)与主题令牌(--dsw-*),不使用任何 emoji——所有图标均为原生 DSH SVG 图标。

功能特性

  • �️ 输入框工具栏中的回形针上传按钮,悬停显示提示
  • 📥 在聊天区域任意位置拖拽上传图片
  • 🧠 通过配置的视觉模型自动识别(支持任何 OpenAI 兼容端点——智谱 GLM / 通义千问 VL / Moonshot / 硅基流动 / Ollama——以及 Google Gemini
  • 📋 输入框上方的宽幅预览卡片:缩略图、文件名 + 大小、状态、可展开的识别结果、操作按钮(插入输入框 / 插入并发送 / 重新识别 / 删除)
  • 🔌 模型可调用的 vision_lookup 工具——DeepSeek 可在对话中主动询问已上传图片的信息
  • ⚙️ 配置卡片位于 设置 → 插件 → 插件配置,并提供"测试连接"按钮
  • 💾 配置通过 settings 服务持久化($DSH_HOME/settings.yaml

环境要求

  • DeepSeek Harness Web 模式(浏览器 UI;插件使用 webServersettingssubprocesstools 主机服务)
  • Node.js ≥ 20 及一个包管理器(推荐 pnpm)用于构建
  • 一个属于自己的视觉模型 API 密钥(OpenAI 兼容或 Gemini)

构建

pnpm install
pnpm build

产物:lib/index.js(主机端)与 lib/client.js(浏览器端 bundle)。

安装到 DSH 配置文件

  1. 将整个包复制到配置文件的 node_modules 中,例如默认的 web 配置:

    cp -r dsh-vision-bridge "$DSH_HOME"/profiles/web/node_modules/dsh-vision-bridge
    

    $DSH_HOME 通常为 ~/.dsh,例如 C:\Users\你的用户名\.dsh。)

  2. 在该配置文件的 cordis.patch.yml(与 cordis.yml 同级、在每次 bundle 层之后应用的文件)中注册插件行。追加一条 insert 条目——单行即可同时激活两端:主机加载器加载 lib/index.js(Node 端),dsh-client-modules 拾取 dsh.client 声明并向浏览器提供 lib/client.js

    # $DSH_HOME/profiles/web/cordis.patch.yml
    - insert:
        - id: vision-bridge
          name: 'dsh-vision-bridge'
    

    注意:主机 webServer 行(@deepseek-ai/dsh-host-webserver)必须已在配置文件中挂载(出厂的 web-app bundle 中已包含)。不要重复添加 webServer 行。

  3. 重启 DSH(dsh --profile web)并打开 Web UI。

使用方法

  1. 打开 设置 → 插件 → 插件配置 → 展开 识图插件(Vision Bridge),填写:
    • 接口风格:OpenAI 兼容 或 Google Gemini
    • API 地址:只需填基础地址即可——/chat/completions(OpenAI 风格,如 https://open.bigmodel.cn/api/paas/v4)或 :generateContent(Gemini)会自动追加
    • API 密钥、模型名称(例如 glm-4v-flashglm-4.6vgpt-4o-miniqwen-vl-maxgemini-2.0-flash
    • 识别提示词(可选;默认会请求一段详细的中文描述)
    • 点击"保存",然后点击"测试连接"验证。
  2. 点击回形针按钮(或将图片拖到聊天区域任意位置)。图片会被缩放为 ≤1280px 的 JPEG 并自动发送到视觉 API。
  3. 预览卡片会显示状态;展开"识别结果"查看完整文本,然后点击"插入并发送"将其交给 DeepSeek,或先点击"插入输入框"进行编辑。
  4. 在对话过程中,DeepSeek 自身也可以调用 vision_lookup 工具来询问已上传图片的信息。

工作原理

浏览器端 (lib/client.js)                    主机端 (lib/index.js)
──────────────────────────────               ─────────────────────────────────
  回形针按钮 / 拖拽         fetch       JSON API /vision-bridge/api/*
  预览卡片    ──────────────────────────►  (webServer 路由,POST)
                                             │  settings 服务 ─► settings.yaml
                                             ▼  subprocess 服务 ─► curl ─► 视觉 API
  vision_lookup 工具  ◄──── tools.register ──┘  (回答文本回传给模型)

为什么用 curl + subprocess?动态插件沙箱中没有 fetch,而且产品 web 服务只支持搜索,因此由主机通过 curl 以 stdin 传入 JSON body 发起 HTTP 请求(避免多兆字节图片触发命令行长度限制)。静态浏览器端使用普通 fetch 调用同源 JSON API。

说明与限制

  • API 密钥以明文存储在 $DSH_HOME/settings.yamlvisionBridge 命名空间),从不回显到 UI。如需更严格的密钥管理,可切换至 credentials 服务。
  • 上传的图片保存在进程内存中(上限:每个会话 10 张,全局 40 张),供 vision_lookup 引用;不会持久化到磁盘。
  • 智谱推理模型(如 glm-4.6)可能消耗大量推理预算——插件会发送 max_tokens: 4096,并在 content 为空时回退到 reasoning_content
  • 本插件面向 DSH web 配置文件构建;其他端(TUI、Electron)未经测试。

许可证

MIT——详见 LICENSE