DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

Xieweikang123 /

dsh-vision-bridge

Topic repository only

Give a text-only dsh model eyes: pasted images recognized into text via an OpenAI-compatible vision endpoint.

★ 2 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: master@6ae38b9d

dsh-vision-bridge

给纯文本的 DeepSeek「装上眼睛」—— 粘贴图片,自动识别成文字,再交给模型理解。

dsh-vision-bridge 是一个 DeepSeek Harness(dsh)插件。它让本身不支持图片输入的纯文本模型(如 deepseek-v4-flash)也能「看懂」你粘贴的图片:图片在进入模型之前被自动交给一个 OpenAI 兼容的视觉模型(默认智谱免费档 glm-4.6v-flash)识别成文字,替换掉消息里的图片块,于是模型看到的全是文字。

  • 走 dsh 官方扩展点 agent/pre-step,非侵入、不改任何 dsh 编译产物。
  • 通过 cordis.patch.yml 挂载,与 dsh-vision 等插件并列。
  • 默认零成本开箱(智谱免费模型),自动降级链应对限流。

安装

# 取代码(放到任意独立目录,例如 D:\project)
git clone https://github.com/Xieweikang123/dsh-vision-bridge D:\project\dsh-vision-bridge

让模型「支持图片输入」

dsh 服务端会在图片进入 agent 之前,检查当前模型的 inputModalities,不包含 image 就直接拒绝(返回 MODEL_DOES_NOT_SUPPORT_IMAGES)。所以需要先在 ~/.dsh/settings.yaml 里把模型的输入能力声明为含图片:

llm-pi-ai:
  providers:
    opencode-go:
      apiKeyEnv: OPENCODE_GO_API_KEY
      modelOverrides:
        deepseek-v4-flash:
          input:
            - text
            - image

这只会让 dsh「放行」图片进入 agent 请求;真正把图片变成文字的是本插件。若网关本身仍拒绝图片(比如 opencode-go 返回 unknown variant image_url),插件会在模型看到图像前完成识别替换,模型请求里已不含图片块。

挂载插件

在 ~/.dsh/cordis.patch.yml 里 insert 插件(Windows 下 name 必须用 file:// URL):

- insert:
    - id: dsh-vision-bridge
      name: 'file:///D:/project/dsh-vision-bridge/lib/index.js'

配置识别用的 API key

默认走智谱免费档 glm-4.6v-flash,只需一个 key:

  1. 到 https://open.bigmodel.cn 注册并创建 API key。
  2. 把 key 写进 ~/.dsh/.env:VISION_API_KEY=<你的key>

key 读取顺序:config.apiKey → $VISION_API_KEY → $DSH_VISION_API_KEY → $ZHIPUAI_API_KEY → $DASHSCOPE_API_KEY。本地 Ollama 端点可免 key。

重启 dsh 后生效:粘贴一张图,发送,模型就能看懂它。


配置

插件支持以下 config 项(在 cordis.patch.yml 的对应条目加 config: 即可):

- insert:
    - id: dsh-vision-bridge
      name: 'file:///D:/project/dsh-vision-bridge/lib/index.js'
      config:
        baseURL: https://open.bigmodel.cn/api/paas/v4   # OpenAI 兼容端点
        apiKey: ""                                       # 留空则读环境变量
        model: glm-4.6v-flash                             # 视觉模型
        fallbackModels: []                                # 自定义降级链;空则默认智谱免费链
        prompt: ""                                        # 自定义识别提示词
        maxTokens: 2048
        timeoutMs: 60000

后端速查

场景 baseURL model
默认(智谱免费) https://open.bigmodel.cn/api/paas/v4 glm-4.6v-flash
智谱付费 同上 glm-4.6v
阿里百炼 https://dashscope.aliyuncs.com/compatible-mode/v1 qwen3-vl-flash
火山豆包 https://ark.cn-beijing.volces.com/api/v3 doubao-seed-2-1-turbo-260628
本地 Ollama http://localhost:11434/v1 qwen3-vl:4b(无需 key)

工作原理

  1. 用户粘贴/上传图片 → dsh 先把图片存为持久化附件(saveImage),消息里以 { type: 'image', attachment } 块出现。
  2. 插件监听 agent/pre-step(dsh 官方扩展点,位于消息进入模型之前)。
  3. 发现 image 块 → attachments.readImage(ref) 拿到字节 → base64 data: URL。
  4. 调视觉端点的 /chat/completions 识别,返回文字描述。
  5. 用识别文字替换 image 块(保留用户自己打的文字),返回 { kind: 'enter', messages }。
  6. 纯文本模型收到的是纯文字,正常理解图片内容。

设计上借鉴了 opencode-image-vision 与 dsh-vision 的思路,但映射到 dsh 的原生扩展点、无额外运行时依赖:

  • 默认智谱免费档 glm-4.6v-flash、降级链(glm-4.1v-thinking-flash → glm-4v-flash)、API key 解析顺序,均沿用 dsh-vision(MIT)。
  • "把粘贴的图识别成文字、喂给纯文本模型"的目标,沿袭 opencode-image-vision(MIT)。

同图按 attachmentId 缓存,不重复识别。


已知限制

  • 对话里不会显示原图:因为模型收不到图片(网关/模型不支持),插件把图片替换成了文字,历史里也只有文字。
  • 识别质量取决于视觉模型:默认免费档对密集文字(如终端重复行)可能读得冗余;换 glm-4.6v / qwen3.7-plus 等可获得更好效果。
  • 改成插件逻辑后,运行中的 dsh 需重启才会加载新模块(热重载主要覆盖 cordis.patch.yml 配置变化)。

License

MIT

—/ 5

No ratings yet

Manifest verification required

Commit 6ae38b9d9768

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout