A VS Code extension that lets you use models from multiple LLM platforms in GitHub Copilot Chat as language model providers.
| Provider | Vendor ID | Models |
|---|---|---|
| DeepSeek | deepseek |
deepseek-v4-flash, deepseek-v4-pro, deepseek-v4-flash-vision-exp |
| GLM Coding Plan CN | glm-coding-plan-cn |
GLM-5.3, GLM-5.3-Flash |
| Kimi Code Plan | moonshot |
k3, k3-256k, kimi-for-coding, kimi-for-coding-highspeed |
| Moonshot (Open Platform) | moonshot-open |
kimi-k3, kimi-k2.7-code, kimi-k2.7-code-highspeed, kimi-k2.6 |
| Qwen Token Plan | qwen |
qwen3.8-max, qwen3.8-flash, qwen3.7-max, qwen3.7-plus, qwen3.6-flash, glm-5.2, deepseek-v4-pro(-0813), deepseek-v4-flash-0731 |
| MiniMax Token Plan CN | minimax |
MiniMax-M3, MiniMax-M2.7, MiniMax-M2.7-highspeed, MiniMax-M2.5 |
| Volcengine Coding Plan CN | volcengine |
doubao-seed-2.1-turbo, doubao-seed-evolving, doubao-seed-2.0-lite, kimi-k2.7-code, minimax-m3, deepseek-v4-flash, deepseek-v4-pro, glm-5.3, glm-5.3-flash |
| Volcengine Agent Plan CN | volcengine-agent-plan |
the Coding Plan set plus doubao-seed-2.0-mini and kimi-k3 |
The following platforms have been tested and confirmed working:
- DeepSeek Open Platform (
platform.deepseek.com) - Kimi Code (Kimi coding model)
- MiniMax Token Plan CN (
platform.minimaxi.com) - GLM Coding Plan CN (
open.bigmodel.cnCoding API — re-verification pending after the vendor ID change)
Note
GLM Coding Plan billing: per Zhipu's docs, the Coding endpoint (open.bigmodel.cn/api/coding/paas/v4) only counts toward the Coding Plan quota when called from officially supported tools (Claude Code, Kilo Code, OpenCode, TRAE, CodeBuddy, etc.). VS Code Copilot Chat is not on that list — success is not guaranteed, usage may be billed at pay-as-you-go API rates instead of your plan's credits, and Zhipu's usage notes treat non-listed-tool calls as a violation that may lead to throttling or account restrictions. Keep an eye on your billing and account status.
Warning
Qwen Token Plan terms and endpoint: the extension points at the Token Plan endpoint (token-plan.cn-beijing.maas.aliyuncs.com/compatible-mode/v1) and expects the subscription key (sk-sp-…) from platform.qianwenai.com — Token Plan and pay-as-you-go credentials/endpoints are fully isolated and must not be mixed (pay-as-you-go keys (sk-ws-…) belong to dashscope.aliyuncs.com/compatible-mode/v1). The key is also restricted to interactive coding/agent tools (Claude Code, Cursor, Qwen Code, Qoder, OpenClaw, etc.) — the docs explicitly forbid generic API usage and state that violations may suspend the subscription or ban the API key. VS Code Copilot Chat is not on the official tool list, so use at your own discretion and watch your account status.
- Test Volcengine Coding Plan / Agent Plan
- Test Qwen Token Plan
- Test Kimi Open Platform
- Support SiliconFlow
- Support MiniMax International
- Support GLM International
- Support SiliconFlow International
- Verify thinking effort levels (DeepSeek None/High/Max; others None/Low/Medium/High or None/On) actually take effect across providers
- To be continued…
- Multiple Providers: Access models from major LLM platforms
- Per-Model Thinking Effort: Hover any thinking-capable model in the Copilot picker to pick the effort level for the next turn — no need to flip a global switch
- DeepSeek V4 menu: None / Low / High / Max (matches the V4 API's reasoning_effort domain; thinking is on by default, None disables it explicitly)
- Kimi K3 (Code Plan
k3/k3-256k, Open Platformkimi-k3): Low / High / Max — no None option, thinking is always on; effort maps to reasoning_effort on both endpoints - GLM-5.3 / GLM-5.3-Flash menu: Low / High / Max — no None option, thinking is always on (the Coding endpoint routes old GLM IDs like glm-5.1 / glm-4.7 to these two models)
- 4-level menu (None / Low / Medium / High) for Qwen reasoning models
- 2-level menu (None / On) for models that only expose a thinking on/off knob (Kimi K2.6, MiniMax-M3, pre-5.3 GLM, Volcengine reasoning models) — MiniMax-M3's None genuinely disables thinking
- Thinking-locked models expose no menu at all: K2.7 Code (Code Plan
kimi-for-coding(-highspeed), Open Platformkimi-k2.7-code(-highspeed)) and MiniMax M2.x — their "None" would silently reroute the model or keep thinking on anyway
- Thinking UI: Models with reasoning capabilities show collapsible thinking sections via
LanguageModelThinkingPart - Context Gauge: Streams
stream_options: { include_usage: true }and reports the real token usage back to Copilot Chat, so the context-window indicator shows actual usage instead of 0; falls back to CJK-aware token estimation (Chinese ≈ 1 token/char) before the first real usage arrives - Vision Support: Vision-capable models (deepseek-v4-flash-vision-exp, glm-5.3-flash, kimi-for-coding, MiniMax-M3, qwen3.8-max, qwen3.8-flash, qwen3.7-plus, qwen3.6-flash) can read images attached in Copilot Chat
- Tool Calling: Function calling support for compatible models
- Install the extension
- Open Copilot Chat → Manage Models → Add Model
- Select a provider and enter your API key
- Start chatting with the selected model
Thinking effort is now selected per model, per turn via the Copilot model picker's hover menu — there is no global thinking-effort setting.
| Setting | Description | Default |
|---|---|---|
omniCopilot.contextLength |
Max input context length (4K–1M presets, or custom) |
default |
omniCopilot.customContextLength |
Custom max input context (used when contextLength is custom) |
131072 |
omniCopilot.enableVision |
Enable vision for supported models | true |
- Node.js (LTS recommended)
- VS Code 1.108.0+
- GitHub Copilot extension installed
git clone https://github.com/LyaQanYi/OmniCopilot.git
cd OmniCopilot
npm install# Compile TypeScript
npm run compile
# Watch mode (auto-recompile on changes)
npm run watchTo debug the extension, press F5 in VS Code to launch an Extension Development Host with the extension loaded.
npx @vscode/vsce package --no-dependenciessrc/
├── extension.ts # Extension entry point, activation & commands
├── provider.ts # Language model provider implementation
├── api.ts # API call logic (streaming, thinking, vision)
├── models.ts # Preset model definitions per vendor
└── types.ts # Shared TypeScript interfaces
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feat/my-feature - Commit your changes:
git commit -m "feat: add my feature" - Push to the branch:
git push origin feat/my-feature - Open a Pull Request
- Follow existing code style (TypeScript strict mode)
- Test with at least one provider before submitting
- Keep commit messages clear and descriptive
- One feature/fix per PR when possible
- Test a provider — Pick an untested platform from the TODO list, test it, and report results
- Add a new provider — Add model definitions in
models.tsand register inextension.ts - Fix bugs — Check Issues for reported problems
- Improve docs — Help with documentation or translations
- VS Code 1.108.0+
- GitHub Copilot extension
- Fix: answer text leaking into the thinking block — when a model's answer quoted literal
<think>/</think>strings (e.g. while reviewing this very codebase), the tag parser mistook them for delimiters and rerouted answer segments into the collapsible thinking section. Thinking now flows through two dedicated paths:reasoning_contentdeltas map straight toLanguageModelThinkingPart,contentdeltas stream verbatim as text; literal-tag parsing only runs for vendors that inline thinking insidecontent(MiniMax native API, opt-in viainlineThinkTags) - Context gauge no longer stuck at 0: streams
stream_options: { include_usage: true }(with an automatic retry without the flag on 400/422) and reports the real usage to Copilot Chat via aLanguageModelDataPart(usagemime), lighting up the token indicator for extension-contributed models - CJK-aware token estimation in
provideTokenCount: Chinese/Japanese/Korean text counts ≈ 1 token per character instead oflength / 4, fixing 4-6x undercounts in Chinese-heavy conversations
Pre-release: every provider re-verified against official docs. GLM API keys must be re-entered (vendor ID changed).
- Renames: Bigmodel Plan → GLM Coding Plan CN (vendor ID now
glm-coding-plan-cn), Qwen → Qwen Token Plan, MiniMax → MiniMax Token Plan CN - Kimi split into Kimi Code Plan (
moonshot) and Moonshot Open Platform (moonshot-open): k3, k3-256k, kimi-for-coding(-highspeed), kimi-k3, kimi-k2.7-code(-highspeed), kimi-k2.6 - Volcengine split into Volcengine Coding Plan CN (
volcengine) and Volcengine Agent Plan CN (volcengine-agent-plan): Doubao Seed 2.1 Turbo / Seed Evolving / 2.0 Lite (plus 2.0 Mini and Kimi K3 on Agent Plan) hosted alongside kimi-k2.7-code, minimax-m3, deepseek-v4-flash/pro and glm-5.3(-flash); doubao-seed-2.0-pro, ark-code-latest and the stale third-party IDs are gone - New models: deepseek-v4-flash-vision-exp, qwen3.7-max, qwen3.6-flash, glm-5.3 / glm-5.3-flash; lineups trimmed to what each platform actually serves (GLM Coding endpoint keeps only 5.3 / 5.3-Flash)
- Thinking semantics overhauled: new
thinkingLocked(no picker menu) for K2.7 Code and MiniMax M2.x whose thinking cannot be disabled; three-level Low/High/Max menu for Kimi K3 and GLM-5.3(-Flash); Low added to DeepSeek where None genuinely disables; MiniMax-M3 and Volcengine "None" now send an explicit disable - Doc-verified effort knobs: DeepSeek
reasoning_effort(low/high/max), Qwenthinking_budget(max 32768), DashScope-hosted GLM/DeepSeek onreasoning_effort, Zhiputool_streamfor streaming tool calls, MiniMaxmax_completion_tokens - Reliability: reasoning_content backfilled for tool loops on DeepSeek, GLM and Kimi Open Platform; vision lists refreshed (deepseek-v4-flash-vision-exp, glm-5.3-flash, MiniMax-M3, five Qwen models)
- Custom model support removed: the
custom-openaiprovider, the per-vendorcustomModelIdssettings and the Add Custom Model ID command are gone — VS Code's built-in custom model flow covers this
- Per-model Thinking Effort picker in Copilot model selector — hover a thinking-capable model and choose effort for the next turn, no global setting needed
- DeepSeek V4 menu: None / High / Max (matches the V4 API's
reasoning_effortdomain) - 4-level menu (None / Low / Medium / High) for Qwen reasoning models
- 2-level menu (None / On) for GLM, Kimi, MiniMax, and Volcengine reasoning models
- DeepSeek V4 menu: None / High / Max (matches the V4 API's
- DeepSeek model list updated from
deepseek-chat/deepseek-reasonertodeepseek-v4-flash/deepseek-v4-pro(1M input, 384K output, both reasoning-capable) - Removed global
omniCopilot.enableThinkingandomniCopilot.thinkingEffortsettings, the matching status-bar items, andOmniCopilot: Toggle Thinking Mode/Set Thinking Effortcommands — picker covers all cases now - Vendor-specific reasoning mapping reworked to handle the full None / On / Low / Medium / High / Max space:
- DeepSeek:
reasoning_effort: high|maxwhen enabled, omitted when None - Qwen:
enable_thinking+thinking_budget(1024 / 4096 / 16384 tokens; max → 16384) - Moonshot: explicit
thinking: { type: "enabled"|"disabled" } - Volcengine:
thinking: { type: "enabled" }only when enabled - Zhipu / MiniMax: no API knob, picker only controls output stripping
- DeepSeek:
- Add user-configurable max input context length cap (presets 4K–1M + custom 1K-2M tokens), shown in status bar
- Add Volcengine Plan provider with 8 models (doubao-seed, minimax-m2.5, glm-4.7, deepseek-v3.2, kimi-k2.5)
- Gate
reasoning_contentfield by vendor capability — only send it for DeepSeek, Qwen, Moonshot/Kimi, and Zhipu; avoids request rejection on strict backends (Volcengine, MiniMax, custom) - Extract shared
buildOpenAIMessageshelper to deduplicate message-serialization logic betweenMultiModelChatProviderandCustomOpenAIProvider - Add
reasoning_contenthandling inCustomOpenAIProvider
- Add Bigmodel Plan (Zhipu) provider with GLM-5.1, GLM-5-Turbo, GLM-4.7, GLM-4.5-Air models
- Enable thinking capability for Zhipu models
- Normalize Zhipu model IDs
- Enable thinking capability for MiniMax vendor
- Enhance thinking support logic in both
MultiModelChatProviderandCustomOpenAIProvider - Fix: flush remaining thinking buffer and pending tool calls after stream ends
- Add MIT LICENSE file
- Fix repository URL in package.json
- Initial release
- Multi-model provider architecture with DeepSeek, Moonshot (Kimi), Qwen, MiniMax support
- Custom OpenAI-compatible provider for any endpoint
- Thinking mode with
<think>tag parsing and collapsible UI (viaLanguageModelThinkingPart) - Vision support for image-capable models
- Tool calling / function calling support
- Custom model ID management via settings and command palette
- Configurable thinking effort (low / medium / high)
MIT