Arcovia: инструмент интеллектуальной архитектуры на основе правил для приложений React
Узнайте, как проект хакатона анализирует кодовые базы React и Next.js с использованием детерминистических правил для оценки состояния архитектуры и выявления скрытой технической задолженности.
Задача, которая дала начало этому проекту
Во время недавнего хакатона OpenAI Build Week команда ставила себе простую цель: создать что-то, что разработчики действительно захотели бы использовать каждый день.
К концу первого вечера концепция уже была ясна. Ещё через два дня эта концепция превратилась в рабочий проект с открытым исходным кодом под названием Arcovia.
Это не должно было быть одноразовой демонстрацией ИИ. Целью было решение постоянной проблемы, с которой сталкиваются разработчики при поддержке крупных кодовых баз на React в течение длительного времени.
Пробел в существующих инструментах
Уже существует множество надёжных инструментов для поддержания чистоты кода.
- ESLint выявляет проблематичные паттерны.
- Prettier занимается форматированием.
- SonarQube выявляет проблемы с качеством кода.
- Инструменты на основе ИИ предлагают улучшения на уровне строк.
Однако ни один из этих инструментов не может ответить на более структурные вопросы, такие как:
- Находится ли общая архитектура в хорошем состоянии?
- Какие модули превращаются в узкие места?
- Где накапливается технический долг?
- Какие файлы требуют первоочередной переработки?
- Что на самом деле повлияло на оценку проекта?
Проблемы архитектуры обычно проявляются только во время обсуждений при ревью кода, или, что ещё хуже, когда с работой с кодовой базой уже становится сложно. Не хватало способа оценить состояние архитектуры до того, как она превратится в настоящую проблему.
Познакомьтесь с Arcovia
Arcovia описывается как инструмент Architecture Intelligence, созданный для кодовых баз React и Next.js.
Вместо того чтобы заполнять вас длинным списком несвязанных предупреждений, он оценивает проект в целом и генерирует интерактивный HTML-отчёт.
В этом отчете содержатся:
- Оценка состояния архитектуры
- Граф зависимостей
- Критические зоны архитектуры
- Подробное объяснение способа расчета оценки
- Результаты анализа на основе правил
- Показатель нагрузки на техническое обслуживание
- Практические рекомендации
Arcovia не предназначена для замены инструментов проверки кода. Ее цель — предоставить разработчикам возможность видеть более широкую структурную картину, которую невозможно увидеть с помощью отдельных правил проверки кода.
Как это работает
Инструмент внутри себя выполняет полностью детерминированный процесс анализа.
Project
│
▼
Scanner
│
▼
AST Parser
│
▼
Project Model
│
▼
Dependency Graph
│
▼
Rule Engine
│
▼
Score Engine
│
▼
Interactive HTML Report
В настоящее время анализатор может выявлять ряд структурных проблем. Среди них:
- Чрезмерно централизованные «модули-боги», от которых сильно зависит весь приложение
- Компоненты или файлы с высоким показателем входящих зависимостей
- Компоненты или файлы с высоким показателем исходящих зависимостей
Вместо того чтобы перечислять эти находки по отдельности, Arcovia объединяет их в единую, понятную оценку архитектуры.
Сначала правила, затем ИИ
Одним из решений, которые создатели считают особенно правильными, является исключение ИИ из основной логики анализа.
Сама оценка архитектуры никогда не формируется с помощью языковой модели.
Вместо этого Arcovia работает следующим образом:
- парсит кодбазу с использованием ее AST
- создает графы зависимостей
- проходит результаты через детерминистичные архитектурные правила
- рассчитывает оценки по категориям
Благодаря такой конструкции результаты остаются стабильными и воспроизводимыми.
Более широкая цель заключается в том, чтобы ИИ дополнял процесс, а не заменял сам процесс оценки. Планируемые задачи включают:
- объяснение отдельных результатов простым языком
- предложение способов рефакторинга
- указание на соответствующие учебные ресурсы
- ответы на дополнительные вопросы о отчёте
Детерминистический анализ остаётся единственным источником правды, а ИИ выступает в роли интерпретатора сверху.
Работа с GPT-5.6 и Codex
Этот хакатон также стал первым случаем, когда команда использовала ИИ в качестве настоящего партнёра на протяжении всего процесса разработки, а не рассматривала его как улучшенную функцию автодополнения.
В течение выходных GPT-5.6 и Codex использовались для следующего:
- поиска идей относительно того, какие архитектурные правила стоит включить
- уточнения способа, каким образом модель оценки учитывает различные факторы
- реализации отдельных функций
- улучшения визуального дизайна отчета
- упрощения сложной логики
- проверки разумности принятых решений по реализации
ChatGPT Images также использовался для разработки брендинга Arcovia, включая маскота-сову, логотип и другие материалы для запуска продукта.
Общий процесс работы оказался более естественным, чем ожидалось. Вместо передачи целых функций на полную автоматическую обработку наибольшая польза приносила быстрая взаимная обратная связь, похожая на ситуацию, когда рядом есть второй инженер, который может обсудить варианты дизайна и оценить компромиссы.
Выводы выходных
Сжатие всего процесса разработки в одни выходные позволило сделать несколько полезных выводов.
Архитектура не поддается оценке с помощью простых показателей
Оценка качества кода в изоляции является довольно механической процедурой.
Оценка архитектуры гораздо сложнее, поскольку она зависит от контекста, сопоставимых компромиссов и тщательно настроенных весов различных правил.
Найти правильный баланс между действительно полезными сигналами и шумными ложноположительными результатами остается открытой и постоянной задачей.
Балл без контекста бесполезен
Просто передать кому-то цифру саму по себе не дает ему много информации.
Разработчикам необходимо видеть:
- почему был получен именно такой балл
- какие факторы оказали наибольшее влияние
- какие проблемы имеют наибольший вес
- что следует решить в первую очередь
Вот почему отчет был разработан с акцентом на объяснение оценки, а не как непонятный результат обработки.
Искусственный интеллект ускоряет работу, но не так, как можно было бы ожидать
GPT-5.6 и Codex действительно ускорили процесс создания отчетов.
Однако главный прирост производительности связан не с более быстрым генерированием кода.
Он достигается за счет использования искусственного интеллекта в качестве партнера для размышлений: совместного рассмотрения вариантов дизайна, ставления под сомнение предположений и быстрой проверки различных идей.
Что будет дальше
Эта версия — лишь отправная точка.
Среди функций, которые рассматриваются для будущих версий, есть:
- Интеграция с GitHub Action
- Отслеживание истории отчетов
- Анализ тенденций архитектуры со временем
- Расширение для VS Code
- Сравнение проектов бок о бок
- Панели управления для всей команды
- Консультирование по архитектуре с использованием искусственного интеллекта
Долгосрочная цель — помочь инженерным командам постоянно отслеживать, измерять и совершенствовать архитектуру своего программного обеспечения со временем.
Мы приветствуем отзывы
Arcovia полностью является проектом с открытым исходным кодом, поэтому отзывы от разработчиков, активно создающих приложения на React или Next.js, будут особенно ценными.
Несколько вопросов, которые стоит рассмотреть:
- Кажется ли, что оценка архитектуры действительно отражает что-то значимое?
- Какие ещё архитектурные проблемы следует выявлять?
- Что сделало бы такой отчет действительно полезным в вашей повседневной работе?
Исходный код проекта хранится в его репозитории по адресу github.com/gkhan205/arcovia; пакет можно установить непосредственно с npmjs.com/package/arcovia, а полная документация размещена на сайте arcovia.ghazikhan.in.
Идеи, отзывы и даже критика всегда приветствуются, поскольку практическое использование — это самый эффективный способ постепенного совершенствования Arcovia.
Связанная литература
- 20 продвинутых шаблонов Next.js для приложений App Router высокого уровня — Узнайте о двадцати шаблонах Next.js высокого уровня, охватывающих подходы с серверной стороны, стриминг, кэширование, маршрутизацию и оптимизацию производительности для создания более быстрых и масштабируемых приложений.