Companies are looking to harness agentic code generators to get software built faster. But for every story of increased developer productivity or greater code base understanding, there’s a story about creating more bugs and the increased likelihood of production outages.
Here at CodeRabbit мы хотели знать, реальны ли проблемы, с которыми сталкиваются люди, и если да, то насколько они серьезны. Мы видели данные и исследования по этому самому вопросу, но многие из них представляют собой просто качественные опросы, которые разделяют мнения о кодировании вибрации. Он показывает нам только идею, а не путь к решению.
Мы хотели чего-то более практичного с реальными данными. Какие конкретные типы ошибок с большей вероятностью будут создаваться ИИ? Появляются ли определенные категории ошибок чаще? Насколько они серьезны? Какое влияние это оказывает на производственную среду?
В этой статье мы поговорим о проведенном нами исследовании, о том, что оно значит для вас как разработчика и как можно избежать ошибок, которые допускают LLM.
Чтобы найти ответы на наши вопросы, мы просканировали 470 репозиториев GitHub с открытым доступом и создали наш[–>State of AI vs. Human Code Generation Report. Мы искали сигналы о том, что запросы на включение были созданы совместно с искусственным интеллектом или сгенерированы человеком, например, сообщения о фиксации или агентские файлы IDE.
Мы обнаружили, что есть ошибки, которые чаще создают люди, а есть и такие, которые чаще создает ИИ. Например, люди делают больше опечаток и кода, который сложно тестировать, чем ИИ. Но в целом ИИ создал в 1,7 раза больше ошибок, чем люди. Инструменты генерации кода обещают скорость, но терпят неудачу из-за допущенных ошибок. Это не просто мелкие ошибки: ИИ вызывал в 1,3-1,7 раза более серьезные и крупные проблемы.
Самая большая проблема заключается в логике и правильности. В запросах, созданных ИИ, таких ошибок было на 75% больше, что составило 194 инцидента на сто запросов. Сюда входят логические ошибки, ошибки зависимостей и конфигурации, а также ошибки в потоке управления. Ошибки такого типа легче всего не заметить при проверке кода, поскольку они могут выглядеть вполне разумным кодом, пока вы не изучите его, чтобы понять.
Проблемы с логикой и корректностью могут вызвать серьезные проблемы в производстве: всевозможные перебои, о которых вам придется сообщать акционерам. мы нашли это[–>2025 had a higher level of outages and other incidents помимо того, что мы слышали в новостях. Хотя мы не можем однозначно связать все эти изменения с ИИ, это был год, когда кодирование ИИ стало мейнстримом.
Мы также обнаружили несколько других проблем, которые, хотя и не могут отключить ваше приложение, но вызывают беспокойство:
- вопросы безопасности: ИИ содержал такие ошибки, как неправильная обработка паролей и небезопасные ссылки на объекты, в 1,5-2 раза чаще, чем программисты-люди.
- проблемы с производительностью: Мы не видели многих из них, но те, которые мы нашли, были в значительной степени созданы искусственным интеллектом. Код AI имел примерно в 8 раз больше экстремальных операций ввода-вывода.
- корректность параллелизма и зависимостей: ИИ в два раза чаще совершал эти ошибки, включая неправильное использование параллельных примитивов, неправильный порядок и ошибки потока зависимостей.
- обработка ошибок: Сгенерированные ИИ запросы почти в два раза чаще проверялись на наличие ошибок и исключений, таких как нулевые указатели, ранние возвраты и методы упреждающего защитного кодирования.
Самым большим различием между ИИ и человеческим кодом была читаемость: у ИИ было в три раза больше проблем с читабельностью, чем у человеческого кода. Было в 2,66 раза больше проблем с форматированием и в 2 раза больше несоответствий в именах. Хотя это не те проблемы, которые отключают ваше программное обеспечение, они затрудняют отладку проблем, которые могут.
Большие ошибки происходят в основном потому, что эти агенты кодирования обучаются в первую очередь прогнозированию следующего токена на основе огромных объемов обучающих данных. Эти обучающие данные включают большое количество репозиториев кода с открытым исходным кодом или иным образом незащищенных, но не включают вашу кодовую базу. То есть любому LLM, который вы используете, не хватает контекста, необходимого для написания правильного кода.
Когда вы пытаетесь предоставить этот контекст в виде системного приглашения или файла «agent.md», это может сработать в зависимости от используемого вами LLM или агентного оборудования. Но в конечном итоге инструменты ИИ должны будут сузить контекст или использовать стратегию скользящего окна для эффективного управления им. Однако в конечном итоге вы отказываетесь от информации. Если у вас есть список дел, в котором агент должен создать код, просмотреть его и отметить по завершении, в конечном итоге он или она забудет. По пути оно становится все более забывчивым и доходит до того, что вам приходится остановить его и начать заново.
Времена завершения кода, вырезания и вставки из окон чата уже давно прошли. Сейчас люди используют агенты ИИ и запускают их автономно, иногда в течение очень длительных периодов времени. Любые ошибки – галлюцинации, ошибки в контексте, даже незначительные оплошности – влияют на время работы агента. В конечном итоге эти ошибки записываются в код.
Инструменты агентного кодирования позволяют невероятно легко генерировать код. В какой-то степени забавно иметь возможность волшебным образом записать 500 строк кода за минуту. У вас работает пять окон, одновременно выполняются пять разных задач. Не знаю, что кто-то из них делает, но они все делают это прямо сейчас.
Однако в конечном итоге кто-то должен будет гарантировать, что код работает, чтобы на рабочие серверы попадал только качественный код.
Есть шутка: если хочешь много комментариев, создай пиар из 10 строк кода. Если вы хотите, чтобы его одобрили немедленно, напишите 500 строк кода. это[–>the law of triviality: Маленькие изменения привлекают больше внимания, чем большие. С генератором агентного кода становится намного проще выполнять эти очень большие коммиты с большими запасами.
Массивные обязательства в сочетании с трудночитаемым кодом позволяют очень легко допустить серьезные логические ошибки и ошибки в правильности. Вот здесь и возникает проблема читаемости. ИИ создает больше окружающего кода и более короткие встроенные комментарии. Еще многое предстоит прочитать. Если кто-то (желательно несколько человек) не очищает каждую строчку кода в этих коммитах, вы создаете технический долг в масштабах, которые ранее невозможно было себе представить.
Подумайте о базе кода на протяжении всего существования компании. У компаний на ранней стадии развития есть менталитет, позволяющий быстро продвигать свое программное обеспечение, но проблемы с обслуживанием, сложностью и читабельностью со временем растут. Возможно, это не приведет к сбою в работе, но усложнит его устранение. В конце концов, этот технический долг придется погасить. Либо компания разорится, либо кому-то придется все переписывать, потому что никто не может уследить за тем, что делает код.
Люди хотят использовать агентные инструменты кодирования и получать преимущества в производительности. Но важно использовать их таким образом, чтобы свести к минимуму некоторые потенциальные последствия и предотвратить влияние ошибок, создаваемых ИИ, на время безотказной работы. На каждом этапе процесса вы можете что-то сделать, чтобы улучшить конечный результат.
Прежде чем начать, сделайте как можно больше предварительного планирования и прочитайте лучшие практики использования этих инструментов. Лично мне нравится тенденция разработки на основе спецификаций. Это заставляет вас иметь четко сформулированный план и тщательно продумывать требования, дизайн и функциональность конечного программного обеспечения, которое вы хотите. Это превращает имеющийся у вас контекст кода во что-то, что может использовать агент генерации кода. Добавьте другие элементы контекста: рекомендации по стилю, документацию по базе кода и многое другое.
Хотя все хотят перейти на новейшую и лучшую языковую модель, мы не думаем, что вы должны позволять своим пользователям выбирать свой собственный LLM на CodeRabbit. Модели становятся очень разными, и с изменениями между LLM ваши сигналы могут вести себя по-разному. Фокус модели может измениться, она может внести определенные типы ошибок или по-другому интерпретировать существующие сигналы. Тот факт, что вы знаете, как подать сигнал на одну модель, не означает, что вы знаете, как подать сигнал на другую модель. Мы рекомендуем использовать инструмент кодирования, который проверяет все модели и назначает лучшую модель, чтобы лучше понять задачу, над которой вы работаете, или читать тесты, чтобы определить, какую из них использовать для каждой задачи и как ее запрашивать.
Как только вы начнете использовать агентов, чем меньше, тем лучше. Разделите задачи на как можно более мелкие части. Активно общайтесь с агентом и задавайте вопросы; Не позволяйте ему сжигать жетоны часами. С другой стороны, создавайте небольшие коммиты, которые ваши рецензенты смогут легко переварить. Люди должны быть в состоянии понять масштабы того или иного PR. Продвижение агентов с большим стажем работы — это стратегия продаж, и инженеры, использующие эти инструменты, должны быть дальновидными и практичными.
Когда вы связываетесь с пиарщиком, которому помогал AI, имейте в виду, что там будут и другие проблемы. Узнайте, какие типы ошибок допускает ИИ. Вам все равно нужно просмотреть и понять код, как и при любом коммите, сделанном человеком. Это серьезная проблема, потому что люди не очень хорошо масштабируются, поэтому рассмотрите возможность использования некоторых инструментов, которые выявляют проблемы в коммитах или предоставляют сводку.
Ваши инструменты после фиксации — сборка, тестирование и развертывание — станут более важными. Если у вас есть контрольные списки контроля качества, внимательно следуйте им. Если у вас нет контрольного списка, создайте его. Иногда простое добавление потенциальных проблем в контрольный список поможет им оставаться на первом месте. Просмотрите свои стандарты кода и применяйте их в обзорах. Выполняйте модульное тестирование, используйте инструменты статического анализа и убедитесь, что у вас есть надежная наблюдаемость. Или, что еще лучше, сражайтесь с ИИ против ИИ, используя ИИ в обзорах и тестировании. Все это хорошие методы разработки программного обеспечения, но компании часто пренебрегают этими инструментами во имя скорости. Если вы используете код, сгенерированный ИИ, вы больше не сможете этого делать.
Google и Microsoft похвастались, что в 2025 году процент их кодовой базы будет создан с помощью ИИ. Эта скорость и эффективность должны были показать, насколько они продуктивны. Но строки кода никогда не были хорошим показателем производительности человека, так почему же мы думаем, что это справедливо для ИИ?
Эти показатели будут выглядеть все более неактуальными, поскольку компании принимают во внимание влияние своего кода на последующие процессы. Вам необходимо учитывать общие затраты и экономию на использовании ИИ. Просматривайте не только строки кода, но и время, события и нагрузку на обслуживание каждого разработчика.
Если 2025 год был годом скорости кодирования ИИ, то 2026 станет годом кодирования ИИ качество.
Сохраните здравомыслие своей команды разработчиков в этом году с помощью улучшенного инструмента проверки кода. подпишитесь на[–>14-day CodeRabbit trial.