HAVE AI NEWS HAVE AI NEWS
Исследования

Эксперимент: способны ли нейросети находить все баги и объединять чужой код в идеальное решение?

Эксперимент: способны ли нейросети находить все баги и объединять чужой код в идеальное решение?

Практический тест показал, почему нельзя слепо доверять одной языковой модели: четыре LLM искали семь ошибок в скрипте, а еще семь пытались собрать идеальную версию из чужих исправлений.

Когда разработчики обращаются к нейросетям за помощью в рефакторинге или отладке, часто возникает дилемма: довериться одной топовой модели, протестировать сразу несколько независимых вариантов или попытаться поручить другой LLM объединить результаты коллег в единый монолит? Чтобы проверить эти подходы на практике, был проведен двухэтапный эксперимент на реальном проблемном bash-скрипте.

Анатомия тестового скрипта

Объектом исследования стал служебный скрипт run-code.sh, предназначенный для пакетного тестирования LLM через внешний Python-скрипт и формирования итоговой сводки. В коде намеренно содержалось семь дефектов различной степени критичности:

  • Поврежденные данные в пресетах: отсутствующие разделители и пустые параметры рейтрейтов, вызывавшие предупреждения в stderr.
  • Отсутствие защитного парсинга: предположение, что входные данные всегда содержат корректные целые числа.
  • Отсутствие предварительной проверки файлов: скрипт запускал цикл бенчмарка, даже если исполняемый файл отсутствовал.
  • Критический сбой подсчета статусов: сводная таблица искала несуществующие ключи, из-за чего статистика всегда выдавала нули независимо от результата тестов.
  • Ложные аварийные завершения: скрипт не делал различия между фатальным крашем и ситуацией, когда модель прошла часть тестов.
  • Хрупкий разбор JSON: падение сводки целиком при повреждении хотя бы одного отчета.
  • Устаревшая документация: неактуальные имена файлов в комментариях и справке.

Раунд 1: Одиночный ремонт вслепую

В первом этапе четыре модели — Sonnet 5, HY3, Qwen3-Max и DeepSeek-V4-Flash — получили исходный файл без подсказок и работали полностью изолированно.

Баг / ПроблемаSonnet 5HY3Qwen3-MaxDeepSeek-V4-Flash
1. Ошибки в пресетахИсправлено точечноПропущеноИсправлено через guardНейтрализовано дефолтами
2. Защита парсера лимитовНе требовалосьПропущеноПолная защитаЧастичная защита
3. Проверка наличия файлаПропущеноИсправленоПропущеноПропущено
4. Корректные ключи статусовПропущеноПолная категоризацияДетальная разбивкаЧастично (только pass/fail)
5. Разделение сбоев и деградацииПропущеноИсправленоСтрогая валидацияПропущено
6. Защита JSON-парсераПолный try/exceptЧастичноЧастичноЧастично
7. Актуализация документацииЧастичноПропущеноПропущеноПропущено

Главный итог первого тура: ни одна модель не справилась со всеми багами в одиночку. Sonnet 5 уделила внимание оформлению и защите от исключений, но пропустила критическую ошибку сбора статистики. HY3 блестяще переписала логику подсчета и единственная заметила отсутствие проверки файлов, но проигнорировала битые данные. Наиболее сбалансированный результат показала Qwen3-Max, закрывшая большинство функциональных дыр.

Раунд 2: Слияние чужих решений

На втором этапе семи моделям (включая участников первого раунда, а также Mistral-Medium-3.5, Nemotron-3-Super-120B, Gemini Pro и dots-studio-3-note) предоставили все четыре варианта исправлений с заданием скомпоновать наилучшую финальную версию.

Модель-агрегаторКритические баги (1–5)Защита парсера (6)Очистка доков (7)Атрибуция источниковИтоговый результат
Qwen3-MaxУчтеныДаДаПолная таблица правок1 место
Gemini ProУчтеныДаДаОтсутствует2 место
DeepSeek-V4-FlashУчтеныДаДаЧастичная3 место
Mistral-Medium-3.5УчтеныДаПотеряноОтсутствует4–5 место
dots-studio-3-noteУчтеныДаПотеряноОтсутствует4–5 место
ling-3.0-flashУчтеныНетПотеряноОтсутствует6 место
Nemotron-3-Super-120BУчтеныНетПотеряноОтсутствует7 место

Все сборщики предоставили рабочий код, прошедший базовый запуск. Однако разница проявилась во внимании к деталям: большинство моделей молча вырезали неочевидные исправления (например, правки документации от Sonnet 5). Лидером стала Qwen3-Max, которая не только сохранила все полезные изменения, но и приложила детальный список изменений с указанием авторов исходных правок.

Ключевые выводы

  • Универсальных моделей не существует: даже флагманские решения имеют слепые зоны, причем у каждой нейросети они свои.
  • Рейтинг не гарантирует полноту: аутсайдеры первого раунда находили уникальные баги, которые полностью упустил победитель.
  • Слияние требует верификации: при объединении кода нейросети склонны отбрасывать правки, значимость которых они не поняли.
  • Важность прозрачности: агрегатор кода ценен не только работоспособностью результата, но и способностью объяснить происхождение каждой строчки.

Автор: Renatk1 час назад

Источник: habr.com