Vision Proxy for Copilot
A multi-model VS Code language-model provider for Volcengine Ark. It supports
Agent Plan and Coding Plan at the same time and only uses a vision proxy when
the selected model cannot accept images itself.
Routing
flowchart LR
A[Copilot request] --> B{Selected model supports vision?}
B -->|Yes| C[Send text and images directly]
B -->|No| D[Describe images with vision proxy]
D --> E[Send text and image descriptions]
C --> F[Model endpoint selected by plan]
E --> F
Each configured model declares:
- The exact Ark model name.
- Whether it uses Agent Plan or Coding Plan.
- Whether it supports native image input.
- Whether it supports the Responses API reasoning-effort option.
- Its advertised input and output token limits.
Plan endpoints
| Plan |
Default OpenAI-compatible Base URL |
| Agent Plan |
https://ark.cn-beijing.volces.com/api/plan/v3 |
| Coding Plan |
https://ark.cn-beijing.volces.com/api/coding/v3 |
The plans have independent Base URLs and independently stored API keys.
Setup
- Install the extension.
- Run Vision Proxy: Set Plan API Key.
- Select Agent Plan or Coding Plan and enter that plan's key.
- Run the command again if you subscribe to both plans.
- Open Copilot Chat and select any configured Vision Proxy model.
Only models belonging to plans with a configured API key are registered in the
Copilot model picker. Setting or clearing a plan key refreshes the picker
immediately.
Use Vision Proxy: Show Status to inspect both endpoints, key status, and the
enabled model routes.
Model configuration
Models are configured with vsionproxy.models. The defaults are:
| Model |
Agent Plan |
Coding Plan |
Image handling |
| Doubao Seed 2.0 Pro |
Yes |
Yes |
Native multimodal |
| GLM 5.2 |
Yes |
Yes |
Vision proxy |
| GLM 5.3 |
Yes |
Yes |
Vision proxy |
| DeepSeek V4 Pro |
Yes |
Yes |
Vision proxy |
| DeepSeek V4 Flash |
Yes |
Yes |
Vision proxy |
| Doubao Seed Evolving |
Yes |
No |
Native multimodal |
| Kimi K3 |
Yes |
No |
Native multimodal |
| Ark Code Latest |
No |
Yes |
Vision proxy by default |
The same model has a separate entry and stable ID for each plan so it always
uses that plan's Base URL and API key. Doubao Seed Evolving is registered on
Agent Plan by default, matching its current subscription availability.
Example settings.json:
{
"vsionproxy.agentPlanBaseUrl": "https://ark.cn-beijing.volces.com/api/plan/v3",
"vsionproxy.codingPlanBaseUrl": "https://ark.cn-beijing.volces.com/api/coding/v3",
"vsionproxy.models": [
{
"id": "glm-5.2-agent",
"name": "GLM 5.2 (Agent Plan)",
"model": "glm-5.2",
"plan": "agentPlan",
"family": "glm",
"version": "5.2",
"maxInputTokens": 1048576,
"maxOutputTokens": 128000,
"supportsVision": false,
"supportsReasoning": true
},
{
"id": "doubao-pro-agent",
"name": "Doubao Seed 2.0 Pro (Agent Plan)",
"model": "doubao-seed-2.0-pro",
"plan": "agentPlan",
"supportsVision": true,
"supportsReasoning": true
},
{
"id": "kimi-coding",
"name": "Kimi K2.5 (Coding Plan)",
"model": "kimi-k2.5",
"plan": "codingPlan",
"maxInputTokens": 262144,
"maxOutputTokens": 32768,
"supportsVision": true,
"supportsReasoning": false
}
]
}
The array in user settings replaces the default array. Set enabled to
false to keep an entry without showing it in the model picker.
Vision capability
supportsVision: true sends user images and image-bearing tool results directly
to that model. No vision-model request is made.
supportsVision: false sends images to vsionproxy.visionModel first and adds
the resulting description to the text-only request. Configure which
subscription hosts the proxy model with vsionproxy.visionModelPlan.
Use reasoningEfforts when a model only supports specific reasoning levels.
GLM 5.3 and DeepSeek V4 Flash default to low, high, and max.
Do not mark ark-code-latest as vision-capable unless the model selected for it
in the Ark console is known to support images; its target can change without a
settings update.
Other settings
| Setting |
Default |
Description |
vsionproxy.visionModel |
doubao-seed-2.0-pro |
Vision proxy model |
vsionproxy.visionModelPlan |
agentPlan |
Plan used for the proxy call |
vsionproxy.reasoningEffort |
high |
Default for models with reasoning enabled |
vsionproxy.visionReasoningEffort |
low |
Vision proxy reasoning effort |
vsionproxy.requestTimeoutSeconds |
300 |
Idle timeout before retry |
vsionproxy.maxRetries |
2 |
Transient-error retry count |
API keys entered through the command are saved in VS Code SecretStorage. The
plain-text agentPlanApiKey and codingPlanApiKey settings only exist as
fallbacks.
Compatibility
Existing baseUrl, apiKey, textModel, maxInputTokens, and
maxOutputTokens settings are read as migration fallbacks but are deprecated.
Building
npm install
npm test
npm run package
Install the generated package:
code --install-extension vsion-proxy-copilot-0.1.4.vsix --force
Requirements
- VS Code 1.116.0 or later
- GitHub Copilot Chat
- An Agent Plan and/or Coding Plan subscription and API key
License
MIT