Skip to content

Repository files navigation

opencode-vision-router

给纯文本模型(如 DeepSeek)在 opencode 里补上"看图"能力。 | Give text-only models like DeepSeek image recognition inside opencode.

English | 中文

简介 / Overview

opencode-vision-router 是一个 opencode 插件,为不支持图片的纯文本模型(如 deepseek-v4-flash)添加一个 vision 工具:

  • MiMo 云端识别(默认):通过 OpenCode Zen 的免费 mimo-v2.5-free 识图。MiMo 支持图片、音频和视频输入。
  • 本地识别(可选):通过 Ollama 调用本地视觉模型(qwen2.5vl),图片数据不出本机,但精度通常低于云端模型。
  • 模型路由:可把识别任务路由给模型列表里支持视觉的模型(如 gpt-5.6-luna),让主模型是纯文本也能用上 GPT 级别的识图。
  • 自动取图:你在会话里直接贴图,工具会自动取最近一张,无需保存到磁盘、无需传路径。

当模型需要"看"图时,它会调用 vision 工具,该工具把图交给视觉后端并返回文字描述。

工作原理 / Why

DeepSeek 等模型不支持图片输入,opencode 无法把图附加给它。这个插件补齐缺口:模型要"看"→ 调 vision 工具 → 视觉后端返回文字 → 主模型继续推理。

环境要求 / Requirements

  • 默认的 MiMo Free 已随 OpenCode Zen 模型列表提供;本机实测可直接调用。如果 OpenCode 提示需要凭据,再运行 /connect 并选择 OpenCode Zen

  • 如果要使用本地后端,再运行 Ollama 并拉取视觉模型:

    ollama pull qwen2.5vl:7b
    ollama create qwen2.5vl-vision -f - <<'EOF'
    FROM qwen2.5vl:7b
    PARAMETER num_ctx 32768
    EOF

    ollama create qwen2.5vl-vision 需要一个 Modelfile;上面这个会创建一个更大上下文的模型。)

    为什么要 num_ctx 32768?Ollama 的 /v1/chat/completions 接口会忽略请求级的 options.num_ctxkeep_alive。把它写进模型的 Modelfile 是唯一可靠的办法。默认上下文(4096)太小,装不下聊天历史加图片,会报 exceeds context 错误。

安装 / Install

在你的 opencode 配置(~/.config/opencode/opencode.json)中加入:

{
  "plugin": [
    "opencode-vision-router"
  ]
}

或者从本地目录加载:

{
  "plugin": [
    "C:/Users/you/path/to/opencode-vision-router"
  ]
}

然后重启 opencode。

使用 / Usage

直接贴图并提问:

看一下这张图里有什么

模型会自动调用 vision 工具。也可以传路径:

用 vision 工具看 C:\path\to\image.png

默认使用 opencode/mimo-v2.5-free。明确写 model: localmodel: ollama 时才使用本地 Qwen;写 model: gpt-5.6-luna 等可使用其他已配置的视觉模型。

MiMo Free 是 OpenCode Zen 的限时免费模型,不保证永久免费。免费期间请求数据可能用于改进模型,不要发送敏感图片。

云端路由 / Cloud routing

model 参数即可路由到模型列表中支持视觉的云端模型:

model 取值 解析为
gpt-5.6-luna / gpt-5.6 / gpt / cloud CLOUD_MODEL(默认 gpt-5.6-luna
gpt-5.6-sol gpt-5.6-sol
openai/gpt-5.6-sol provider openai,模型 gpt-5.6-sol

配置 / Configuration

环境变量:

变量 默认值 说明
OLLAMA_BASE http://127.0.0.1:11434 本地 Ollama 地址
VISION_MODEL qwen2.5vl-vision 本地视觉模型名
VISION_DEFAULT_MODEL opencode/mimo-v2.5-free 未指定 model 时使用的视觉模型
VISION_CLOUD_MODEL gpt-5.6-luna model: gpt / cloud 路由使用的云端模型
VISION_CLOUD_TIMEOUT 180000 云端请求或兼容模型子进程超时(毫秒)
OPENCODE_BIN 自动探测 云端路由用到的 opencode 可执行文件路径
OPENCODE_ZEN_BASE https://opencode.ai/zen MiMo 的 Zen API 地址
OPENCODE_ZEN_API_KEY 可选的 Zen API key;MiMo Free 通常可直接调用

云端路由是怎么工作的 / How cloud routing works

opencode/mimo-v2.5-free 直接调用 OpenCode Zen 的 OpenAI 兼容接口,不创建新的 OpenCode session。GPT 等需要 OAuth/provider 路由的模型仍通过 opencode run --pure --format json ... -m <provider>/<model> -f <image> 调用;--pure 会禁用插件以避免递归调用 vision 工具,结果从 NDJSON 输出中解析。

许可 / License

MIT

About

OpenCode vision plugin: gives text-only models like DeepSeek image recognition via local Ollama VLM with optional cloud routing (e.g. GPT-5.6 Luna)

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages