让纯文本模型借本地 Ollama 看懂图片
29.3/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add nvbb/dsh-ollama-vision-bridge该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · vision
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 58 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-ollama-vision-bridge(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/22 21:38:58
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 34 处,展示前 23 条)
- 读取本地文件lib/index.js:104
const text = readFileSync(t.file, "utf8"); - 读取本地文件lib/index.js:115
settingsSection = /^vision-bridge:/m.test(readFileSync(join(dshHome(), "settings.yaml"), "utf8")); - 读取本地文件lib/index.js:123
configured: existsSync(legacyCfg) || settingsSection, - 发起网络请求lib/index.js:176
const response = await fetch(`${baseURL}/api/tags`, { signal: AbortSignal.timeout(5000) }); - 执行外部命令来自配置/变量bin/cli.js:282
? spawnSync(process.env.ComSpec ?? "cmd.exe", ["/d", "/s", "/c", [executable, ...args.map(quoteArg)].join(" ")], { - 执行外部命令来自配置/变量bin/cli.js:286
: spawnSync(dsh, args, { - 执行外部命令来自配置/变量bin/cli.js:301
const result = spawnSync(process.execPath, [script], { stdio: "inherit", cwd: process.cwd() }); - 执行外部命令来自配置/变量bin/cli.js:316
? spawnSync(process.env.ComSpec ?? "cmd.exe", ["/d", "/s", "/c", [executable, ...args.map(quoteArg)].join(" ")], { stdio: "inherit", cwd: process.cwd( - 执行外部命令来自配置/变量bin/cli.js:317
: spawnSync(dsh, args, { stdio: "inherit", cwd: process.cwd() }); - 执行外部命令来自配置/变量bin/cli.js:364
const result = spawnSync(process.execPath, [script, "--unpatch"], { stdio: "inherit", cwd: process.cwd() }); - 发起网络请求bin/cli.js:401
response = await fetch(`${baseURL}/api/tags`, { - 发起网络请求bin/cli.js:427
response = await fetch(`${baseURL}/v1/chat/completions`, { - 读取本地文件patch/apply.mjs:63
entries = readdirSync(base, { withFileTypes: true }); - 读取本地文件patch/apply.mjs:70
if (existsSync(candidate) && !out.includes(candidate)) out.push(candidate); - 写入本地文件patch/apply.mjs:161
writeFileSync(tmp, text, "utf8"); - 写入本地文件patch/apply.mjs:162
renameSync(tmp, file); - 读取本地文件patch/apply.mjs:172
if (!existsSync(file)) { - 读取本地文件patch/apply.mjs:177
const text = readFileSync(file, "utf8"); - 读取本地文件patch/apply.mjs:212
if (!existsSync(file)) { - 读取本地文件patch/apply.mjs:216
const text = readFileSync(file, "utf8"); - 写入本地文件patch/apply.mjs:269
writeFileSync(file, out, "utf8"); - 写入本地文件patch/apply.mjs:280
writeFileSync(file, BRIDGE_CONFIG_DEFAULT, "utf8"); - 执行外部命令来自配置/变量patch/apply.mjs:329
execFileSync(process.execPath, ["--check", file], { stdio: "ignore" });
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 纯文本模型读图
- 显存降温
DSH 插件:纯文本聊天模型靠本地 Ollama VL 生成图片描述(qwen3-vl:8b),显存降温
README
由 DeepSeek 最新模型翻译生成dsh-ollama-vision-bridge
DeepSeek Harness(DSH)插件(适配 DSH ≥ 0.1.2-rc.1):当聊天选中的模型不支持图片时,自动用本地 Ollama VL 模型描述图片,并把说明在同一个模型步骤里注入给模型;图片本身保留在对话历史里(请求携带 Ollama keep_alive,推理结束后模型在显存中只驻留一小段时间,空闲即自动卸载——显存冷却,不占其他模型的显存)。
English:一个 DeepSeek Harness(DSH ≥ 0.1.2-rc.1)插件,用于纯文本聊天模型 + 本地图像理解。当你把图片附加到不支持图片的模型时,本地 Ollama 视觉模型(默认 qwen3-vl:8b)会描述它,描述会被注入到同一个模型步骤——一次发送,一次回答,无云端,无 API 密钥。图片保留在你的消息历史中;VL 模型会在短暂的 keep_alive 空闲后卸载(显存冷却)。当 Ollama 不可用时,回退到 DSH 原生的拒绝行为。中文文档如下。
原理
- 安装时(patch/apply.mjs)给 @deepseek-ai/dsh-api-session-controller 打一个幂等补丁。
展开完整文档(README 剩余 1 节)
dsh-ollama-vision-bridge
DeepSeek Harness(DSH)插件(适配 DSH ≥ 0.1.2-rc.1):当聊天选中的模型不支持图片时,自动用本地 Ollama VL 模型描述图片,并把说明在同一个模型步骤里注入给模型;图片本身保留在对话历史里(请求携带 Ollama keep_alive,推理结束后模型在显存中只驻留一小段时间,空闲即自动卸载——显存冷却,不占其他模型的显存)。
English:一个 DeepSeek Harness(DSH ≥ 0.1.2-rc.1)插件,用于纯文本聊天模型 + 本地图像理解。当你把图片附加到不支持图片的模型时,本地 Ollama 视觉模型(默认 qwen3-vl:8b)会描述它,描述会被注入到同一个模型步骤——一次发送,一次回答,无云端,无 API 密钥。图片保留在你的消息历史中;VL 模型会在短暂的 keep_alive 空闲后卸载(显存冷却)。当 Ollama 不可用时,回退到 DSH 原生的拒绝行为。中文文档如下。
原理
- 安装时(patch/apply.mjs)给 @deepseek-ai/dsh-api-session-controller 打一个幂等补丁。
DSH 0.1.2-rc.1 删除了旧版 dsh-host-apiproxy,把「聊天发图 → 模态检查 → 入队」挪进了这个包(Web GUI 运行的是其 bundle lib/index.js,另有同类的独立编译产物 lib/types/commands.js,两处都打)。原逻辑是「模型不支持图片 → 抛 MODEL_DOES_NOT_SUPPORT_IMAGES 拒绝」,补丁把它改为先调本地 Ollama VL 模型(默认 qwen3-vl:8b):
- 图片先按 DSH 原生流程落库成 durable 引用并保留在你的消息里,你的消息一字不改,且只排队这一条消息(一次发送 = 一次回答,不会多出额外回复);
- 描述通过 agent/pre-step 瀑布钩子在模型请求生成时并入同一步骤;
- 描述作为独立的「上下文注入」消息(source: { kind: "plugin", plugin: "dsh-ollama-vision-bridge" })进入对话,界面显示为一条可折叠的"上下文注入"条目;
- 描述文本自带系统说明,引导模型在回答开头告知「当前模型不支持原生图片识别,已调用本地视觉模型识别」,然后基于描述正式回答;
- 桥接未配置或 Ollama 不可用时回退到 DSH 原有的拒绝行为(错误码不变)。
- 备注:0.1.2-rc.1 自带的 dsh-llm 已会把「文本模型请求中的图片块」投影成 [image omitted …] 占位文本,所以保留图片引用的用户消息永远不会真正发给文本适配器;桥接的价值在于让模型拿到本地 VL 模型对图片的真实描述,而不是一个空占位符。
- 运行时(lib/index.js)是一个极小且不会抛错的 Cordis 行,启动时检查补丁/配置状态并打印日志,也提供 /vision-bridge 状态命令(若 commands 服务存在)。
- 包声明了 dsh.bundle.patch,dsh plugin add 后会自动挂进 profile 的 bundles 层(补丁行 vision-bridge),无需手改 cordis.patch.yml。
安装(首次 / 换新机器)
先停掉正在运行的 dsh web(Windows 上 node 会锁住 node_modules,运行中装不了);装完再启动。
方式一:从 GitHub 安装 :
dsh plugin --profile web add git+https://github.com/nvbb/dsh-ollama-vision-bridge.git
node "$env:USERPROFILE\.dsh\profiles\node_modules\dsh-ollama-vision-bridge\patch\apply.mjs"
本地开发 / 调试:dsh plugin --profile web add file:(如 file:C:/dev/dsh-ollama-vision-bridge,不需要 git 远程)。
然后重新启动 dsh web。
apply.mjs 做四件事(幂等,可重复跑):
1. 补丁 dsh-api-session-controller 的两份产物(已打则跳过);
2. settings.yaml 追加 llm-pi-ai 提供商 ollama(已有该段则跳过);
3. settings.yaml 的 vision-bridge 段 / 独立 vision-bridge.yaml(已有则跳过);
4. 检查 OLLAMA_MODELS 下有没有 VL 模型 manifest,没有就给出提示。
DSH 更新后
dsh plugin 或 pnpm 重装会覆盖被打补丁的包,重跑一次即可:
dsh plugin --profile web update dsh-ollama-vision-bridge # 或直接 dsh plugin --profile web add
node "$env:USERPROFILE\.dsh\profiles\node_modules\dsh-ollama-vision-bridge\patch\apply.mjs"
配置
配置在 DSH 的设置文档 $DSH_HOME\settings.yaml 的 vision-bridge: 段(与 llm-pi-ai 同款,热加载,改完即生效,不用重启;旧的独立 vision-bridge.yaml 仍作为兼容回退,优先读 settings.yaml):
vision-bridge:
enabled: true # 总开关;false 时文本模型发图恢复 DSH 原生拒绝 baseURL: http://127.0.0.1:11434 # Ollama 地址 model: "qwen3-vl:8b" # 默认兜底 VL 模型 keepAlive: "60s" # 显存冷却:空闲 60s 后卸载;0 = 推理完立即卸载 models: # 按模型映射(可选,覆盖默认):选中这些文本模型发图时用对应 VL 模型 "deepseek-v4-flash": "qwen3-vl:8b" prompt: 自定义描述提示词(可选) timeoutMs: 300000
环境变量可覆盖:DSH_VISION_BRIDGE_BASE_URL / DSH_VISION_BRIDGE_MODEL / DSH_VISION_BRIDGE_KEEP_ALIVE。删除 vision-bridge 段(或置空 model、或 enabled: false)即关闭桥接,恢复 DSH 原生拒绝行为。
前提:Ollama 在跑(ollama list 能看到模型),模型目录环境变量 OLLAMA_MODELS 指向含 qwen3-vl:8b 的目录。
二次发布 / 自托管
本仓库本身就是完整的 git 仓库,且零 npm 依赖(apply.mjs / lib 只用 node 内置模块,补丁注入的运行时辅助代码所需的 js-yaml 由 DSH 宿主环境提供——无需 npm install、无 lockfile)。clone / fork 后推到自己的 GitHub / Gitee 远程即可:
- 从 git 安装:本仓库直接照「安装-方式一」执行即可;fork 后把命令里的仓库地址换成你自己的 fork;
- 发布到 npm:先确认 package.json 的 name 未被占用,再 npm publish;之后可用「安装-方式二」直接按包名安装;
- 私有远程:先配置 git 凭据(Windows 凭据管理器 / SSH)。
目录结构
dsh-ollama-vision-bridge/
├── package.json # dsh.bundle.patch → 自动挂载为 profile bundle ├── cordis.patch.yml # 插入 vision-bridge 运行时行 ├── lib/index.js # 运行时状态检查(绝不抛错) ├── test/bridge-smoke.mjs # 端到端冒烟测试(真实调本地 Ollama VL 模型) ├── LICENSE # MIT └── patch/ ├── source.mjs # 补丁源码(单一事实源,含 v2 辅助代码与锚点) └── apply.mjs # 安装/重装/检查脚本(支持 --check / --file)
开发 / 测试
node patch/apply.mjs --check # 只读检查:宿主补丁与配置状态(需 DSH profile 在位)
node test/bridge-smoke.mjs # 端到端冒烟:需本地 Ollama(127.0.0.1:11434) 且 VL 模型在位
已知限制
- 依赖 dsh-api-session-controller 的 prompt 处理器两个稳定锚点(lib/index.js 的单行拒绝式与 lib/types/commands.js 的多行拒绝块)。DSH 大版本若改动它们, apply.mjs 会报「refusal anchor not found」,届时更新本插件即可。
- 仅覆盖 Web GUI 普通会话的聊天发图路径;子代理等平行入口的图片拒绝(subagent/attachment-invalid)不在桥接范围内(与旧版一致)。
- 直接选中 VL 模型(如 qwen3-vl:8b)发图走 DSH 原生通道,不经过桥接,其卸载时机由 Ollama 全局 OLLAMA_KEEP_ALIVE(默认 5 分钟)决定。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
nvbb/dsh-ollama-vision-bridge
让纯文本模型借本地 Ollama 看懂图片
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,364已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,709已汉化DSH
71.8
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,319已汉化DSH
71.5
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,533已汉化DSH
71.1
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 93,105已汉化DSH
71.1
这是你的仓库?认领条目