Back to home

lcb522

dsh-plugin-vision-bridge

DSH plugin: let text-only model sessions see images via a vision-model bridge (chat uploads + read_image)

Stars
0
Language
JavaScript
Created
Aug 16, 2026
Updated
Aug 16, 2026

Introduction

dsh-plugin-vision-bridge

纯文本模型会话也能"看图",覆盖两条路径:

  1. 聊天框发图/贴图:上传预检会以"当前模型不支持图片"拒绝纯文本模型——插件拦截 session.prompt RPC,被拒绝时自动把图片交给配置的视觉模型(默认 zai/glm-4.6v) 识别,用文字描述替换图片后重新提交。会话历史中只有文字,没有图片块。
  2. read_image 工具:模型调用 read_image 读工作区图片文件时,同样转由视觉模型 识别,返回文字描述。

两种情况下,会话本身继续使用你选定的文本模型(如 glm-5.2 / deepseek)。

行为

  • 会话模型不支持图像(glm-5.2、deepseek 系列)→ 上述两条路径都走视觉桥。
  • 会话模型支持图像(如你把会话切到 GLM-4.6V 本身)→ 原生直通,桥完全不介入 (聊天发图先原样提交,只有被拒才桥接,零额外开销)。
  • 视觉调用失败(配额、网络)→ 返回明确的错误信息,不静默丢图。

配置(profile 的 cordis.patch.yml 中挂载行)

字段默认说明
providerzai视觉模型所在 provider 路由(settings.yaml 里配置的)
modelglm-4.6v视觉模型 id(必须在该 provider 的 models 列表中声明)
system见代码视觉调用的系统提示词(如何描述图片)
userText见代码视觉调用的用户侧指令
maxTokens16384视觉调用输出上限
timeoutMs180000视觉调用软超时
redirectReadImagetrue是否拦截 read_image 工具调用
redirectChatUploadstrue是否桥接聊天框图片上传

更换视觉模型

编辑 ~/.dsh/profiles/web/cordis.patch.ymlvision-bridge 行的 provider/model, 重启 harness 即可。模型需在 ~/.dsh/settings.yamlllm-pi-ai.providers.<provider>.models 中声明(含 input: [text, image])。

前提

~/.dsh/settings.yaml 中对应 provider 的 models 列表必须包含视觉模型,例如:

llm-pi-ai:
  providers:
    zai:
      apiKeyEnv: ZAI_API_KEY
      models:
        - id: glm-4.5-air
        - id: glm-4.7
        - id: glm-5-turbo
        - id: glm-5.1
        - id: glm-5.2
        - id: glm-5v-turbo
        - id: glm-4.6v        # ← 新增的视觉模型
          name: GLM-4.6V
          contextWindow: 200000
          maxTokens: 131072
          input: [text, image]

注意:models 列表会整体替换该 provider 的内置目录,原有条目要以裸 id 形式保留。

安装与使用

1. 获取源码

git clone https://github.com/lcb522/dsh-plugin-vision-bridge.git
# 或 Gitee 镜像:
# git clone https://gitee.com/lcb522/dsh-plugin-vision-bridge.git

2. 复制到运行时位置

Copy-Item -Recurse -Force dsh-plugin-vision-bridge "$env:USERPROFILE\.dsh\profiles\node_modules\dsh-plugin-vision-bridge"

运行时位置 ~/.dsh/profiles/node_modules/dsh-plugin-vision-bridge/ 是共享回退层, 所有 profile 都能解析。依赖 @deepseek-ai/schemastery 已由官方共享层提供,无需自带。

3. 挂载到 profile

编辑 ~/.dsh/profiles/web/cordis.patch.yml,加入:

- insert:
    - id: vision-bridge
      name: dsh-plugin-vision-bridge
      config:
        provider: zai          # 视觉模型所在 provider
        model: glm-4.6v        # 视觉模型 id
        maxTokens: 16384
        timeoutMs: 180000
        redirectReadImage: true
        redirectChatUploads: true

4. 重启 harness

双击桌面 harness 图标(或重新运行 npx @deepseek-ai/dsh web)。

怎么用(无需额外操作)

  • 聊天框发图/贴图:直接往输入框拖图。纯文本模型会话中,图片自动转成 视觉模型生成的文字描述再提交;支持图像的模型则原生直通,桥不介入。
  • 读工作区图片:让模型调用 read_image 读任意工作区图片文件,返回的同样是 视觉模型的文字描述。

更新

cd dsh-plugin-vision-bridge
git pull
Copy-Item -Recurse -Force . "$env:USERPROFILE\.dsh\profiles\node_modules\dsh-plugin-vision-bridge"

复制后重启 harness 生效。

已知边界

  • 聊天框桥接发生在 session.prompt(浏览器 RPC)层;subagent.prompt 等其他入口未桥接。
  • 视觉模型看到的只有单张图片 + 固定提示词,不携带会话上下文。