Один файл opencode.json — и доступны Claude, GPT и все остальные модели, с переключателем уровня размышления по ctrl+t. Конфиг ниже готов: вставьте свой ключ.
Положите файл в ~/.config/opencode/opencode.json (или в корень проекта) и вставьте свой ключ sk-ev-… в двух местах. Список моделей берётся из живого каталога — он обновляется сам.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"anthropic": {
"npm": "@ai-sdk/anthropic",
"name": "Evolution (Claude)",
"options": {
"baseURL": "https://api.evomodels.xyz/v1",
"apiKey": "sk-ev-ВАШ_КЛЮЧ"
},
"whitelist": [
"claude-haiku-4-5",
"claude-opus-4-5",
"claude-opus-4-5",
"claude-opus-4-6",
"claude-opus-4-6",
"claude-opus-4-7",
"claude-opus-4-7",
"claude-opus-4-7",
"claude-opus-4-8",
"claude-opus-4-8",
"claude-opus-4-8",
"claude-opus-4-8",
"claude-opus-4-8",
"claude-opus-4-8",
"claude-opus-4-8",
"claude-opus-4-8",
"claude-opus-5",
"claude-opus-5",
"claude-opus-5",
"claude-opus-5",
"claude-opus-5",
"claude-opus-5",
"claude-opus-5",
"claude-opus-5",
"claude-sonnet-5",
"claude-sonnet-5",
"claude-sonnet-5",
"gpt-5.6-luna",
"gpt-5.6-sol",
"gpt-5.6-terra"
]
},
"openai": {
"npm": "@ai-sdk/openai",
"name": "Evolution (GPT)",
"options": {
"baseURL": "https://api.evomodels.xyz/v1",
"apiKey": "sk-ev-ВАШ_КЛЮЧ"
},
"whitelist": [
"gpt-5.6-luna",
"gpt-5.6-sol",
"gpt-5.6-terra",
"gpt-6-astra"
]
},
"eva-openai": {
"npm": "@ai-sdk/openai-compatible",
"name": "Evolution (Gemini/Qwen/GLM/…)",
"options": {
"baseURL": "https://api.evomodels.xyz/v1",
"apiKey": "sk-ev-ВАШ_КЛЮЧ"
},
"models": {
"claude-fable-5-thinking": { "name": "Claude Fable 5 (с размышлением)" },
"claude-haiku-4-5": { "name": "Claude Haiku 4.5" },
"claude-haiku-4-5-thinking": { "name": "Claude Haiku 4.5 (thinking)" },
"claude-opus-4-5": { "name": "Claude Opus 4.5" },
"claude-opus-4-5": { "name": "Claude Opus 4.5" },
"claude-opus-4-5-thinking": { "name": "Claude Opus 4.5 (thinking)" },
"claude-opus-4-5-thinking": { "name": "Claude Opus 4.5 (thinking)" },
"claude-opus-4-6": { "name": "Claude Opus 4.6" },
"claude-opus-4-6": { "name": "Claude Opus 4.6" },
"claude-opus-4-7": { "name": "Claude Opus 4.7" },
"claude-opus-4-7": { "name": "Claude Opus 4.7" },
"claude-opus-4-7": { "name": "Claude Opus 4.7" },
"claude-opus-4-7-thinking": { "name": "Claude Opus 4.7 (thinking)" },
"claude-opus-4-7-thinking": { "name": "Claude Opus 4.7 (thinking)" },
"claude-opus-4-8": { "name": "Claude Opus 4.8" },
"claude-opus-4-8": { "name": "Claude Opus 4.8" },
"claude-opus-4-8": { "name": "Claude Opus 4.8" },
"claude-opus-4-8": { "name": "Claude Opus 4.8" },
"claude-opus-4-8": { "name": "Claude Opus 4.8" },
"claude-opus-4-8": { "name": "Claude Opus 4.8" },
"claude-opus-4-8": { "name": "Claude Opus 4.8" },
"claude-opus-4-8-thinking": { "name": "Claude Opus 4.8 (thinking)" },
"claude-opus-4-8-thinking": { "name": "Claude Opus 4.8 (thinking)" },
"claude-opus-4-8-thinking": { "name": "Claude Opus 4.8 (с размышлением)" },
"claude-opus-5": { "name": "Claude Opus 5" },
"claude-opus-5": { "name": "Claude Opus 5" },
"claude-opus-5": { "name": "Claude Opus 5" },
"claude-opus-5": { "name": "Claude Opus 5" },
"claude-opus-5": { "name": "Claude Opus 5" },
"claude-opus-5": { "name": "Claude Opus 5" },
"claude-opus-5": { "name": "Claude Opus 5" },
"claude-opus-5-thinking": { "name": "Claude Opus 5 (с размышлением)" },
"claude-sonnet-5": { "name": "Claude Sonnet 5" },
"claude-sonnet-5": { "name": "Claude Sonnet 5" },
"claude-sonnet-5": { "name": "Claude Sonnet 5" },
"claude-sonnet-5-thinking": { "name": "Claude Sonnet 5 (thinking)" },
"claude-sonnet-5-thinking": { "name": "Claude Sonnet 5 (thinking)" },
"gemini-3-flash": { "name": "Gemini 3 Flash" },
"gemini-3-flash-agent": { "name": "Gemini 3 Flash (agent)" },
"gemini-3.1-flash-lite": { "name": "Gemini 3.1 Flash Lite" },
"gemini-3.1-pro-preview": { "name": "Gemini 3.1 Pro (preview)" },
"gemini-3.1-pro-low": { "name": "Gemini 3.1 Pro Low" },
"gemini-3.5-flash-extra-low": { "name": "Gemini 3.5 Flash Extra Low" },
"gemini-3.5-flash-low": { "name": "Gemini 3.5 Flash Low" },
"gemini-3.6-flash-high": { "name": "Gemini 3.6 Flash High" },
"gemini-3.7-flash-high": { "name": "Gemini 3.7 Flash High" },
"gemini-pro-agent": { "name": "Gemini Pro (agent)" },
"gemini-3.8-flash-high": { "name": "gemini-3.8-flash-high" }
}
}
}
}claude-haiku-4-5) и нажмите ctrl+t — это переключатель уровня размышления, вплоть до max.В OpenCode размышление — это не отдельная модель и не поле в конфиге, а переключатель уровня у обычной модели: команда «Cycle thinking effort», по умолчанию на ctrl+t. Выбираете обычный claude-opus-5 — и сами решаете, думать ему или нет.
ctrl+tlow → medium → high → xhigh → maxlow → medium → high → maxlow → medium → high-thinkingНабор уровней задаёт модель, а не OpenCode. Поэтому он разный: у нынешних флагманов — и у Claude, и у GPT — потолок одинаковый, xhigh и max; у моделей постарше список короче, а у Sonnet 4.5 и Haiku 4.5 уровней нет вовсе (там размышление задаётся бюджетом токенов).ctrl+t перебирает ровно то, что умеет выбранная модель.
Размышление — это токены на выходе, поэтому max на том же вопросе дороже low: у GPT заметно сразу (оплата по токенам), у Claude с оплатой за запрос цена та же, но ответ дольше. Переключатель не «для вида»: поставщик возвращает выбранный уровень в ответе — проверено.
anthropic — только по этому имени OpenCode подтягивает свои данные о моделях (в них и лежит поддержка размышления); 2) список задаётся через whitelist, а не models — models создаёт модель «с нуля», без возможностей, и переключатель пропадает; 3) никаких -thinking id и полей reasoning/limit/options.thinking — они не работают и только мешают.Три провайдера, и это не прихоть. Имя провайдера решает, узнает ли OpenCode модель «в лицо» и подтянет ли к ней свои данные — а вместе с ними и уровни размышления. Поэтому Claude лежит под именем anthropic, GPT — под openai, а всё остальное (Qwen, GLM, Gemini, Step, DeepSeek) под своим именем eva-openai: этих моделей OpenCode не знает, их приходится описывать вручную — и переключателя у них нет. У всех трёх baseURL — с /v1: OpenCode сам дописывает /messages или /chat/completions.
whitelist — это фильтр, а не список. Под именем anthropic OpenCode уже знает модели Anthropic (вместе с их возможностями). whitelist лишь оставляет из них те, что обслуживает наш шлюз — иначе в списке появились бы модели, которых у нас нет, и их выбор дал бы 404. Добавить свой id через whitelist нельзя: чего OpenCode не знает, то отбрасывается.
-thinking варианты) в whitelist не попадут — это нормально, они и не нужны: размышление даёт ctrl+t. Подробнее про приставки — правило 2 на странице настройки. Каталог — Модели. Источник: OpenCode · Providers.