dsh-plugin-vision-bridge
by lcb522
1. 聊天框发图/贴图 :上传预检会以"当前模型不支持图片"拒绝纯文本模型——插件拦截 session.prompt RPC,被拒绝时自动把图片交给配置的视觉模型(默认 zai/glm-4.6v ) 识别,用文字描述替换图片后重新提交。会话历史中只有文字,没有图片块。 2. read image 工具 :模型调用 read image…
DSH plugin: let text-only model sessions see images via a vision-model bridge (chat uploads + read_image)
安装
dsh plugin --profile web add github:lcb522/dsh-plugin-vision-bridgeGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
目录
让纯文本模型会话也能"看图",覆盖两条路径:
- 聊天框发图/贴图:上传预检会以"当前模型不支持图片"拒绝纯文本模型——插件拦截
session.promptRPC,被拒绝时自动把图片交给配置的视觉模型(默认zai/glm-4.6v) 识别,用文字描述替换图片后重新提交。会话历史中只有文字,没有图片块。 read_image工具:模型调用 read_image 读工作区图片文件时,同样转由视觉模型 识别,返回文字描述。
两种情况下,会话本身继续使用你选定的文本模型(如 glm-5.2 / deepseek)。
开启 / 关闭(v1.1.0 新增)
设置 → 插件 → 视觉桥接 有一张带开关的卡片:
- 点开关立即生效,无需重启:关闭后 read_image 与聊天发图完全走原生行为(纯文本会话下发图会照常被拒),不产生任何视觉模型调用
- 开关状态持久化在
~/.dsh/settings.yaml的vision-bridge:段,重启后保持 - 卡片下方的状态行实时显示当前是"已开启"还是"已关闭"
宿主侧同时注册了 vision-bridge 设置命名空间(enabled 字段),其他工具也可以通过 settings 服务读写它。
行为
- 会话模型不支持图像(glm-5.2、deepseek 系列)→ 上述两条路径都走视觉桥。
- 会话模型支持图像(如你把会话切到 GLM-4.6V 本身)→ 原生直通,桥完全不介入 (聊天发图先原样提交,只有被拒才桥接,零额外开销)。
- 视觉调用失败(配额、网络)→ 返回明确的错误信息,不静默丢图。
配置(profile 的 cordis.patch.yml 中挂载行)
| 字段 | 默认 | 说明 |
|---|---|---|
provider |
zai |
视觉模型所在 provider 路由(settings.yaml 里配置的) |
model |
glm-4.6v |
视觉模型 id(必须在该 provider 的 models 列表中声明) |
system |
见代码 | 视觉调用的系统提示词(如何描述图片) |
userText |
见代码 | 视觉调用的用户侧指令 |
maxTokens |
16384 |
视觉调用输出上限 |
timeoutMs |
180000 |
视觉调用软超时 |
redirectReadImage |
true |
是否拦截 read_image 工具调用 |
redirectChatUploads |
true |
是否桥接聊天框图片上传 |
以上为引导期配置(改动需重启)。运行期总开关走设置卡片的 enabled(实时生效,见上)。
更换视觉模型
编辑 ~/.dsh/profiles/web/cordis.patch.yml 中 vision-bridge 行的 provider/model,
重启 harness 即可。模型需在 ~/.dsh/settings.yaml 的 llm-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等其他入口未桥接。 - 视觉模型看到的只有单张图片 + 固定提示词,不携带会话上下文。
原始 README: https://github.com/lcb522/dsh-plugin-vision-bridge/blob/master/README.md ↗
同类插件
查看全部 →
archify
Agent 技能:生成美观、可校验的架构图、工作流图、时序图、数据流图与生命周期图——自包含 HTML、带动画与清晰导出

dsh-turn-rewind
对话回退:基于持久 Change Ledger 回滚会话与工作区状态。

dsh-plugin-cc
把 DeepSeek Harness 接入 Claude Code:评审、批评、委派与会话导入

dsh-interconnect
跨实例互联:经 interconnect 服务在多个 DSH 实例间转发消息与事件。

dsh-chat-import
把 13 家 coding agent(Claude Code、Codex、ChatGPT、Cursor、Gemini、opencode 等)的完整对话历史导入为可续聊的 DeepSeek Harness 会话,并支持反向导出回 Claude Code。

dsh-crew
DSH 插件:从 Claude Code / Codex 向 DSH agent 派活——原生 subagent 进度、宿主内 worker 会话(分级预设),以及为纯文本宿主补上视觉与图像生成的多模态桥