Автор: Денис Аветисян
Новое исследование оценивает способность больших языковых моделей поддерживать качество кодовой базы и избегать регрессий в процессе непрерывной интеграции.

Представлен SWE-CI, новый бенчмарк для оценки возможностей ИИ в области поддержки и эволюции программного кода, выявляющий проблемы с сохранением качества и предотвращением регрессий.
Несмотря на успехи больших языковых моделей (LLM) в автоматизации задач разработки программного обеспечения, их способность поддерживать и развивать существующие кодовые базы остается недостаточно изученной. В данной работе представлена новая методика оценки, ‘SWE-CI: Evaluating Agent Capabilities in Maintaining Codebases via Continuous Integration’, основанная на принципах непрерывной интеграции и долгосрочной эволюции кода. Полученные результаты показывают, что, хотя LLM и демонстрируют прогресс, поддержание качества кода и предотвращение регрессий в процессе длительной разработки по-прежнему представляют значительную сложность. Каковы перспективы создания LLM, способных эффективно решать задачи сопровождения и развития сложных программных систем на протяжении всего жизненного цикла?
От простоты к сложности: вызовы долгосрочного сопровождения кода
Традиционные эталоны для оценки синтеза кода, такие как HumanEval и MBPP, зачастую концентрируются на создании решений для отдельных файлов в рамках единичной задачи, что существенно отличается от реальных условий разработки программного обеспечения. В практической разработке, код постоянно эволюционирует, подвергается изменениям и расширениям на протяжении всего жизненного цикла проекта. Эти эталоны не учитывают необходимость поддержки, рефакторинга и адаптации кода к новым требованиям, игнорируя сложный процесс, связанный с поддержанием больших, долгосрочных кодовых баз. В результате, оценка производительности моделей синтеза кода, основанная на таких эталонах, может не отражать их реальную способность успешно функционировать в динамичной среде разработки и поддерживать качество кода с течением времени.
Законы Лемана, сформулированные в 1970-х годах, описывают неизбежную деградацию качества программного обеспечения в процессе его поддержки и эволюции. Эти законы, в частности, утверждают, что сложность системы со временем увеличивается, а надежность — снижается, если не предпринимаются целенаправленные усилия по рефакторингу и улучшению кода. Существующие эталоны оценки производительности моделей генерации кода, такие как HumanEval и MBPP, фокусируются на создании отдельных фрагментов кода, не учитывая долгосрочные последствия изменений и отсутствие систематической поддержки. В результате, эти эталоны не отражают реальную сложность поддержания больших, развивающихся кодовых баз, где изменения в одной части системы могут непреднамеренно привести к ухудшению качества других частей, что и описывают законы Лемана.
Существующие методы оценки производительности систем генерации кода, как правило, основываются на анализе отдельных “снимков” программного обеспечения — то есть, оценивается корректность решения конкретной задачи в изолированной среде. Однако, реальные программные комплексы постоянно эволюционируют, подвергаясь многочисленным изменениям и доработкам на протяжении всего жизненного цикла. Такой подход не учитывает сложность и итеративность реальных кодовых баз, где исправление ошибок в одной части может повлиять на работу других модулей. Игнорирование динамики развития программного обеспечения приводит к завышенным оценкам эффективности и не позволяет адекватно оценить способность системы поддерживать и улучшать существующий код в долгосрочной перспективе. Необходим переход к более реалистичным методам оценки, учитывающим историю изменений и взаимодействие различных компонентов программного обеспечения.

SWE-CI: новый эталон для развивающихся кодовых баз
SWE-CI представляет собой новый эталон для оценки способности агентов поддерживать кодовую базу в процессе долгосрочной эволюции. В отличие от существующих бенчмарков, ориентированных на синтез отдельных файлов, SWE-CI моделирует сценарии реальной разработки, где требуется модификация и рефакторинг существующего кода. Это позволяет оценить не только способность агентов генерировать новый код, но и их умение адаптироваться к изменениям, поддерживать работоспособность проекта в течение длительного времени и избегать регрессий при внесении изменений. Акцент сделан на оценке способности агентов поддерживать и развивать существующий проект, а не просто создавать отдельные фрагменты кода.
Бенчмарк SWE-CI использует протокол «Архитектор-Программист» для эмуляции цикла непрерывной интеграции (CI). В рамках этого протокола, «Архитектор» формулирует высокоуровневые требования к функциональности, а «Программист» реализует эти требования в коде. После каждой итерации код тестируется, и результаты используются для уточнения требований и внесения изменений в код. Такой подход позволяет оценивать способность агентов к итеративной доработке и адаптации кода в процессе его эволюции, имитируя реальный процесс разработки программного обеспечения и обеспечивая возможность оценки способности к рефакторингу и поддержанию работоспособности кода с течением времени.
SWE-CI использует Docker для создания изолированных сред выполнения, что обеспечивает воспроизводимость и согласованность тестирования на протяжении всего процесса эволюции кодовой базы. Каждый этап эволюции, включающий внесение изменений и проверку, выполняется в отдельном Docker-контейнере. Это позволяет избежать конфликтов зависимостей, гарантирует, что тесты выполняются в идентичной среде независимо от хост-системы, и упрощает отладку, поскольку окружение можно легко воссоздать. Использование Docker также обеспечивает переносимость тестов и возможность масштабирования, что критически важно для оценки агентов, работающих с долгосрочной эволюцией кода.

Количественная оценка эволюции кода: метрики долгосрочной стабильности
Метрика EvoScore, представленная в рамках SWE-CI, предназначена для количественной оценки сохранения функциональной корректности кода при последующих модификациях. В отличие от традиционных метрик, EvoScore напрямую измеряет способность кода адаптироваться к изменениям без внесения регрессий. Это достигается путем оценки результатов тестов после внесения изменений в код, что позволяет определить, насколько легко поддерживать и расширять кодовую базу. Использование EvoScore направлено на стимулирование разработки кода, который обладает высокой устойчивостью к изменениям и способствует снижению затрат на сопровождение программного обеспечения.
Бенчмарк SWE-CI отслеживает Нормализованное Изменение (Normalized Change) — метрику, представляющую собой совокупность всех внесенных изменений в кодовую базу относительно исходного состояния. Эта метрика позволяет комплексно оценить состояние кодовой базы во времени, фиксируя как улучшения, так и регрессии. Она рассчитывается как разница между функциональностью после модификации и исходной, нормированная на размер внесенных изменений. Положительное значение указывает на улучшение функциональности, отрицательное — на регрессию, а нулевое — на отсутствие изменений. Отслеживание Нормализованного Изменения позволяет оценить способность модели поддерживать и улучшать существующий код, а не только создавать новый.
Показатель отсутствия регрессий (Zero-Regression Rate) является ключевым индикатором стабильности модели при внесении изменений в кодовую базу. Результаты оценки моделей на базе SWE-CI демонстрируют, что большинство из них достигают значения этого показателя менее 0.5. Это означает, что при модификации кода, менее чем в половине случаев возникают регрессии — ухудшения функциональности по сравнению с исходным состоянием. Низкий показатель регрессий свидетельствует о способности модели генерировать код, который легко поддерживать и модифицировать без внесения нежелательных побочных эффектов.
Тесты в наборе данных SWE-CI моделируют реальные сценарии поддержки программного обеспечения, характеризуясь продолжительностью в среднем 233 дня и включая последовательность из 71 коммита. Данная продолжительность и количество коммитов отражают типичный жизненный цикл внесения изменений и исправлений в существующий кодовый проект. Это позволяет более адекватно оценить способность моделей к долгосрочному сопровождению кода, в отличие от оценок, основанных на коротких, изолированных изменениях.
Каждая пара “база/оракул” в SWE-CI предполагает модификацию как минимум 500 строк кода (без учета тестовых файлов). Этот объем изменений гарантирует, что оцениваемые модели подвергаются воздействию существенных и значимых изменений в кодовой базе, а не тривиальных правок. Такой подход позволяет более точно оценить способность моделей адаптироваться к крупномасштабным изменениям, характерным для реальных сценариев сопровождения программного обеспечения, и исключает влияние незначительных модификаций на результаты бенчмарка.

Расширение оценки: от отдельных файлов к сложным взаимодействиям
В дополнение к существующей системе оценки SWE-CI, разработанная платформа включает в себя эталонные тесты, такие как SWE-Bench, для анализа процессов от постановки задачи до создания pull request. Такой подход позволяет оценить способность агентов воспроизводить типичные сценарии работы с репозиториями, имитируя реальные рабочие процессы разработки. SWE-Bench, в частности, позволяет проверить, насколько эффективно система может принимать запросы на исправление ошибок, генерировать соответствующие изменения в коде и предлагать их в виде pull request, что является ключевым аспектом современной разработки программного обеспечения и командной работы над проектами.
Для оценки возможностей агентов в работе с многошаговым использованием инструментов и взаимодействием с терминалом, в рамках исследования интегрированы эталонные тесты Tau-Bench и Terminal-Bench. Эти тесты моделируют сложные сценарии разработки, требующие последовательного применения различных утилит и анализа результатов их выполнения. Способность агента эффективно планировать и осуществлять цепочку действий, учитывая результаты каждого шага, является ключевым фактором успеха в решении реальных задач программирования. Оценка производительности в подобных условиях позволяет выявить сильные и слабые стороны разрабатываемых систем и определить направления для дальнейшего улучшения.
Метод эволюционной оценки расширяет возможности SWE-CI, динамически генерируя требования непосредственно из структуры кода. Вместо использования заранее определенных задач, система анализирует существующую кодовую базу и создает запросы на изменения, имитирующие реальный процесс поддержки и развития программного обеспечения. Такой подход позволяет создать более сложную и реалистичную среду тестирования, поскольку требования возникают органично из самого проекта, а не задаются искусственно. Это значительно повышает валидность оценки, поскольку позволяет проверить способность агентов адаптироваться к изменяющимся условиям и решать непредсказуемые задачи, характерные для реальной разработки.

Исследование, представленное в статье, акцентирует внимание на сложности поддержания качества кодовой базы в процессе её эволюции. Подобно хирургу, удаляющему избыточную ткань, авторы стремятся к выявлению и устранению регрессий, возникающих при внесении изменений. В контексте этого подхода, уместно вспомнить слова Пала Эрдеша: «Работа — это молитва». Подобно тому, как молитва требует постоянных усилий и самоотдачи, так и поддержание чистоты и надёжности кода требует непрерывной работы над устранением технического долга и предотвращением ошибок. Акцент на долгосрочной устойчивости кодовой базы, особенно в условиях непрерывной интеграции, подчеркивает необходимость систематического и кропотливого подхода к разработке.
Что дальше?
Представленная работа, как и любая попытка измерить сложное, лишь обнажает границы нашего понимания. SWE-CI, безусловно, полезный инструмент, но он измеряет лишь то, что можно измерить. Качество кода — понятие скользкое, а технический долг — метафора, а не строгий параметр. В конечном счете, LLM показывают улучшения, но склонность к регрессиям, к незаметному ухудшению, остаётся. Это не столько технологическая проблема, сколько философская: совершенствование алгоритма не гарантирует совершенства результата.
Следующим шагом представляется не столько увеличение масштаба моделей, сколько углубление понимания принципов устойчивости кода. Необходимо исследовать, как LLM могут не просто исправлять ошибки, но и предвидеть их, как они могут активно участвовать в рефакторинге, а не только реагировать на него. Оценивать стоит не только функциональность, но и элегантность решения, его способность к адаптации и расширению. Ясность — это минимальная форма любви, и это применимо и к коду.
В конечном счёте, стремление к автоматизированному сопровождению кода — это лишь зеркальное отражение более глубокого вопроса: что мы ценим в программном обеспечении? Не скорость разработки, не количество строк кода, а его способность служить человеку, не усложнять, а упрощать. И в этом смысле, задача не в том, чтобы создать идеальный инструмент, а в том, чтобы создать инструмент, который напоминает о необходимости простоты.
Оригинал статьи: https://arxiv.org/pdf/2603.03823.pdf
Связаться с автором: https://www.linkedin.com/in/avetisyan/
Смотрите также:
- Квантовый Борьба: Китай и США на Передовой
- Квантовые симуляторы: проверка на прочность
- Квантовые нейросети на службе нефтегазовых месторождений
- Искусственный интеллект заимствует мудрость у природы: новые горизонты эффективности
- Интеллектуальная маршрутизация в коллаборации языковых моделей
2026-03-05 14:41