MiMo-V2.5 от Xiaomi : Отдал рефакторинг четырёх форм модели за 20 центов — рассказываю, что вышло
Обычно модели тестируют так: три задачки, смотрим, кто умнее. Мне интереснее другое — сколько стоит рутина. Не «напиши игру», а грязная работа, которой в реальном проекте большая часть: разгрести код, который уже написан, уже работает, но смотреть на него больно.
Взял MiMo-V2.5 от Xiaomi на OpenRouter. С карточки модели: 0,14 доллара за миллион входных токенов, 0,28 — за выходных, контекст на миллион токенов, веса открыты. Вышла в конце апреля 2026. Заявка авторов — агентная работа уровня «про»-моделей примерно за половину цены инференса.
Связка скучная: Cline в VS Code, провайдер OpenRouter. Никаких хитрых промптов.
Спойлер по счёту: 20 центов за всё. Не бесплатно — но за доллар таких рефакторингов выходит пять.
Задача
Проект на Next.js, четыре формы авторизации: вход, регистрация, восстановление пароля, установка нового. Каждая — монолит на 130–240 строк. Одинаковые поля скопированы из формы в форму с мелкими отличиями.
Ирония в том, что этот интерфейс я не писал руками — его сгенерировала топовая модель. Работает, но код разъехался. То есть задача звучит красиво: дешёвая модель наводит порядок после дорогой.
Сначала не написала ни строчки кода
Первым делом модель прочитала семнадцать файлов — не только формы, но и общие поля ввода, хелперы валидации, слой API, работу с сессией, роутинг. И выдала не патч, а карту дублирования с координатами.
Выглядело так: берётся блок «Повторите пароль», указываются номера строк в двух формах, дальше вердикт — код почти посимвольно идентичный, совпадают идентификатор, подпись, тип, логика сообщения. Единственное расхождение — в регистрации у поля более плотные отступы.
Вот это «единственное расхождение» и подкупило. Не «здесь похожий код», а конкретика: что совпадает, что расходится, на сколько строк. Всего нашлось шесть повторяющихся паттернов.
Отдельно ценно, что модель не стала абстрагировать всё подряд. Про обработчик отправки формы вердикт был: остаётся как есть, три строки, хука не оправдывает. А про форму входа — что рефакторинг там минимальный, выигрыш четыре строки, трогать не рекомендуется.
Модель, которая сама говорит «здесь трогать не надо», полезнее модели, которая радостно перепишет весь проект.
Реакция на правку плана
План был хороший, но не хватило дробления — предлагалось всего две новые сущности. Я написал одну фразу: кода в страницах много, хочу разбиения помельче.
Модель пересобрала план целиком — с двух сущностей до пяти, с описанием параметров каждой. Не спорила, не доказывала, что первый вариант лучше, ничего из исходных требований не потеряла. Именно здесь дешёвые модели обычно и сыпятся.
Что появилось в проекте
Пять сущностей: хук с логикой пароля и подтверждения, поле email с валидацией, поле пароля с индикатором надёжности, поле подтверждения и ссылка-переключатель между формами.
Граница проведена правильно: логика в хуке, разметка в компонентах. Хук отдаёт наружу уже готовый флаг «всё валидно» — из-за этого в формах исчезла лесенка из пяти проверок для кнопки отправки, стало одно короткое условие. Блок подтверждения пароля на девятнадцать строк разметки схлопнулся в один компонент.
И главное — формы не усреднились.
Это была основная тревога: когда выносишь общий компонент, легко потерять мелкие отличия. Модель вынесла каждое в необязательный параметр — плотные отступы для регистрации, автофокус для страницы сброса, разные тексты подсказок под пустым полем, хинт с требованиями к паролю, подпись под индикатором надёжности. Страницы выглядят и ведут себя ровно как раньше, но собираются из кубиков. Стили не тронуты вообще.
Проверила себя сама
Закончив, модель без напоминания прогнала проверку типов по проекту. Вылезла ошибка — но в другом модуле, с формами не связанном. И модель это корректно квалифицировала: сообщила, что ошибка была в проекте до её работы, с указанием файла и строки. Проверил — так и есть.
Умение не приписывать себе чужой баг и не броситься чинить полпроекта — недооценённое качество.
Бонус: восемь наблюдений по пути
Вместе с планом модель приложила восемь замечаний по коду, найденных попутно, и сразу пометила: сейчас не чинить, только зафиксировать.
Что пришлось поправить руками
Чтобы не выглядело рекламой. Две вещи модель уронила.
Первая — функциональная регрессия: при переносе поля email в отдельный компонент из условия активации кнопки выпала проверка на валидность адреса, и кнопку регистрации стало можно нажать с некорректной почтой. Проверка типов такое не ловит в принципе.
Вторая мельче: в компоненте поля пароля подпись зашита жёстко как «Пароль», хотя на странице установки нового должно быть «Новый пароль».
Цифры
По прайсу 20 центов — это порядка миллиона входных токенов, и так и должно быть: агентный цикл переотправляет накопленный контекст на каждом шаге, то есть платишь за все итерации сразу. Миллионное окно тут скорее экономит: проект влезает целиком, модель не выпрашивает файлы по одному. Плюс кеширование промпта на повторяющемся контексте, иначе счёт вышел бы больше.
Вывод
Ценность оказалась не в скорости печати кода — печатать умеют все. Ценность в режиме плана: сначала карта дублей с номерами строк, потом обсуждение, потом правки. Одна фраза на этапе плана поменяла архитектуру решения — пять секунд против получаса разгребания уже написанного.
И тут неважно, обгоняет MiMo-V2.5 топовые модели или нет. Важно соотношение: неприятная, но обязательная задача на реальном коде закрыта за двадцать центов — с внятным планом, аккуратными границами и самопроверкой. С одной регрессией, которую ловит первый же ручной прогон формы.
Дорогие модели стоит беречь для задач, где нужна голова. А разгребание за ними самими стоит двадцать центов — одной чашки кофе хватит заходов на пятнадцать.
Больше про LLM и AI — в нашем Telegram-канале (@devgeek_sh). Разбираем новые модели, делимся опытом и полезными находками.