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

Представлен SlopCodeBench — эталон для оценки деградации качества кода, создаваемого агентами при итеративной разработке.
Несмотря на итеративный характер разработки программного обеспечения, существующие бенчмарки для оценки кодирующих агентов преимущественно фокусируются на однократном решении задач по заданным спецификациям. В данной работе, представленной под названием ‘SlopCodeBench: Benchmarking How Coding Agents Degrade Over Long-Horizon Iterative Tasks’, авторы вводят новый, не зависящий от языка программирования, бенчмарк, демонстрирующий, что качество кода, генерируемого агентами, последовательно ухудшается (увеличивается избыточность и сложность) при итеративном самостоятельном расширении. Полученные результаты показывают, что стандартные тесты, основанные на прохождении тестов, систематически недооценивают устойчивость кода к изменениям. Недостаточно ли дисциплины в архитектурном проектировании у современных кодирующих агентов для эффективной итеративной разработки программного обеспечения?
Ограничения Однократной Оценки Кода
Традиционные бенчмарки, такие как тесты, оценивающие код за один проход, зачастую не отражают реальной картины разработки программного обеспечения, которая по своей природе является итеративным процессом. В отличие от изолированной оценки, реальные проекты характеризуются постоянным внесением изменений, рефакторингом и адаптацией к новым требованиям. Такой подход к оценке, фокусируясь лишь на мгновенном результате, игнорирует критически важные аспекты, такие как способность кода к эволюции, его читаемость и удобство поддержки в долгосрочной перспективе. Подобные тесты предоставляют лишь «снимок» производительности в конкретный момент времени, упуская из виду, как изменения, внесенные в кодовую базу, могут повлиять на её качество и функциональность в будущем. Оценка, не учитывающая динамику разработки, может привести к неверным выводам о реальной ценности и эффективности генерируемого кода.
Традиционные методы оценки, предоставляющие лишь мгновенный снимок производительности, зачастую упускают из виду ключевой аспект эволюции кода и его долгосрочной поддерживаемости. Оценка программного кода в изоляции от процесса его развития не учитывает кумулятивный эффект изменений, которые неизбежно происходят в реальных проектах. Подобный подход не позволяет выявить потенциальные проблемы, связанные с рефакторингом, расширением функциональности и адаптацией к новым требованиям, что в конечном итоге может негативно сказаться на качестве и надежности программного обеспечения в долгосрочной перспективе. Игнорирование динамики развития кода приводит к неполной и искаженной картине его реальной ценности.
Оценка генерации кода в отрыве от его дальнейшей эволюции дает неполное представление о его качестве. Исследования показывают, что существующие системы, оцениваемые на отдельных задачах, не способны решать проблемы комплексно и последовательно. Наивысший процент успешно решенных задач, достигнутый на промежуточных этапах обучения, составляет всего 17,2%, что подчеркивает существенные ограничения в способности агентов поддерживать и развивать код в долгосрочной перспективе. Это свидетельствует о необходимости разработки более реалистичных методов оценки, учитывающих кумулятивный эффект изменений и необходимость постоянной адаптации к новым требованиям и условиям.

Введение SlopCodeBench: Измерение Эволюции Кода
Представляем SlopCodeBench — эталонный набор тестов (benchmark), разработанный специально для измерения деградации качества кода в процессе его последовательного расширения искусственными агентами. В отличие от традиционных тестов, оценивающих начальное качество, SlopCodeBench фокусируется на динамике ухудшения кода при итеративном добавлении функциональности. Этот подход позволяет количественно оценить способность агентов поддерживать чистоту и структуру кода в долгосрочной перспективе, что критически важно для моделирования реального жизненного цикла разработки программного обеспечения. В основе лежит измерение таких показателей, как увеличение объема кода и ухудшение его архитектурной организации, что дает представление о стабильности и поддерживаемости генерируемого кода.
Бенчмарк SlopCodeBench реализован в рамках парадигмы “черного ящика”, что означает, что взаимодействие с системой происходит исключительно через четко определенную границу API. Это обеспечивает однозначную спецификацию внешнего поведения системы и позволяет оценивать качество кода, не учитывая его внутреннюю реализацию. Использование границы API гарантирует, что любые изменения во внутренней структуре кода не повлияют на его функциональность, если они не нарушают спецификацию API, что делает оценку деградации качества кода более надежной и объективной.
В основе SlopCodeBench лежит методология многоходового кодирования (Multi-Turn Coding), имитирующая реальный процесс разработки программного обеспечения, где агенты последовательно дорабатывают свой код. В ходе экспериментов, проведенных с использованием данной методологии, наблюдается устойчивое увеличение как многословности кода (verbosity), так и структурной эрозии (structural erosion). Средний рост обоих показателей по различным траекториям решения задач составил 80%, что указывает на значительное ухудшение качества кода в процессе его итеративного расширения.

Расшифровка Деградации Кода: Метрики и Проявления
Анализ показывает, что ухудшение качества кода часто проявляется в увеличении многословности (Verbosity) и структурной эрозии (Structural Erosion). Многословность характеризуется избыточностью кода и увеличением его объема без пропорционального увеличения функциональности. Структурная эрозия, в свою очередь, выражается в концентрации сложности в уже сложных функциях, что приводит к снижению читаемости и усложнению поддержки кодовой базы. Данное явление наблюдается как в новых, так и в существующих проектах, и может негативно влиять на производительность разработки и стабильность системы.
Для количественной оценки структурной эрозии кода используются метрики цикломатической сложности и количество строк кода (SLOC). Анализ показал, что код, сгенерированный агентами, демонстрирует разрыв по показателю Verbosity в 0.32, в то время как в репозиториях, поддерживаемых человеком, этот показатель составляет 0.11. Разрыв по показателю Structural Erosion (Эрозии Структуры) для кода, сгенерированного агентами, составляет 0.68, по сравнению с 0.31 для репозиториев, поддерживаемых человеком. Более высокие значения этих метрик указывают на потенциальное снижение поддерживаемости и усложнение процесса внесения изменений в кодовую базу.
Анализ показывает, что наблюдаемые закономерности увеличения многословности и структурной эрозии кода сохраняются даже при использовании различных техник промпт-инжиниринга. В частности, паттерны, характеризующие увеличение сложности и объема кода, остаются актуальными независимо от применения таких подходов, как «Plan-First Prompt» (планирование перед генерацией) и «Anti-Slop Prompt» (предотвращение избыточности). Это указывает на то, что данные проблемы не являются следствием недостаточной направленности агентов, а могут быть присущи процессу генерации кода искусственным интеллектом в целом, требуя дальнейшего исследования и разработки более эффективных методов контроля качества.

Смягчение Последствий и Перспективы Развития
Исследования показали, что, несмотря на возможности управления генерацией кода с помощью промпт-инжиниринга, ключевым фактором обеспечения качества и устойчивости программного обеспечения, созданного агентами, является внедрение принципов надежной разработки, таких как Test-Driven Development (TDD). Вместо простой оптимизации запросов, необходимо интегрировать автоматизированное тестирование на ранних этапах процесса генерации кода. Такой подход позволяет выявлять и устранять ошибки на стадии их появления, существенно снижая риск накопления технического долга и обеспечивая более высокую надежность и поддерживаемость создаваемых программных продуктов. Результаты показывают, что использование TDD в сочетании с агентами, генерирующими код, способно значительно повысить качество программного обеспечения и упростить его дальнейшую модификацию.
Для оценки эффективности предложенных стратегий смягчения последствий, производилось сравнение производительности с репозиториями, поддерживаемыми человеком. Такой подход позволяет установить надежный базовый уровень, демонстрирующий, насколько автоматизированные системы приближаются к качеству кода, обеспечиваемому опытными разработчиками. Анализ расхождений между автоматизированно сгенерированным кодом и кодом, поддерживаемым человеком, выявляет конкретные области, требующие улучшения в алгоритмах генерации и рефакторинга. В частности, сравнение с репозиториями, поддерживаемыми человеком, позволяет количественно оценить, насколько успешно автоматизированные системы справляются с поддержанием читаемости, понятности и общей архитектурной согласованности кода, что критически важно для долгосрочной поддержки и развития программных проектов.
Перспективные исследования должны быть направлены на разработку автоматизированных методов обнаружения и рефакторинга кода, способных снизить степень структурной деградации и повысить долгосрочную поддерживаемость программных систем. Особое внимание следует уделить сложным задачам, таким как организация эффективного поиска по коду. Полученные данные демонстрируют, что средняя стоимость разработки увеличивается в 2,9 раза от начального этапа к последнему, что указывает на возрастающую сложность и необходимость в автоматизированных инструментах для поддержания качества кодовой базы и предотвращения накопления технических долгов.
Без точного определения задачи любое решение — шум. Данное исследование демонстрирует, что даже в процессе итеративного самосовершенствования, алгоритмы, генерируемые большими языковыми моделями, неизбежно подвержены деградации качества. Увеличение сложности и многословности кода, зафиксированное в SlopCodeBench, подтверждает необходимость строгого контроля и формальной верификации. Как однажды заметил Карл Фридрих Гаусс: «Если вы не можете объяснить что-то простыми словами, значит, вы сами этого не понимаете». Этот принцип применителен и к машинному коду: любое решение, не поддающееся чёткому и лаконичному выражению, потенциально содержит ошибки и требует пересмотра.
Куда двигаться дальше?
Представленная работа выявила закономерность, которую стандартные метрики «сдал/не сдал» игнорируют: неизбежное увеличение сложности и многословности кода, генерируемого агентами на основе больших языковых моделей в процессе итеративного саморасширения. Этот феномен, названный деградацией качества кода, представляет собой не просто косметический недостаток, но фундаментальную проблему, связанную с принципами эволюции программного обеспечения. Необходимо признать, что простого достижения функциональности недостаточно; элегантность и лаконичность — неотъемлемые характеристики истинно качественного решения.
Будущие исследования должны сосредоточиться на разработке метрик, способных точно оценивать не только корректность, но и структурную целостность кода. Особое внимание следует уделить созданию алгоритмов, способных автоматически выявлять и устранять признаки деградации, подобно тому, как математик стремится к наиболее изящному доказательству. Иначе говоря, необходимо перейти от оценки «работает ли» к оценке «является ли это оптимальным решением с точки зрения математической чистоты?».
Очевидно, что вопрос заключается не в том, чтобы заставить машины писать код, а в том, чтобы научить их писать хороший код. И в этом смысле, данная работа — лишь первый шаг на пути к созданию действительно интеллектуальных систем разработки программного обеспечения, способных не просто решать задачи, но и делать это с изяществом и эффективностью, достойными восхищения.
Оригинал статьи: https://arxiv.org/pdf/2603.24755.pdf
Связаться с автором: https://www.linkedin.com/in/avetisyan/
Смотрите также:
- S-Chain: Когда «цепочка рассуждений» в медицине ведёт к техдолгу.
- Искусственный интеллект в разговоре: что обсуждают друг с другом AI?
- Квантовые амбиции: Иран вступает в гонку
- Самообучающиеся агенты: новый подход к автономным системам
- Понимание мира в динамике: новая модель для анализа 4D-данных
- Язык тела под присмотром ИИ: архитектура и гарантии
- Квантовый Переворот: От Теории к Реальности
- Генерация без рисков: как избежать нарушения авторских прав при работе с языковыми моделями
- Предвидение действий: Иерархические модели для понимания намерений
- Искусственный интеллект: между экологией и благополучием человека
2026-03-27 06:51