Skip to main content
Best practices

Add visual understanding capabilities

Some models supported by Token Plan (qwen3.7-plus, etc.) natively support visual understanding and can process image inputs directly. For text-only models such as glm-5 and MiniMax-M2.5, you can add visual capabilities by configuring a local Skill.

Running the image understanding Skill consumes Token Plan Credits. No additional charges apply.

Prerequisites

  1. You have subscribed to Token Plan.
  2. You have completed the integration configuration in an AI tool and can chat normally. For details, see Clients and Developer Tools.

Vision support

Model

Vision support

Description

  • qwen3.8-max

  • qwen3.8-flash

  • qwen3.7-plus

  • qwen3.6-plus

  • kimi-k2.5 etc.

Yes

No additional configuration required. You can pass images directly.

  • qwen3-max-2026-01-23

  • qwen3-coder-next

  • qwen3-coder-plus

  • glm-5

  • glm-4.7

  • MiniMax-M2.5

No

Requires a Skill or Agent to enable visual capabilities

qwen3.7-plus and other models have visual understanding capabilities. If you frequently need to process images, switching to one of these models is the simplest and recommended approach.

Tool

How to switch models

Claude Code

/model qwen3.7-plus or /model qwen3.6-plus or /model qwen3.5-plus or /model kimi-k2.5

OpenCode

/models then search and select qwen3.7-plus or qwen3.6-plus or qwen3.5-plus or kimi-k2.5

Qwen Code

/model then select qwen3.7-plus or qwen3.6-plus or qwen3.5-plus or kimi-k2.5

For more information about switching models in other coding tools, see Clients and Developer Tools. After switching, you can reference image paths directly in your conversation, or drag-and-drop/paste images.

Method 2: Add visual capabilities via Skill or Agent

If you need to use text-only models such as glm-5 or MiniMax-M2.5 for image processing, you can configure a Skill or Agent to enable visual capabilities.
  • Claude Code
  • OpenCode
  1. Add the Skill Create an .claude folder in your project directory, then create an skills/image-analyzer directory inside it:
mkdir -p .claude/skills/image-analyzer
Create a SKILL.md file in that directory with the following content:
---
name: image-analyzer
description: Helps models without vision capabilities understand images. Use this skill when you need to analyze image content, extract information, text, or UI elements from images, or understand screenshots, charts, architecture diagrams, or any visual content. Simply pass in the image path to get a description.
model: qwen3.7-plus
---
qwen3.7-plus has visual understanding capabilities. Use qwen3.7-plus directly for image understanding.
The resulting directory structure is as follows:
.claude/
└── skills/
    └── image-analyzer/
        └── SKILL.md
  1. Get started
    1. Run claude in your project directory to start Claude Code, then run /model glm-5 to switch to the glm-5 model.
    2. Download alibabacloud.png to your project directory, then ask: Load image-analyzer skill and describe the information displayed at the alibabacloud.png banner location. You will receive a response similar to the following: The alibabacloud.png is a screenshot of the Alibaba Cloud homepage. The banner area title is Coding Plan now supports Qwen3.5, and the text introduces that Alibaba Cloud Model Studio supports models such as Qwen3.5, Kimi-k2.5, and GLM-4.7, with new customers getting the first month for only 7.9 yuan. The page provides Subscribe now and Online consultation entry points.

FAQ

Cause: OpenCode does not enable a model's vision capabilities by default. You must explicitly declare the modalities parameter in the configuration file.Solution: Add a modalities field to the model definition in your OpenCode configuration file, and set input to ["text", "image"], as shown below:
Replace sk-sp-xxx with your Token Plan API Key.
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "bailian-token-plan": {
      "npm": "@ai-sdk/anthropic",
      "name": "Model Studio Token Plan",
      "options": {
        "baseURL": "https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
        "apiKey": "sk-sp-xxx"
      },
      "models": {
        "qwen3.6-plus": {
          "name": "Qwen3.6 Plus",
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          },
          "options": {
            "thinking": {
              "type": "enabled",
              "budgetTokens": 1024
            }
          }
        },
        "qwen3.5-plus": {
          "name": "Qwen3.5 Plus",
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          },
          "options": {
            "thinking": {
              "type": "enabled",
              "budgetTokens": 1024
            }
          }
        },
        "kimi-k2.5": {
          "name": "Kimi K2.5",
          "modalities": {
            "input": [
              "text",
              "image"
            ],
            "output": [
              "text"
            ]
          },
          "options": {
            "thinking": {
              "type": "enabled",
              "budgetTokens": 1024
            }
          }
        }
      }
    }
  }
}
Cause: OpenClaw requires the input field in the configuration file to determine whether a model supports vision capabilities.Solution:
  1. In the ~/.openclaw/openclaw.json configuration file, ensure the model definition includes the "input": ["text", "image"] field.
{
  "models": {
    "mode": "merge",
    "providers": {
      "bailian": {
        "baseUrl": "https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
        "apiKey": "YOUR_API_KEY",
        "api": "openai-completions",
        "models": [
          {
            "id": "qwen3.6-plus",
            "name": "qwen3.6-plus",
            "reasoning": false,
            "input": ["text", "image"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 1000000,
            "maxTokens": 65536
          },
          {
            "id": "qwen3.5-plus",
            "name": "qwen3.5-plus",
            "reasoning": false,
            "input": ["text", "image"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 1000000,
            "maxTokens": 65536
          },
          {
            "id": "kimi-k2.5",
            "name": "kimi-k2.5",
            "reasoning": false,
            "input": ["text", "image"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 262144,
            "maxTokens": 32768
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "bailian/qwen3.6-plus"
      },
      "models": {
        "bailian/qwen3.6-plus": {},
        "bailian/qwen3.5-plus": {},
        "bailian/kimi-k2.5": {}
      }
    }
  },
  "gateway": {
    "mode": "local"
  }
}
  1. After modifying the configuration, you must clear the OpenClaw model cache and restart. Otherwise, the old configuration will remain in effect.
rm ~/.openclaw/agents/main/agent/models.json
openclaw gateway restart
Model Playground
  • Music generation
Statistics and Monitoring
Support