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;插件使用
webServer、settings、subprocess与tools主机服务) - Node.js ≥ 20 及一个包管理器(推荐 pnpm)用于构建
- 一个属于自己的视觉模型 API 密钥(OpenAI 兼容或 Gemini)
构建
pnpm install
pnpm build
产物:lib/index.js(主机端)与 lib/client.js(浏览器端 bundle)。
安装到 DSH 配置文件
-
将整个包复制到配置文件的 node_modules 中,例如默认的
web配置:cp -r dsh-vision-bridge "$DSH_HOME"/profiles/web/node_modules/dsh-vision-bridge(
$DSH_HOME通常为~/.dsh,例如C:\Users\你的用户名\.dsh。) -
在该配置文件的
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行。 -
重启 DSH(
dsh --profile web)并打开 Web UI。
使用方法
- 打开 设置 → 插件 → 插件配置 → 展开 识图插件(Vision Bridge),填写:
- 接口风格:OpenAI 兼容 或 Google Gemini
- API 地址:只需填基础地址即可——
/chat/completions(OpenAI 风格,如https://open.bigmodel.cn/api/paas/v4)或:generateContent(Gemini)会自动追加 - API 密钥、模型名称(例如
glm-4v-flash、glm-4.6v、gpt-4o-mini、qwen-vl-max、gemini-2.0-flash) - 识别提示词(可选;默认会请求一段详细的中文描述)
- 点击"保存",然后点击"测试连接"验证。
- 点击回形针按钮(或将图片拖到聊天区域任意位置)。图片会被缩放为 ≤1280px 的 JPEG 并自动发送到视觉 API。
- 预览卡片会显示状态;展开"识别结果"查看完整文本,然后点击"插入并发送"将其交给 DeepSeek,或先点击"插入输入框"进行编辑。
- 在对话过程中,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.yaml(visionBridge命名空间),从不回显到 UI。如需更严格的密钥管理,可切换至credentials服务。 - 上传的图片保存在进程内存中(上限:每个会话 10 张,全局 40 张),供
vision_lookup引用;不会持久化到磁盘。 - 智谱推理模型(如
glm-4.6)可能消耗大量推理预算——插件会发送max_tokens: 4096,并在content为空时回退到reasoning_content。 - 本插件面向 DSH web 配置文件构建;其他端(TUI、Electron)未经测试。
许可证
MIT——详见 LICENSE。