TL;DR. Anthropic в очередной раз заблокировал мой аккаунт, и Claude Code стал недоступен. Я попробовал заменить его локальными Qwen 3.8 Flash Next (1 × DGX Spark) и DeepSeek-V4.1-Flash-1017 (2 × DGX Spark). Замеры TPS/TTFT, рабочий процесс с двумя моделями и вывод — работать можно, но цикл разработки стал занимать значительно больше времени.

Железо для экспериментов выделил работодатель — компания, которая сдаёт DGX Spark в аренду. Статья — личный опыт, не реклама.

Что случилось

Очередная волна блокировок со стороны Anthropic зацепила и меня — как и многих других пользователей из РФ. 1 ноября 2026 года при входе в Claude Code мне предложили пройти верификацию. За пару дней до этого с той же проблемой столкнулись многие мои знакомые разработчики, и всех их в итоге заблокировали после верификации. Я решил не отдавать паспортные данные и сразу перейти к стадии принятия: смириться с потерей и жить дальше.

Морально я давно готовился к этому моменту, но, как показала практика, всё же не был до конца готов. Ощутил пустоту: потерял очень удобный инструмент, к которому привык за восемь месяцев. За это время случилась уже третья блокировка. Возможно, через месяц попробую завести новый аккаунт, но пока подожду: пусть пыль уляжется.

Но, вместе с этим, также получил и некое облегчение — больше не нужно думать, на что потратить неизрасходованные недельные лимиты.

Что я пробую

Ну, а пока нужно пробовать альтернативы. Собрал фидбек от знакомых разработчиков, которых тоже заблокировали за несколько дней до этого. Разумеется, они попробовали те же варианты, о которых думал и я, — Kimi K3.1 и Codex, — но разочаровались в них. Поэтому я выбрал другой путь — локальные китайские модели с открытыми весами.

Я давно интересуюсь локальными LLM (о чём упоминал в прошлой статье), и как раз сложились условия, чтобы проверить их в реальной работе. Организация, в которой я работаю, сдаёт в аренду NVIDIA DGX Spark. В рамках расширения парка компания закупила ещё два DGX Spark, которые мне временно выделили под эксперименты. Ещё один DGX Spark раньше выделили команде — на нём уже больше месяца работает Qwen 3.8 Flash Next. Команда хорошо отзывается об этой модели.

Qwen развёрнут по рецепту Qwen3.8-Flash-Next-Single-DGX-Spark-TensorFold.

В первый день после блокировки решил развернуть DeepSeek-V4.1-Flash-1017 (EXL3) по рецепту для кластера из двух Spark. Поскольку Spark'и выделяют мне временно и, скорее всего, периодически они будут снова попадать в мои руки чистыми, я решил автоматизировать подготовку и деплой с помощью Ansible. Разведку машин, сбор требований, написание плейбуков и их прогон выполнял Qwen 3.8 Flash Next, запущенный на соседнем Spark. Это заняло примерно один рабочий день. Qwen работал долго, зато автономно — мне почти не приходилось вмешиваться. С работой он справился отлично: DeepSeek запустился с первой попытки.

На второй день начал использовать обе модели в реальных задачах: PHP (Symfony), Go и инфраструктура на K8s. В качестве основного harness (обвязки) пока использую минималистичный Pi, установленный в WSL. Пока у меня был доступ к Claude Code, я сделал плагин-обёртку для консольного Pi в PhpStorm. Через этот плагин работать гораздо удобнее, чем в терминале: можно вставлять скриншоты прямо в окно чата и легко поставить курсор в нужное место мышью. Использую расширение pi-subagents, чтобы экономить контекст основной сессии.

Конфигурация

Параметр

Qwen 3.8 Flash Next

DeepSeek-V4.1-Flash-1017

Железо

1 × DGX Spark

2 × DGX Spark

Движок

TensorFold

TensorFold

Квантизация

по рецепту TensorFold

EXL3 (ExLlamaV3)

Контекст

256K

512K

Развёртывание

рецепт TensorFold

рецепт для 2 × Spark + Ansible

Reasoning

xhigh / medium

high / medium

Temperature

0.7 / 0.6

0.7 / 0.6

Бенчмарки

Методика

Написал небольшой бенчмарк, чтобы видеть ключевые показатели, которые модели выдают на этом железе. Делал по 10 замеров на каждом размере контекста: 2K, 8K, 32K, 64K и 128K. Профиль — code, на выходе 256 токенов, temperature 0, thinking off. Перед каждой серией делается один прогревочный запрос — в замеры он не попадает. Промпты в замерах уникальные: в начале стоит случайный salt, поэтому кэш префикса не помогает — это честный холодный prefill. Считал TPS (скорость генерации), TTFT p50 (медиану времени до первого токена) и разброс TTFT min–max. Ещё считал prefill — скорость разбора промпта, то есть prompt_tokens / TTFT p50.

Отдельно про выбросы: в данных есть запросы с TTFT 4,8 с на 2K и 10,2 с на 8K у DeepSeek — похоже на разовые выбросы планировщика или кэша. Поэтому в таблицах я даю не только p50, но и min–max: медиана показывает типичный случай, а разброс — насколько всё может прыгать.

Qwen 3.8 Flash Next

Контекст

prompt tokens (median)

TPS p50 (min–max)

TTFT p50, с

TTFT min–max, с

prefill, ток/с

2K

2125

80.2 (67.0–87.0)

0.94

0.94–0.97

2256

8K

8282

74.0 (60.2–89.4)

3.29

3.28–3.32

2515

32K

32796

74.8 (35.4–89.3)

13.05

13.04–13.43

2514

64K

65598

70.7 (33.7–89.6)

26.90

26.84–27.00

2438

128K

130931

72.6 (58.5–86.5)

56.94

56.73–57.01

2299

DeepSeek-V4.1-Flash-1017

Контекст

prompt tokens (median)

TPS p50 (min–max)

TTFT p50, с

TTFT min–max, с

prefill, ток/с

2K

2113

109.4 (83.2–117.1)

1.25

1.21–4.76

1693

8K

8320

107.7 (82.6–117.8)

3.90

3.87–10.19

2133

32K

32893

105.2 (89.7–118.0)

14.54

14.52–20.88

2262

64K

65607

106.0 (90.3–117.2)

35.51

33.24–35.57

1848

128K

130867

98.9 (72.1–116.4)

73.01

66.77–73.45

1793

Что видно из цифр

Первое: Qwen на одном Spark выдаёт ~70–80 ток/с, DeepSeek на двух — ~99–109 ток/с. Если нормировать на железо, картина меняется: Qwen — 70–80 ток/с на Spark, DeepSeek — 49–55 ток/с на Spark. То есть на двух Spark DeepSeek выдаёт в 1,36–1,5 раза больше TPS, чем Qwen на одном, но не удвоение. Зато DeepSeek субъективно умнее — об этом ниже.

Второе: prefill. Qwen разбирает контекст со скоростью 2,3–2,5 тыс. ток/с, DeepSeek — 1,7–2,3 тыс. ток/с. Поэтому на 128K TTFT у Qwen 57 с, у DeepSeek 73 с, хотя TPS у DeepSeek выше. Для холодного разбора длинного промпта это важнее, чем скорость генерации.

Что это значит на практике: это цифры про холодный разбор полного промпта. По p50: на 32K — 13–21 с, на 64K — 27–36 с, на 128K — 57–73 с. Но в кодинг-агенте контекст растёт постепенно: каждый следующий запрос добавляет несколько токенов, а префикс уже лежит в кэше, поэтому TTFT в обычном цикле может быть сильно ниже этих значений. На больших контекстах кэш как раз и спасает.

Планирование

При планировании использую reasoning xhigh у Qwen и high у DeepSeek, а при имплементации — medium у обеих.

Для крупных задач у меня пока такой метод: даю одну и ту же задачу Qwen и DeepSeek и прошу каждую написать план. Отвечаю на уточняющие вопросы каждой модели, получаю два файла с планами в Markdown. Перечитываю планы и уточняю у «автора» непонятные места. При необходимости вношу правки вручную. Затем прошу каждую модель ознакомиться с планом «коллеги» и определить, какой план полнее, какой взять за основу и что из второго в него добавить. На удивление, в моих задачах модели сходились во мнении: DeepSeek утверждал, что его план полнее, и этот план брали за основу; Qwen тоже признавал, что план DeepSeek лучше, и предлагал взять его за основу. Так было в большинстве случаев — только один раз обе модели выбрали план Qwen.

Затем ещё раз вычитываю итоговый план и перехожу к имплементации.

Имплементация

Простой вариант: поручаю реализацию итогового плана одной DeepSeek. Запускаю модель с уровнем reasoning medium и прошу использовать субагентов для разведки и имплементации каждого шага, а также делать отдельный коммит на каждый шаг. Когда появляется первый коммит, начинаю ревьюить его и записывать замечания в Notepad. Таким образом, к моменту завершения задачи у меня уже есть понимание, что именно написано и что в этом коде мне не нравится.

По завершении имплементации передаю список замечаний и прошу их пофиксить. Затем в свежем контексте запускаю ревью силами DeepSeek. Смотрю, какие замечания справедливы, и прошу пофиксить. Затем — ревью и фиксы с помощью Qwen.

Сложный вариант: использую два отдельных worktree и запускаю имплементацию на обеих моделях параллельно. Потом сравниваю оба решения и выбираю более удачное. Затем — два раунда ревью и фиксов.

Тестирование

Сначала, опираясь на итоговый план и код в ветке, прошу обе модели написать план e2e-тестирования на dev-стенде. Потом «скрещиваю» планы и получаю итоговый.

Затем по очереди прошу каждую модель протестировать функционал по плану и пофиксить найденные баги. Как правило, начинаю с DeepSeek; после его фиксов Qwen серьёзных проблем уже не находит, но мелкие недочёты — часто.

Затем — обязательное ручное e2e-тестирование, деплой на стейдж, тестирование на стейдже и, наконец, релиз.

Итоги первой недели

По предварительным оценкам, за первую неделю цикл разработки стал занимать в 3–4 раза больше времени, чем с Claude Code. Иногда кажется, что писать самому было бы быстрее. Но, думаю, это из-за непривычки и дублирования работы на двух моделях. Скорее всего, в будущем остановлюсь на одной модели. По субъективным ощущениям, DeepSeek процентов на 20 умнее и внимательнее, чем Qwen, но для DeepSeek нужен кластер из двух DGX Spark. Если у вас один Spark — Qwen; если два — DeepSeek.

Плюсы

Минусы

Приватность и офлайн: код не уходит в облако

Цикл разработки в 3–4 раза дольше

Нет лимитов, блокировок и верификации

Требуется дорогое железо

Не кодом единым...

На выходных дал DeepSeek задачу настроить запуск Hogwarts Legacy в VR. На этот раз я использовал DeepSeek Harness с уровнем reasoning medium. DeepSeek разведал систему, выяснил, что нужен универсальный инжектор, установил его, скачал профили настроек, написал скрипт для запуска игры в VR и составил подробную инструкцию. На всё ушло около часа.

С первого раза VR не запустился: были проблемы с VR-инжектором. Описал проблему и попросил DeepSeek её диагностировать. Примерно через полчаса DeepSeek разобрался с проблемой, сам запустил игру и инжектор — в этот раз всё взлетело.

Уверен, что Claude Opus 5.5 справился бы с задачей в разы быстрее, но приходится пользоваться тем, что есть. Да, китайским моделям ещё далеко до Opus 5.5, но их уровня уже вполне достаточно для многих задач.

Что дальше

На следующей неделе планирую испытать GLM 5.3 Flash в задачах на кластере из двух Spark. Об этом обязательно напишу.

Ссылки

Комментарии (4)


  1. Ka463
    10.11.2026 19:55

    Уверен, что Claude Opus 5.5 справился бы с задачей в разы быстрее, но приходится пользоваться тем, что есть.

    Тоесть вы хотите сказать что Claude генерирует 70-100т.с ?
    Может быть прежде всего в этом одна из причин почему ваши задачи решаются медленнее ?
    Попробуйте Qwen пихнуть на 2-3 ваши DGX Spark и потом уже сравнить скорость решения задачи.


    1. PHP-Programmist Автор
      10.11.2026 19:55

      Думаю, что с low effort около 90 TPS как раз таки и выдаёт, а на medium и high - порядка 80. Т.е. по скорости декода вполне сопоставимо с Deep Seek на двух Spark.

      Почему надо больше времени на задачу? При работе с Opus в последнее время не приходилось много времени тратить на написание плана и тщательно вычитывать его. Достаточно было пройти grilling сессию, утвердить спеку и вперёд.

      А вот Qwen'у и Deep seek пока у меня доверия нет - часто приходится по нескольку раз вычитывать план, т.к. они могут что-то вписать лишнее или даже вредное, неправильно меня поняв. Плюс время на кросс проверку другой нейронкой. Также у меня много замечаний по коду.

      Но я верю, что с выходом новых версий локальных LLM ситуация будет улучшаться. До выхода Qwen 3.8 27B я даже не рассматривал в серьёз возмость использовать в рабочих задачах локальные модели. А 3 месяца спустя делаю первые шаги в этом направлении.

      Обязательно попробую Qwen на паре спарков. Спасибо за идею


  1. sergeym69
    10.11.2026 19:55

    deepseek у вас сильно покоцаный, это же практически Q2_K модель, поэтому он и не намного лучше Qwen. Полный DeepSeek уровень GPT-Sol6 High, поэтому говорить что Codex это плохо, как минимум смишно.


  1. dikiyplayerpig
    10.11.2026 19:55

    А чем именно не устроил gpt и kimi? Мне кажется они не должны быть хуже квантованного дипсика