В README react-doctor всего одна фраза, но её стоит перечитывать снова и снова:
"Your agent writes bad React. This catches it."
Ваш агент написал плохой код на React. Этот инструмент призван его отловить.
Без прикрас, без лишних слов. Эйден Бай (Aiden Bai), автор million.js, как всегда, предельно прямолинеен.
2 430 звёзд за неделю, общее число превысило 10 000. Для GitHub Trending это не самые взрывные цифры, но учитывая крайне узкую специализацию инструмента — проверка исключительно качества кода на React — такие темпы роста указывают на формирование реального спроса.
Что именно «плохого» в коде, написанном ИИ?
Вам может показаться, что это преувеличение. Современные агенты для написания кода — Claude Code, Cursor, Windsurf — уже обладают впечатляющими навыками. Их баллы в SWE-bench растут, а решаемые задачи становятся всё сложнее.
Однако «способность выполнить задачу» и «написание хорошего кода» — это две разные вещи.
Проблемы, которые отлавливает react-doctor, включают:
- Избыточные re-render (убийца производительности)
- Нарушение правил использования React Hooks
- Избыточно сложная вложенность компонентов
- Отсутствие необходимых границ ошибок (error boundaries)
- Антипаттерны управления состоянием
Эти ошибки допускают и разработчики-люди. Но ИИ-агенты совершают их гораздо чаще, и причина проста: у агентов нет «вкуса к коду».
Агент генерирует код на основе паттернов из обучающих данных. Он знает, что «такой подход реализует нужный функционал», но не понимает, что «через три месяца этот подход заставит вас страдать».
Что такое «вкус к коду»? Это интуитивное понимание поддерживаемости, читаемости и масштабируемости. Оно формируется на собственных ошибках, в ходе code review, где старшие коллеги критикуют ваш подход, и в моменты озарения во время ночной отладки.
У агента нет такого опыта. У него есть только распределение вероятностей.
Но react-doctor лечит лишь симптомы
Позволю себе высказать непопулярное мнение:
Появление react-doctor свидетельствует о том, что наши ожидания от ИИ-агентов для написания кода ошибочны.
Мы ожидаем, что агент будет писать код на уровне лучших человеческих разработчиков. Однако метод обучения агента ограничивает его «средним уровнем хорошего кода из обучающей выборки» — а эта выборка полна плохого кода.
Сколько проектов на GitHub имеют выстроенный процесс code review? Сколько проектов содержат чёткие описания в pull request? Сколько проектов обладают настолько высоким покрытием тестами, что рефакторинг можно проводить без страха?
Не так уж много.
Поэтому «нормальный код», которому обучается агент, изначально содержит массу антипаттернов. Он не «становится хуже», он просто «воспроизводит реальное состояние обучающих данных».
Подход react-doctor верен — добавление слоя автоматической проверки между выводом агента и визуальным ревью. Но это лишь борьба с симптомами, а не с причиной.
Каково же истинное решение?
Я вижу здесь три уровня:
Первый уровень (доступен уже сейчас): линтеры и инструменты вроде react-doctor. Автоматический запуск проверки качества перед коммитом кода агентом для отлова базовых ошибок. Это уже стало best practice.
Второй уровень (уже в процессе): формализация инженерных практик в виде skills. Подобно тому, что делает mattpocock/skills — перевод правил оформления кода, стандартов ревью и лучших практик проекта в формат skills, понятных агенту. Агент ещё до написания кода «знает», как должен выглядеть качественный код в этом проекте.
Третий уровень (пока никем не реализован): обучение агента «вкусу к коду». Это не решается добавлением пары правил. Агент должен понимать контекст кода, предпочтения команды в стиле разработки и реальные требования бизнес-сценариев к качеству кода.
Третий уровень самый сложный, но и самый ценный. Потому что в случае успеха речь пойдёт не просто об «отлове ошибок», а о «написании хорошего кода».
Моя позиция
Появление react-doctor — признак зрелости экосистемы ИИ-разработки.
Когда в цепочке инструментов появляются решения, «специализирующиеся на проверке качества кода, написанного ИИ», это означает, что ИИ-разработка перешла из стадии «новинки» в стадию «повседневной практики».
Я не считаю это тревожным сигналом. Напротив, это говорит о том, что сообщество разработчиков начало серьёзно относиться к качеству кода, генерируемого ИИ — не впадая в панику «ИИ заменит программистов», а прагматично решая задачу «код от ИИ недостаточно хорош, как сделать его лучше».
Именно так и должна развиваться здоровая экосистема.
Если вы разрабатываете на React, рекомендую уже сейчас добавить react-doctor в ваш CI-пайплайн. Не потому что ваш агент плох, а потому что любой инструмент автоматической генерации кода должен сопровождаться автоматическим инструментом проверки качества.
Это тот же принцип, что и запуск линтера для кода, написанного человеком. Единственное отличие в том, что раньше линтер был опциональным — ведь код человека хотя бы кто-то ревьюил. Если код агента никто не ревьюит, линтер становится единственной линией обороны.
Основные источники: