Можно ли отказаться от Opus и Codex? Проверил MacBook, игровой ноутбук и DGX Spark на одной задаче с ловушками
class=»tm-article-presenter__content tm-article-presenter__content_narrow»>
NickAlister4 минуты назадКраткое содержание статьиМожно ли отказаться от Opus и Codex? Проверил MacBook, игровой ноутбук и DGX Spark на одной задаче с ловушками
Предыстория
У меня есть проект, о котором я раньше писал, open-daimon (групповой ИИ-чат для Telegram и платформа для расширений), и на его основе я сделал свой харнес, который запускает разные другие харнесы с разными ролями (публично open-daimon не обновляется, потому что разработку я веду пока только локально, так быстрее).
В какой-то момент захотелось заняться локальными моделями, и причина простая: в облаке правила чужие, и меняются они без спроса.
В октябре снова заговорили о том, что в потребительских условиях Anthropic для жителей ЕЭЗ и Швейцарии прямо написано: не использовать сервисы «в коммерческих или деловых целях». Под эти условия попадают Claude.ai и подписки Pro и Max. То есть разработчик в Европе, который пишет рабочий код в Claude Code по подписке Max, формально их нарушает. Для работы нужен API, Team или Enterprise, а это уже совсем другие деньги.
Вторая история про то, что тебе разрешат делать со своим же железом. Автор Decrypt попросил Claude Opus 5.5 помочь заново получить root на собственном телевизоре LG. Защита модели оборвала запрос и предложила переключиться на Opus 4.8. А исследователь, известный находкой с постоянно включённым микрофоном в телевизорах Samsung, пишет, что OpenAI заблокировала его аккаунт за «Cyber Abuse» после анализа прошивки через ChatGPT. Вместе с аккаунтом пропали примерно $500 на балансе API. OpenAI это не комментировала, так что пока это только его слова.
Направление понятное: ковырять чужое ПО будут запрещать всё чаще, а что считать злоупотреблением, решает производитель. Napster в своё время закрыли правообладатели. К Claude и Codex они тоже могут прийти, и запретить там есть что.
С самими моделями тоже не всё спокойно. В октябре на Hugging Face начали пропадать «расцензуренные» версии. Одну площадка закрыла за нарушение правил контента. Другая, abliterated-сборка Kimi K2.7 Code от huihui-ai (того самого, чья Qwen3.6 дальше будет в этом тесте), просто отдаёт ошибку, и почему, никто не объяснил (разбор). Массовой зачистки пока нет. Но youtube-dl в 2020-м GitHub снёс по одной жалобе RIAA, и вернул только через месяц. Пока всё лежит в одном месте, это место можно закрыть.
С апреля Anthropic проверяет личность части пользователей: паспорт и селфи через Persona. Один из поводов: вход из неподдерживаемой страны, и такие аккаунты блокируют. Чтобы получить лучшую модель, денег уже мало: важно ещё, где ты живёшь и какой у тебя паспорт.
Поэтому захотелось подстраховаться заранее: скачать веса, пока они лежат, и проверить, что локально они хоть как-то работают. Вряд ли облако закроют завтра. Но если закроют, хочется, чтобы под рукой была агентная система судного дня: работает без подписки, без чужих правил и без чьего-то разрешения.
На игровом ноутбуке с RTX 5080 уже стояла LM Studio с Qwen3.6-35B-A3B. LM Studio запускает модели прямо на компьютере и отдаёт их по тому же API, что и облако. Я подключил её к OpenCode. Это открытый агент для терминала, вроде Claude Code, только с любыми моделями. Работало это медленно, а модели на MacBook ещё медленнее, прям очень медленно.
Обычно в таких случаях советуют взять для агента на локалке очень лёгкий харнес. Например, pi, где системный промпт занимает около 2 тысяч токенов.
Я решил проверить на одной и той же задаче: облако, MacBook, игровой ноутбук, NVIDIA DGX Spark и дешёвые, в основном китайские, модели через OpenRouter.
Задача
Задачу я делал для своей «канарейки», скрипта, который проверяет, не отупели ли сегодня Opus и Codex. Сделал я её после того, как Opus у меня заметно тупил. Может, я попал в A/B-тест, а может, были технические проблемы, но подумал, что будет полезно.
Агент получает репозиторий minibank: ~700 строк Python, многовалютный банковский леджер. Счета в разных валютах, переводы с конвертацией, комиссии, месячные выписки, CSV-экспорт для бухгалтерии. Рядом лежит DECISIONS.md с решениями команды, как в любом живом проекте.
И запрос, как от живого менеджера:
Клиенты жалуются: в месячной выписке итог не сходится с балансом счёта, особенно когда были переводы между валютами. Разберись и почини. И посмотри, не ломается ли так же где-то ещё.
Про тесты ни слова. Про DECISIONS.md тоже.
Что там сломано
Основная ошибка: выписка не берёт сумму, которая реально пришла на счёт при переводе, а пересчитывает её заново через старый конвертер по текущему курсу. Курс за месяц поменялся, и итог выписки разъехался с балансом.
Дальше начинаются ловушки:
-
Конвертер-приманка. У старого конвертера в docstring написано «используйте эту функцию везде». А рядом есть новый, правильный. Если просто заменить старый на новый, почти все тесты станут зелёными. Но выписка всё равно будет пересчитывать перевод, просто другим способом. Правильно вообще не пересчитывать и брать проведённую сумму.
-
Исправленный курс. Если курс поправили задним числом, старые строки выписки меняться не должны. Ловит как раз тех, кто пересчитывает.
-
Часовые пояса. Месяц выписки считается в UTC, а не в часовом поясе сервера. В Лос-Анджелесе и Токио граница месяца у наивной реализации съезжает.
-
Комиссия. Каждая комиссия идёт отдельной строкой и из суммы перевода не вычитается.
-
Экспорт. CSV для бухгалтерии сломан ровно так же, и время там должно быть в ISO UTC. Это то самое «посмотри, не ломается ли где-то ещё».
-
Запрещённый модуль. Старый конвертер трогать нельзя: на нём живёт партнёрская выгрузка. Это написано в DECISIONS.md.
-
Тест-предатель. Один из готовых тестов закрепляет неправильные числа. Его надо обновить, а не удалить и не подогнать код под него.
Как считается оценка
Агент не видит, чем его проверяют. После прогона я беру то, что осталось в репозитории, и прогоняю:
-
20 скрытых приёмочных тестов дают половину оценки;
-
7 из них проверяют «тонкие» условия из списка выше (UTC, комиссия, исправленный курс, ISO-время), они дают ещё 15%;
-
9 правдоподобных неправильных исправлений (тот же «просто заменили конвертер»): я подкладываю их по очереди и смотрю, сколько из них ловят тесты, которые агент написал сам, без просьбы. Это четверть оценки;
-
правила (не тронул запрещённое, готовые тесты проходят, тест-предатель обновлён) дают оставшиеся 10%.
Часть скрытых тестов и правил проверяет, что работающее осталось работающим. Поэтому агент, который вообще ничего не сделал, получил бы 0.31. Так читать неудобно, и дальше все оценки пересчитаны от нуля: 0 значит, что ничего не изменилось, 1 значит идеально, а минус значит, что агент сломал больше, чем починил.
Лимит 20 минут с момента запроса. Облачные модели укладываются в 1,5–11 минут, так что запас есть. Если агент не успел, оцениваю то, что он успел сделать. 20 минут я выбрал, зная, что плотной модели на Spark нужно 16,5 минуты. Больше ставить не стал: кому хочется ждать дольше, чтобы пофиксить маленькую задачу?
Насколько верить цифрам
Задача одна, на Python, и прогонов на вариант в основном по одному-два. На MacBook я гонял больше, и там видно, что одна и та же модель на одних и тех же настройках может дать и 0.21, и минус. Так что разницу между похожими локальными моделями этот тест не покажет. А вот разрыв между лучшими облачными и быстрыми локальными получился таким, что никакой шум его не перекроет.
Эталон: облако
|
Модель |
Время |
Оценка |
Скрытые тесты |
Тонкие условия |
Своими тестами поймал ошибок |
Цена прогона по прайсу API |
|---|---|---|---|---|---|---|
|
Codex (GPT-6.1-sol, medium) |
101 с |
1.00 |
20/20 |
7/7 |
9/9 |
≈ $0.14 |
|
Claude Opus 5.5 |
91 с |
0.96 |
20/20 |
7/7 |
8/9 |
$0.30 |
|
Claude Fable 5.1 |
288 с |
0.96 |
20/20 |
7/7 |
8/9 |
$1.79 |
Codex сам цену не сообщает, её я посчитал по токенам прогона (280 тысяч на входе, из них 243 тысячи из кэша, и 4 тысячи на выходе) и прайсу GPT-6.1 Sol в API: 2 доллара за миллион входных токенов, 10 центов за кэшированные и 10 долларов за выходные.
Все трое прочитали DECISIONS.md, не попались на конвертер-приманку, нашли экспорт, обновили тест-предатель и написали свои тесты, которые ловят почти все неправильные исправления. Opus сделал это за полторы минуты и 7 вызовов инструментов.
Код Opus и Codex починили одинаково. Разница только в тестах, которые каждый написал сам. Если в выписке склеить комиссию со строкой перевода, тесты Codex это ловят, а тесты Opus не ловят. Сам Opus комиссию сделал отдельной строкой, просто не закрепил это тестом. У Fable тоже одна дыра, но другая: её тесты не заметят, если экспорт снова начнёт пересчитывать перевод по новому курсу. Одна пропущенная ошибка из девяти и даёт разницу между 1.00 и 0.96. Во втором прогоне и Opus, и Fable пропустили уже обе эти ошибки и получили 0.92. В третьем прогоне Opus снова набрал 0.96, но пропустил уже другую ошибку, с границей месяца. Дыры в основном те же, меняется то, сколько из них закроется в этот раз. Codex я прогнал один раз, так что его 9 из 9 тоже может оказаться удачей. Моя личная оценка на октябрь 2026: в повседневной работе я всё равно предпочитаю Opus, хотя на этой задаче Codex вышел и дешевле, и чуть лучше.
Я ещё прогнал Opus и Fable в своём рабочем окружении: с настройками, хуками, MCP-серверами, а отдельно ещё и со 178 тысячами токенов чужой длинной сессии перед задачей, как бывает в обычный рабочий день. Везде те же 20/20 и все тонкие условия. Плавает только то, сколько неправильных исправлений ловят их собственные тесты: от 7 до 9 из 9. В чистом окружении тоже плавает, от 7 до 8, так что это шум. Длинный контекст сказался только на цене: прогон в 2–6 раз дороже.
Так что планка такая: от полутора до пяти минут и почти идеальное решение.
MacBook Pro на Apple M5 с 32 ГБ памяти
Это компьютер, который есть у многих разработчиков, и первое, на чём хочется попробовать.
Сначала просто скорость, без задачи. Генерация показывает, сколько токенов в секунду модель пишет. Префилл показывает, сколько она читает: прежде чем написать хоть слово, модель читает весь контекст (системный промпт), описания инструментов, открытые файлы и историю шагов. У агента контекст растёт с каждым шагом, поэтому медленный префилл бьёт по нему сильнее, чем медленная генерация.
|
Модель |
Генерация |
Префилл |
|---|---|---|
|
Qwen3 Coder 30B A3B (MoE, 4 бит) |
52 ток/с |
743 ток/с |
|
Gemma 4 12B (4 бит) |
14 ток/с |
275 ток/с |
|
Qwen3.8 27B (плотная, 4 бит) |
5,4 ток/с |
159 ток/с |
В MoE-модели из 30 миллиардов параметров на каждый токен работают только около 3. Внутри каждого слоя у неё много экспертов (отдельных блоков со своими весами: модель как будто держит десятки узких специалистов и на каждый токен зовёт нескольких подходящих). Остальные эксперты в это время простаивают. Поэтому она быстрая. Отсюда и названия: 30B A3B значит 30 миллиардов всего и 3 активных. Плотная 27B честно гоняет все 27 и на ноутбуке выдаёт пять токенов в секунду. «4 бит» означает квантование: каждый параметр хранится не в 16 битах, а в 4. Модель становится вчетверо меньше и помещается в память ноутбука, но немного теряет в качестве.
LM Studio загружает часть моделей с контекстом 8192 токена. А OpenCode отправляет около 15 тысяч токенов системного промпта и описаний инструментов на каждом шаге. Задача в такой контекст не помещается. Ошибки при этом нет, агент просто работает плохо.
Поэтому первым делом выставьте Context Length в LM Studio для каждой модели отдельно. Я поставил 65536 для всех.
Результаты
Первый прогон каждой модели в pi:
|
Модель |
Время |
Сам закончил |
Оценка |
Скрытые |
Тонкие |
|---|---|---|---|---|---|
|
Gemma 4 12B |
575 с |
да |
0.21 |
12/20 |
3/7 |
|
Qwen3 Coder 30B A3B |
472 с |
да |
0 |
8/20 |
1/7 |
|
Qwen3.8 27B |
1200 с (лимит) |
нет |
0 |
8/20 |
1/7 |
Qwen3 Coder оказалась самой быстрой и самой бесполезной. 50 вызовов инструментов, бодрый финальный отчёт про «минимальное и точное исправление». И ровно та самая ловушка: заменила старый конвертер на новый, но продолжила пересчитывать перевод. По скрытым тестам вышло так, будто она ничего не делала. Ещё и оставила в корне репозитория свой test_debug.py.
Qwen3.8 27B прочитала DECISIONS.md, единственная из локальных на ноутбуке. И за 20 минут не сделала ни одной правки, ни в pi, ни в OpenCode.
На ноутбуке победила Gemma 4 12B. Она нашла главное: взяла проведённую сумму вместо пересчёта и в выписке, и в экспорте. Пропустила UTC, ISO-время и комиссию, тестов не писала, DECISIONS.md не читала. Но базовую ошибку клиента починила.
Самая маленькая из трёх оказалась самой полезной. Она уложилась меньше чем в 10 минут и не ушла в сторону, как Qwen3 Coder. Правда, такой результат был только в трёх её прогонах из десяти.
Ещё я покрутил семплинг (настройки случайности при выборе следующего токена) на Gemma и Qwen3 Coder. Пробовал дефолтные значения LM Studio (температура 0.8, top_k 40, top_p 0.95, min_p 0.05, штраф за повторы 1.1), значения, рекомендованные авторами моделей (у Gemma температура 1.0 и top_k 64, у Qwen3 Coder температура 0.7, top_k 20 и top_p 0.8), и температуру 0.3. Не помогло. Gemma на одних и тех же настройках дала в двух прогонах 0.21 и −0.17, так что разброс от случая больше, чем от любых настроек. А ошибки одни и те же: UTC, ISO-время и тест-предатель не осилил ни один прогон.
Игровой ноутбук с RTX 5080 и лёгкий харнес
Игровой ноутбук: RTX 5080 Laptop с 16 ГБ видеопамяти и 32 ГБ оперативной. LM Studio отдаёт модель по сети. На нём Qwen3.6-35B-A3B, тоже MoE, но покрупнее.
Скорость генерации до и после перенастройки LM Studio:
|
Контекст |
Было |
Стало |
|---|---|---|
|
короткий |
54 ток/с |
не мерил |
|
17 тысяч токенов |
21 ток/с |
102 ток/с |
|
42 тысячи токенов |
9,5 ток/с |
94 ток/с |
Падение с 54 до 9,5 ток/с на длинном контексте выглядело подозрительно, и я начал разбираться. Модель весит 21,7 ГБ, а видеопамяти 16, так что часть модели в любом случае живёт в оперативке. Почти весь вес MoE-модели приходится на экспертов, тех самых блоков, из которых на каждый токен включаются лишь несколько. Механизм внимания (attention, часть каждого слоя, которая на каждом новом токене заново просматривает весь контекст, чтобы решить, что в нём важно) и общие слои занимают немного. Выгоднее всего держать в оперативке часть экспертов: на каждый токен включается всего несколько из них, около 3 миллиардов параметров из 35, и процессор с ними справляется. А внимание должно оставаться на видеокарте: чем длиннее контекст, тем больше ему приходится просматривать. Параллельные запросы и размер контекста оказались ни при чём: с одним слотом вместо четырёх и с контекстом 32 тысячи вместо 64 скорость не изменилась. Всё решило то, как LM Studio раскладывает модель между видеокартой и процессором. Сохранённой раскладки у модели не было, и LM Studio сама решала, сколько слоёв ставить на видеокарту. Я выставил три параметра:
-
GPU Offload на максимум: все 40 слоёв на видеокарте;
-
«Number of layers for which to force MoE weights onto CPU» на 40%: эксперты примерно 16 слоёв считаются на процессоре, и всё остальное помещается в 16 ГБ;
-
KV-кеш в q8_0, чтобы освободить видеопамять под контекст.
Вместе с KV-кешем на видеокарте занято около 14,5 ГБ. Без этих настроек LM Studio, судя по скорости, уносила на процессор слои целиком, вместе с вниманием. Чем длиннее контекст, тем дольше процессор его считал, отсюда и 9,5 ток/с. Если же отправить на процессор экспертов всех слоёв, на видеокарте занято всего 4 ГБ, она почти простаивает, и выходит около 40 ток/с. Быстрее всего, когда видеопамять заполнена почти до конца.
Лёгкий харнес: pi против OpenCode
Я поставил pi, и сравнил его с OpenCode на одной и той же модели. OpenCode на первом шаге отправляет модели около 15 тысяч токенов, а pi около 2 200. Локальная модель читает около 1000 токенов в секунду, и лишние 13 тысяч токенов OpenCode стоят ей примерно 13 секунд. Облачная модель читает такой объём почти мгновенно.
Прогон minibank, ещё до перенастройки:
|
|
OpenCode |
pi |
|---|---|---|
|
Оценка |
0.21 |
0.29 |
|
Скрытые тесты |
12/20 |
12/20 |
|
Тонкие условия |
3/7 |
3/7 |
|
Своими тестами поймал ошибок |
0/9 |
2/9 |
|
Вызовов инструментов |
28 |
29 |
|
Время |
20 минут, лимит |
10 минут, сам закончил |
Pi закончил вдвое быстрее и четыре раза запустил тесты, а его тесты поймали две неправильные правки. Но решили оба одно и то же и пропустили одни и те же условия: UTC-месяцы, ISO-время и комиссию. С лимитом 10 минут было то же самое.
После перенастройки я прогнал minibank ещё раз:
|
|
OpenCode |
pi |
|---|---|---|
|
Оценка |
0.14 |
0.31 |
|
Скрытые тесты |
10/20 |
12/20 |
|
Тонкие условия |
2/7 |
3/7 |
|
Своими тестами поймал ошибок |
1/9 |
2/9 |
|
Время |
20 минут, лимит |
285 секунд, сам закончил |
Pi стал вдвое быстрее: меньше пяти минут вместо десяти. Решение то же, с теми же пропусками, только в этот раз pi обновил тест-предатель. OpenCode, уже обновлённый до версии 2.2, в лимит всё равно не уложился: модель в нём нарассуждала 55 тысяч токенов против 11 тысяч в pi, десять раз запускала тесты, не дошла до конца и вдобавок сломала исправленный курс в экспорте. В общем модель стала быстрее, но не умнее.
Отдельно про speculative decoding, которое на ноутбуке тоже включено: дополнительный слой самой модели (MTP, multi-token prediction) быстро угадывает несколько токенов вперёд, а основная модель проверяет их за один проход, и там, где угадали верно, выходит быстрее. Включается оно отдельным флагом при загрузке модели. Если флаг забыть, модель молча работает вдвое медленнее.
DGX Spark
Lenovo ThinkStation PGX сделан на базе NVIDIA DGX Spark: настольная коробка с чипом GB10 и 128 ГБ общей памяти. Модели крутятся в vLLM, сервере для моделей, который рассчитан на много запросов одновременно. Задача ушла на него архивом (без скрытых тестов, только репозиторий, запрос и скрипты) и запускалась через OpenCode. Оценивал я тем же скриптом.
MoE: та же модель, те же ошибки
Qwen3.6-35B-A3B, дистиллят под Opus (то есть модель, дообученная на ответах Opus), в 4-битном NVFP4. Это формат квантования NVIDIA, который чип Spark считает аппаратно. 35–50 ток/с.
340 секунд, сам закончил, 0.25. 12/20, 3/7.
Пропустила она UTC-месяцы, ISO-время и комиссию. Те же самые условия, что на ноутбуке с RTX 5080 в OpenCode и в pi. Пять прогонов, два разных компьютера, два разных сервера, два разных харнеса, а UTC-месяцы, ISO-время и комиссию пропустили все пять.
Плотная 27B: десяти минут мало
ThinkingCap-Qwen3.8-27B плотная и рассуждающая, в NVFP4 с speculative decoding на 3 токена. 20–25 ток/с.
С лимитом 10 минут: пустой diff, ни одного изменения в коде, 0.
По логу, первые 5,5 минут работал субагент-разведчик OpenCode, который осматривал проект. До 8-й минуты основной агент читал все файлы и в рассуждениях правильно назвал главную ошибку. С 8-й минуты он начал одну длинную генерацию, и её оборвал лимит. Ни одной правки.
Тот же прогон без лимита: 987 секунд, 0.92: все тонкие условия, тест-предатель обновлён, свои тесты ловят 7 исправлений из 9. Результат уровня Opus.
MoE на 125B: почти уложилась в десять минут
Ещё одна модель на Spark называется Qwen3.8-Flash-Next. Это abliterated-версия, MoE, но совсем другого размера: 125 миллиардов параметров, из них на токен работают около 6. Квантование NVFP4 вперемешку с MXFP8, speculative decoding на 3 токена, 22–32 ток/с. Лимит у неё был 10 минут, а не 20.
Лимит её оборвал, но на финальной перепроверке: все правки к этому моменту уже были сделаны, а видимые тесты, по её словам, она прогнала в четырёх часовых поясах. Оценивал то, что осталось в репозитории.
0.96. 20 из 20 скрытых тестов, все 7 тонких условий, тест-предатель обновлён, запрещённое не тронуто. Семь своих тестов, которые ловят 8 из 9 неправильных исправлений. Пропустили они только одно: экспорт, который пересчитывает перевод по новому курсу.
Это уровень Opus в чистом окружении. В шесть-семь раз медленнее Opus, и десять минут ушли целиком.
Платить приходится памятью. У драйвера модель занимает около 96 ГиБ, вместе с процессами vLLM около 106, и Spark на ней забит почти целиком:
|
Что |
ГиБ |
|---|---|
|
Веса на GPU |
75,8 |
|
Слой MTP для угадывания токенов |
1,5 |
|
Служебные буферы vLLM |
~5,6 |
|
Пул KV-кеша (fp8) |
13,4 (~899 тысяч токенов) |
|
Всего у драйвера NVIDIA (замер) |
~96,2 |
|
Процессы vLLM на стороне хоста |
~10 |
|
Таблица PLE (26,8 ГиБ на диске, читается через mmap) |
13–16 в страничном кеше, система может это вытеснить |
|
Свободно у системы во время работы |
~16 из 121 |
Прогон один. После того, как Gemma у меня на одних и тех же настройках давала и 0.21, и −0.17, я бы по одному прогону выводов не делал. Но и случайно 20 из 20 с семью тонкими условиями не получаются.
Хуже Flash-Next, зато в лимит: Nemotron 3.5 Super
NVIDIA Nemotron 3.5 Super тоже большая MoE: 120 миллиардов параметров, 12 активных, NVFP4, черновая модель угадывает по 7 токенов вперёд. 24–42 ток/с. У драйвера занимает примерно столько же, ~96 ГиБ.
Лимит те же 10 минут, и в него она уложилась сама: 533 секунды.
0.68. 18 из 20 скрытых тестов, 6 из 7 тонких условий. Перевод, UTC-месяцы и формат CSV исправила. А комиссию в выписке оставила внутри строки перевода, хотя в DECISIONS.md именно это записано отдельным правилом. Тест-предатель не обновила. Свои тесты написала, но они ловят только 4 неправильных исправления из 9.
Итог по Spark такой: из двух больших MoE впереди Flash-Next, она нашла всё. Nemotron слабее, зато уложилась в лимит сама. У драйвера обе занимают около 96 ГиБ.
Дешёвое облако: китайские модели
Между локальным железом и Opus за $0.30 за прогон есть целый рынок моделей подешевле. Я взял через OpenRouter по одной-две свежих модели у восьми крупных китайских вендоров, для сравнения добавил Devstral, и дальше OpenCode и тот же лимит. Это обычные версии, не abliterated.
Китайских вендоров набралось восемь: DeepSeek, Zhipu (GLM), Alibaba (Qwen), Moonshot (Kimi), MiniMax, Tencent, StepFun и Xiaomi. Devstral французская, от Mistral.
|
Модель |
Время |
Оценка |
Скрытые |
Тонкие |
Своими тестами поймал ошибок |
Цена прогона |
|---|---|---|---|---|---|---|
|
DeepSeek V4.1 Flash (снимок 17.10) |
112 с |
1.00 |
20/20 |
7/7 |
9/9 |
$0.008 |
|
Xiaomi MiMo V2.6 Pro |
450 с |
1.00 |
20/20 |
7/7 |
9/9 |
$0.06 |
|
Tencent HY4 Preview |
333 с |
1.00 |
20/20 |
7/7 |
9/9 |
$0.17 |
|
Qwen3.8 Max Prime |
354 с |
1.00 |
20/20 |
7/7 |
9/9 |
$0.73 |
|
GLM-5.3 |
198 с |
0.98 |
20/20 |
7/7 |
9/9 |
$0.10 |
|
Qwen3.8 Max |
671 с |
0.92 |
20/20 |
7/7 |
7/9 |
$0.36 |
|
MiniMax M3.1 Flash |
194 с |
0.90 |
20/20 |
7/7 |
7/9 |
$0.03 |
|
StepFun Step-5 Preview |
164 с |
0.88 |
20/20 |
7/7 |
6/9 |
$0.17 |
|
Kimi K3.1 Pro |
370 с |
0.80 |
20/20 |
7/7 |
4/9 |
$0.27 |
|
Kimi K3 |
202 с |
0.72 |
18/20 |
6/7 |
5/9 |
$0.16 |
|
DeepSeek V4 Pro |
103 с |
0.47 |
15/20 |
4/7 |
3/9 |
$0.11 |
|
Devstral 2512 |
276 с |
0.28 |
14/20 |
3/7 |
0/9 |
$0.16 |
Четыре модели решили задачу как Codex: все скрытые тесты, все тонкие условия, тест-предатель обновлён, а собственные тесты ловят все 9 неправильных исправлений. DeepSeek V4.1 Flash сделала это за две минуты и меньше чем за цент, в 36 раз дешевле Opus, у которого на той же задаче 0.96. Сентябрьская версия той же Flash набирала 0.88: её тесты ловили 6 исправлений из 9. Октябрьский снимок, похоже, закрыл дыры, хотя тот прогон шёл ещё на старой версии OpenCode.
GLM-5.3 рядом: 0.02 она потеряла только на тесте-предателе, который не обновила. Втрое дешевле Opus.
MiniMax M3.1 Flash: 20 из 20, все тонкие условия, 18 своих тестов, которые ловят 7 исправлений из 9. И привычка, как у предыдущей M3: дописала абзац в DECISIONS.md, который трогать нельзя. Три цента за прогон.
Step-5 от StepFun тоже 20 из 20, меньше чем за три минуты, но её тесты не ловят ни подмену конвертера, ни пересчёт по новому курсу.
Kimi разочаровала. K3.1 Pro, флагман за 2 доллара за миллион входных токенов, прошла все скрытые тесты, но написала всего три своих, и те ловят 4 исправления из 9. K3 пропустила комиссию и не обновила тест-предатель. Предыдущая Kimi K2.7 Code (та самая, чью расцензуренную сборку убрали с Hugging Face) набрала те же 0.72. У K2.7 и K3 одни и те же дыры: комиссия и тест-предатель. K3.1 Pro их закрыла, но почти не пишет тестов, а $0.27 за прогон уже почти цена Opus.
С DeepSeek V4 Pro странно: модель крупнее и дороже Flash, а результат вдвое хуже, пропущены часовые пояса и комиссия. Возможно, дело в датах: Pro у DeepSeek августовская, Flash октябрьская.
Devstral пропустила часовые пояса, ISO-время и комиссию и не написала ни одного своего теста.
Облачная Qwen3.8 Max и локальные Qwen на 30–35 миллиардов из одного семейства, а результаты с разных концов таблицы. Max прошла все скрытые тесты и все тонкие условия, обновила тест-предатель; дыры только в её собственных тестах, 7 из 9. Правда, думала она 11 минут, дольше Flash-Next на Spark, и обошлась в $0.36, дороже Opus. В Max 2,4 триллиона параметров, в локальных MoE 35 миллиардов. Max нашла почти всё, а они починили только очевидное. Правда, плотная локальная 27B на Spark набрала те же 0.92, только думала шестнадцать минут.
У Qwen есть ещё Max Prime, ускоренный и более дорогой вариант той же Max. Она решила задачу идеально, 1.00 за шесть минут, но обошлась в $0.73 за прогон, это в 2,4 раза дороже Opus.
Одного прогона на модель мало, разброс мы уже видели. Но разрыв между верхней половиной этой таблицы и быстрыми локальными моделями слишком большой.
Всё вместе
|
Модель |
Где |
Время |
Оценка |
Цена прогона |
|---|---|---|---|---|
|
Codex GPT-6.1-sol |
облако |
101 с |
1.00 |
≈ $0.14 |
|
DeepSeek V4.1 Flash |
OpenRouter |
112 с |
1.00 |
$0.008 |
|
Xiaomi MiMo V2.6 Pro |
OpenRouter |
450 с |
1.00 |
$0.06 |
|
Tencent HY4 Preview |
OpenRouter |
333 с |
1.00 |
$0.17 |
|
Qwen3.8 Max Prime |
OpenRouter |
354 с |
1.00 |
$0.73 |
|
GLM-5.3 |
OpenRouter |
198 с |
0.98 |
$0.10 |
|
Opus 5.5 |
облако |
91 с |
0.96 |
$0.30 |
|
Fable 5.1 |
облако |
288 с |
0.96 |
$1.79 |
|
Qwen3.8-Flash-Next 125B (MoE) |
DGX Spark |
600 с, лимит 10 минут |
0.96 |
локально |
|
Qwen3.8 Max |
OpenRouter |
671 с |
0.92 |
$0.36 |
|
ThinkingCap-Qwen3.8-27B |
DGX Spark |
987 с |
0.92 |
локально |
|
MiniMax M3.1 Flash |
OpenRouter |
194 с |
0.90 |
$0.03 |
|
StepFun Step-5 Preview |
OpenRouter |
164 с |
0.88 |
$0.17 |
|
Kimi K3.1 Pro |
OpenRouter |
370 с |
0.80 |
$0.27 |
|
Kimi K3 |
OpenRouter |
202 с |
0.72 |
$0.16 |
|
Nemotron 3.5 Super 120B (MoE) |
DGX Spark |
533 с |
0.68 |
локально |
|
DeepSeek V4 Pro |
OpenRouter |
103 с |
0.47 |
$0.11 |
|
Qwen3.6-35B-A3B + pi |
RTX 5080 Laptop |
285 с |
0.29–0.31 (2 прогона) |
локально |
|
Devstral 2512 |
OpenRouter |
276 с |
0.28 |
$0.16 |
|
Qwen3.6-35B-A3B |
DGX Spark |
340 с |
0.25 |
локально |
|
Gemma 4 12B |
MacBook M5 |
575 с |
0.21 (за 10 прогонов: от −0.17 до 0.21) |
локально |
|
Qwen3.6-35B-A3B + OpenCode |
RTX 5080 Laptop |
1200 с, лимит |
0.14–0.21 (2 прогона) |
локально |
|
Qwen3 Coder 30B A3B |
MacBook M5 |
344 с |
0.14 (за 6 прогонов: 0–0.14) |
локально |
|
Qwen3.8 27B |
MacBook M5 |
1200 с, лимит |
0 |
локально |
0 значит, что ничего не изменилось, минус значит, что модель сломала больше, чем починила.
Так можно или нельзя?
На этой задаче можно. А на настоящем проекте неизвестно.
Умная локальная модель уже есть, но железо стоит дорого, а скорость медленная. Плотная 27B решила задачу на уровне Opus, только работала шестнадцать минут вместо полутора. MoE на 125B справилась за десять, но заняла почти все 128 ГБ DGX Spark. Маленькие модели, которые помещаются в ноутбук, чинят только очевидное. Скорость упирается в железо, кванты и speculative decoding, а это всё дешевеет. А ум, похоже, уже есть, по крайней мере на 700 строках.
Дешевле и практичнее по-прежнему китайское облако: четыре модели решили задачу как Codex, DeepSeek V4.1 Flash меньше чем за цент.
Локальная модель тоже тупит, и разброс у неё, как видно выше, большой. Но это всегда одна и та же модель, и подменить её без спроса никто не может.
И отдельно про безопасность. Часть локальных моделей в этом тесте, в том числе Qwen3.6 от huihui-ai и Flash-Next, abliterated, то есть с вырезанными отказами. Pi по умолчанию выполняет команды без подтверждения, и в документации прямо написано, что просмотр транскрипта не защищает. Модель, которая не умеет отказываться, и агент, который не спрашивает: на рабочем компьютере такую пару лучше запускать в контейнере.
PS Текст статьи я правил в конце моделью Qwen3.6-35B-A3B. Эта модель отвечает быстро, отлично топит комнату, в основном вредит. Я успел забыть с современным уровнем Opus и Codex, как далеко мы ушли от того, с чего начинали, и что, если хочешь отказаться от них, придется пройти долгий путь. Обложку тоже сделала локальная модель: Qwen-Image 2.1 в 4-битном кванте, в ComfyUI на том же игровом ноутбуке с RTX 5080, около двух минут на картинку.
Спасибо автору канала @sueta_localna за помощь с тестированием.
Теги:
- LLM
- Claude Opus
- Codex
- DGX Spark
- Qwen
- LM Studio
- OpenCode
- AI-агенты
- бенчмарк
Хабы:
- Искусственный интеллект
- Машинное обучение
- Компьютерное железо
- Программирование