Выбор LLM для агентного кодинга в OpenCode: цены и vision 2026

Содержание10 разделов
Выбор модели для агентного кодинга — не поиск «самой умной», а оптимизация по треугольнику: качество на SWE-bench, реальная стоимость с учётом кеширования и рабочая мультимодальность. Последний угол оказывается самым коварным: модель числится мультимодальной в спецификации, но в агенте — OpenCode, Kilo Code, Cline — картинок не видит.
Ниже — актуальный на 2026 год срез по OpenRouter с упором на OpenCode и разбором того, почему «✅ Vision» в таблице не гарантирует, что скриншот доедет до модели.
Актуальные цены и бенчмарки (OpenRouter)
Цена за запрос рассчитана для среднего профиля: 10 000 токенов вход / 2 000 токенов выход — типичный запрос на рефакторинг или генерацию модуля.
Модель | Вход $/1M | Выход $/1M | $/запрос | SWE-bench | Изображения | Кеширование |
|---|---|---|---|---|---|---|
DeepSeek V4 Flash | $0.09 | $0.18 | $0.0013 | ~79% Verified | ❌ только текст | Авто, попадание $0.0028/1M |
MiMo-V2.5 base | $0.14 | $0.28 | $0.0020 | — | ✅ фото+видео+аудио | Да, попадание ~$0.20/1M |
MiniMax M3 | $0.30 (акция) | $1.20 (акция) | $0.0054 акция / $0.0240 стандарт | 59.0% Pro | ✅ фото+видео+компьютер | Sticky-маршрутизация |
Qwen3.7 Plus | $0.32 | $1.28 | $0.0058 | — | ✅ фото+GUI+скриншоты UI | Да, 60–80% |
DeepSeek V4 Pro | $0.435 | $0.87 | $0.0061 | ~80.6% Verified | ❌ только текст | Авто, попадание $0.0036/1M |
MiMo-V2.5-Pro | $0.435 | $0.87 | $0.0061 | 78.9% Verified / 57.2% Pro | ✅ уровень Claude Sonnet | Да, попадание ~$0.20/1M |
Qwen3.7 Max | $1.25 | $3.75 | $0.0200 | ~80.4% Verified | ❌ | Да, 60–80% |
Gemini 2.5 Pro | $1.25 | $10.00 | $0.0325 | ~63–67% Verified | ✅ | Неявное, 0.25x |
GPT-4.1 | $2.00 | $8.00 | $0.0360 | 54.6% Verified | ✅ | Авто |
Claude Sonnet 4.6 | $3.00 | $15.00 | $0.0600 | ~79.6% Verified | ✅ | Явное, 0.1x чтение |
Claude Opus 4.8 | $5.00 | $25.00 | $0.1000 | ~88.6% Verified / 69.2% Pro | ✅ | Явное, 0.1x чтение |
Почему «мультимодальная» ≠ «видит картинки в агенте»?
Это ключевой раздел, которого не хватает в большинстве обзоров. Знак «✅» в колонке «Изображения» означает, что модель умеет обрабатывать картинки. Он не означает, что скриншот из агента до модели доедет. Между запросом и весами модели три слоя, на каждом из которых изображение может потеряться.
Слой 1. Маршрутизация провайдеров на OpenRouter
OpenRouter — не сама модель, а маршрутизатор поверх нескольких провайдеров, которые хостят одни и те же веса. Для популярной модели изображение может отдавать провайдер A, тогда как провайдер B раздаёт только текстовый эндпоинт. OpenRouter по умолчанию балансирует нагрузку и вправе разроутить запрос на любого из них. Итог: одна и та же модель то видит, то не видит картинки — в зависимости от того, куда ушёл конкретный запрос.
Слой 2. Формат передачи изображения
Агент может слать картинку в двух несовместимых форматах: image_url (стиль OpenAI — ссылка или base64 в поле URL) и input_image (иной формат части провайдеров). Провайдер, принимающий только один из них, на другом вернёт ошибку. Знаменитое «Image input not supported» в MiMo-V2.5 base — часто не про отсутствие vision у модели, а про несовпадение формата на стороне провайдера. Это отдельная поломка, которую легко спутать с первым слоем.
Слой 3. Проверка vision за 30 секунд
Прежде чем доверять сессии отладки по скриншотам, канал проверяется явно, а не по факту первой сломавшейся задачи.
- Взять скриншот, вписать в него маркер, который модель не может знать заранее — например, случайное число прямо на картинке.
- Отправить и спросить: «Какое число написано на изображении?»
- Назвала число → vision работает через текущего провайдера и формат. Пишет «не вижу изображений» или галлюцинирует случайное число → переключить провайдера или формат.
Тридцать секунд экономят час отладки не того слоя.
Как настроить модель с гарантированным vision в OpenCode?
В OpenCode список моделей приходит через models.dev, а конфигурация задаётся в opencode.json. В отличие от выпадающего списка в Kilo Code, здесь провайдер закрепляется жёстко — что и решает проблему первого слоя. Рабочий пример с закреплением провайдера, у которого мультимодальность подтверждена:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"openrouter": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "https://openrouter.ai/api/v1"
},
"models": {
"qwen/qwen3.7-plus": {
"name": "Qwen3.7 Plus (vision, один провайдер — привязка не нужна)"
},
"minimax/minimax-m3": {
"name": "MiniMax M3 (vision, привязка обязательна — 7 провайдеров)",
"options": {
"provider": {
"order": ["Parasail", "MiniMax"],
"allow_fallbacks": false
}
}
}
}
}
}
}Ключевое — разница между двумя моделями. Qwen3.7 Plus раздаёт единственный провайдер, поэтому блок provider ей не нужен: запрос физически некуда разроутить, картинка всегда идёт по одному маршруту. MiniMax M3 хостят семь провайдеров, и тут allow_fallbacks: false с явным order обязателен — иначе запрос уйдёт на того, у кого vision не поднят.
Self-hosted OpenCode за nginx: обязательная правка
Если OpenCode Server развёрнут на VPS за обратным прокси nginx, есть подводный камень, который выглядит как «модель не видит картинки», а на деле — обрезанный запрос. Скриншот в base64 раздувает тело запроса до нескольких мегабайт, а nginx по умолчанию режет тело на 1 MB и возвращает 413 Request Entity Too Large. Агент при этом часто не показывает внятной ошибки — картинка просто молча не доходит.
Правка в конфигурации сайта nginx (либо в Nginx Proxy Manager — поле Advanced):
server {
server_name opencode.example.top;
location / {
client_max_body_size 20M;
proxy_pass http://127.0.0.1:4096;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
}После правки — перезагрузка конфигурации:
nginx -t && systemctl reload nginxБез client_max_body_size отладка по скриншотам падает молча, и это легко перепутать с проблемой на стороне модели.
Какую модель выбрать для работы со скриншотами ошибок?
Сценарий «скриншот с ошибкой → агент правит код» требует одновременно качественного vision и сильного агентного кодинга. Сравнение актуальных вариантов:
Модель | $/запрос | SWE-bench Pro | Vision | Когда использовать |
|---|---|---|---|---|
MiMo-V2.5 base | $0.0020 | — | фото+видео+аудио | Чтение документации, визуальный контроль качества — не для отладки |
MiniMax M3 | $0.0054 (акция) | 59.0% | фото+видео+компьютер | Лучший по цена/качество, пока действует акция |
Qwen3.7 Plus | $0.0058 | — | фото+GUI | Оптимум для скриншотов UI и отладки после окончания акции M3 |
MiMo-V2.5-Pro | $0.0061 | 57.2% | уровень Sonnet | Единая модель для кодинга + vision, стабильная цена |
Claude Sonnet 4.6 | $0.0600 | — | нативный reasoning | Когда остальные дают поверхностные правки |
Дешёвые vision-модели Qwen — недооценённый вариант с одним провайдером
Отдельно выделяется линейка Qwen с нативной мультимодальностью и единственным провайдером — то есть без риска попасть на текстовый эндпоинт. Для сценариев, где не нужен максимум качества кодинга (чтение документации, сверка макета со спецификацией, простой разбор скриншота), они дешевле всего перечисленного выше.
Модель | Вход $/1M | Выход $/1M | Модальности | Провайдеров |
|---|---|---|---|---|
Qwen3.6 Flash | $0.1875 | $1.125 | текст+фото+видео | 1 (Alibaba) |
Qwen3.5 35B-A3B | $0.14 | $1.00 | текст+фото | 1 |
Qwen3.5 122B-A10B | $0.26 | $2.08 | текст+фото | 1 |
Qwen3.7 Plus | $0.32 | $1.28 | текст+фото+GUI | 1 (Alibaba) |
Qwen3.6 Flash при цене $0.1875/$1.125 — самая дешёвая надёжная опция с изображениями во всём обзоре: контекст 1M токенов, поддержка видео, кеширование с явным чтением и записью. Для отладки сложного кода она слабее Qwen3.7 Plus, но для сценария «прочитать скриншот и понять, что на экране» — оптимальна. Ещё одна свежая опция вне экосистемы Qwen — Step 3.7 Flash от stepfun: нативный vision, открытые веса, вход ниже $0.40/1M.
Почему кеширование DeepSeek меняет экономику агентного кодинга?
В любом агенте системный промпт, определения инструментов и контекст файлов повторяются в каждом запросе. DeepSeek применяет автоматическое кеширование без дополнительной настройки: если начало промпта совпадает с предыдущим запросом, совпавшие токены тарифицируются по цене попадания.
- V4 Flash: попадание стоит $0.0028/1M — снижение на 98% относительно полной входной цены.
- V4 Pro: попадание $0.0036/1M (~0.8% от входа).
Нет ни параметра cache_control, ни платы за запись, ни почасового хранения. Сравнение с альтернативами:
- MiMo-V2.5: попадание в кеш до $0.20–0.40/1M — в 50–100 раз дороже DeepSeek.
- Claude: требует явных точек останова
cache_control, запись 1.25–2x, чтение 0.1x. Реально — около 39% попаданий при типичной сессии, остальное тарифицируется по полной.
При активном кешировании реальная цена запроса DeepSeek V4 Flash падает до $0.00003–0.00010 на повторяющемся контексте — это меняет сравнение с Claude не на порядок, а на два.
Разбор конкретных моделей
DeepSeek V4 Pro — основной текстовый инструмент
Архитектура MoE: 1.6T параметров, 49B активных, контекст 1M токенов. ~80.6% на SWE-bench Verified — на уровне Claude Opus 4.6 при цене $0.0061 за запрос против $0.10 у Opus 4.8. Лидирует среди open-weight моделей по LiveCodeBench (93.5) и Codeforces (рейтинг 3206). Ввод только текстовый — изображения через API не поддерживаются.
DeepSeek V4 Flash — дешёвый драйвер для рутины
~79% SWE-bench Verified, быстрее всех версий Opus по времени на задачу (~165 с). Цена запроса $0.0013 — в 46 раз дешевле Claude Sonnet 4.6 при сопоставимом SWE-bench. Режим thinking включён по умолчанию — для простых задач его стоит отключать: токены рассуждений тарифицируются как дорогой выход.
Конфигурация в OpenCode для рутинных операций (правки, тесты, чтение файлов):
{
"provider": {
"openrouter": {
"models": {
"deepseek/deepseek-v4-flash": {
"name": "DeepSeek V4 Flash (рутина, без thinking)",
"options": {
"temperature": 0.0,
"reasoning": { "enabled": false }
}
}
}
}
}
}MiniMax M3 — лучший по цена/качество для vision-кодинга, пока действует акция
Архитектура MiniMax Sparse Attention (MSA): 9.7x ускорение prefill и 15.6x ускорение декодирования на 1M токенах по сравнению с предыдущим поколением. Нативно мультимодальная система — обучена на чередующихся данных текста и изображений с нуля.
Бенчмарки: SWE-bench Pro 59.0% (выше GPT-5.5 при 58.6%), Terminal-Bench 2.1 66.0%, BrowseComp 83.5. Поддержка текста, изображений, видео и управления компьютером в едином конвейере. Напоминание из раздела выше: чтобы vision реально работал через OpenRouter, провайдер закрепляется через allow_fallbacks: false.
Qwen3.7 Plus — стабильный оптимум после окончания акции M3
Построен на базе Qwen3.7-Max с добавленным vision-стеком: читает скриншоты интерфейсов, локализует элементы UI, понимает контекст ошибки и генерирует патч в едином агентном цикле. ScreenSpot Pro 79.0 — верхний диапазон среди всех моделей. Terminal-Bench 2.0 70.3. Цена $0.0058/запрос стабильна, в отличие от акционной M3.
MiMo-V2.5 base — омнимодальная модель для простых визуальных задач
Xiaomi MoE: 310B параметров / 15B активных, лицензия MIT. Поддержка фото, видео и аудио. Цена $0.0020/запрос — самая низкая среди моделей с vision. Подходит для чтения документации, сверки UI со спецификациями, визуального контроля качества. Для отладки через скриншоты ошибок не оптимальна: кодинг не основной фокус модели, лимит выхода 8K токенов на ряде провайдеров.
MiMo-V2.5-Pro — надёжный резерв после окончания акции MiniMax M3
1.02T параметров, 42B активных. SWE-bench Verified 78.9%, SWE-bench Pro 57.2%, Terminal-Bench 2.0 68.4. Та же цена запроса, что у DeepSeek V4 Pro ($0.0061), но с подтверждённым vision на уровне Claude Sonnet и расходом на 40–60% меньше токенов на траекторию. Цена стабильна, без зависимости от акции.
Claude Sonnet 4.6 и Opus 4.8 — потолок качества
Sonnet 4.6 (~79.6% SWE-bench Verified) стоит $0.0600 за запрос. Vision интегрирован нативно в reasoning-конвейер: при передаче скриншота ошибки вместе с кодом модель корректно определяет корневую причину, а не применяет поверхностную правку. Opus 4.8 (~88.6% Verified, 69.2% Pro, $0.1000/запрос) оправдан для координационных задач, где другие модели зацикливаются.
Рекомендуемые связки для OpenCode
Распределение по задачам с готовыми моделями:
- Основной кодинг (текст):
deepseek/deepseek-v4-pro— $0.0061/запрос - Простые правки, тесты, чтение файлов:
deepseek/deepseek-v4-flashс отключённым thinking — $0.0013/запрос - Скриншот ошибки → отладка (пока действует акция):
minimax/minimax-m3с закреплённым провайдером — $0.0054/запрос - Скриншот ошибки → отладка (после акции, приоритет GUI):
qwen/qwen3.7-plus— $0.0058/запрос - Скриншот ошибки → отладка (после акции, единая модель):
xiaomi/mimo-v2.5-pro— $0.0061/запрос - Простое чтение изображений, документация:
xiaomi/mimo-v2.5— $0.0020/запрос - Сложные координационные задачи:
anthropic/claude-sonnet-4-6($0.0600) →anthropic/claude-opus-4-8($0.1000) - Альтернатива DeepSeek для текстового кодинга:
z-ai/glm-5.2— лучший open-weight кодер по независимому Intelligence Index (51), реализованная цена ~$0.447/$3.31 за 1M. Vision не поддерживает — только текст.
Сводная конфигурация opencode.json с рабочей текстовой моделью и закреплённой vision-моделью:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"openrouter": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "https://openrouter.ai/api/v1"
},
"models": {
"deepseek/deepseek-v4-pro": {
"name": "DeepSeek V4 Pro (основной, текст)"
},
"deepseek/deepseek-v4-flash": {
"name": "DeepSeek V4 Flash (рутина)",
"options": {
"temperature": 0.0,
"reasoning": { "enabled": false }
}
},
"minimax/minimax-m3": {
"name": "MiniMax M3 (vision, скриншоты)",
"options": {
"provider": {
"order": ["MiniMax", "Novita"],
"allow_fallbacks": false
}
}
},
"qwen/qwen3.7-plus": {
"name": "Qwen3.7 Plus (vision, резерв)",
"options": {
"provider": {
"order": ["Alibaba"],
"allow_fallbacks": false
}
}
}
}
}
}
}Когда пересматривать конфигурацию?
Оговорки и ограничения
- Обвязка важнее модели. На Terminal-Bench 2.0 один LLM может колебаться на 30–50 пунктов в зависимости от обвязки агента.
- Цены и провайдеры меняются. Акция MiniMax M3 — без объявленной даты окончания. Список провайдеров, отдающих vision, у модели тоже плавает — закреплённого стоит периодически перепроверять.
- MiMo-V2.5 и MiniMax M3 — свежие модели. Инфраструктура хостинга вне Китая ещё созревает; совместимость vision в агентных фреймворках требует проверки тестом на «случайное число».
Заключение
Оптимальная стратегия для агентного кодинга в OpenCode строится на трёх уровнях: DeepSeek V4 Flash ($0.0013/запрос) для рутины, DeepSeek V4 Pro ($0.0061/запрос) как основная текстовая модель и vision-модель под текущую ситуацию — MiniMax M3 ($0.0054) пока действует акция, затем Qwen3.7 Plus ($0.0058) для GUI-отладки или MiMo-V2.5-Pro ($0.0061) как единая стабильная модель, с эскалацией на Claude Sonnet 4.6 ($0.0600) там, где нужен глубокий анализ корневых причин. Но выбор модели — только половина дела: «✅ Vision» не гарантирует, что скриншот доедет, поэтому закрепление провайдера через allow_fallbacks: false, проверка формата передачи, client_max_body_size на nginx и тест на «случайное число» перед сессией — те четыре шага, что отделяют модель, которая видит картинки в спецификации, от модели, которая видит их в OpenCode.