Почему ИИ-агенты для написания кода терпят неудачу: критический разрыв между файлами и строками
Хотя ИИ-агенты для написания кода становятся все более способными исправлять программные ошибки, новое исследование показывает, что они страдают от серьезной проблемы «локализации». Они могут найти нужный файл в огромной кодовой базе, но часто не могут определить конкретные строки кода, необходимые для реализации исправления.
Представляем SWE-Explore: выход за рамки показателей успешности исправлений
Исторически эффективность ИИ-агентов измерялась одной бинарной метрикой: исправил агент баг или нет? Такой подход игнорирует вопрос «почему» произошел сбой. Неудачное исправление может означать, что агент написал плохой патч, а может означать, что он даже не заглянул в соответствующую логику.
Чтобы устранить это «слепое пятно», международная исследовательская группа, в которую вошли ученые из Шанхайского университета Цзяо Тун, разработала SWE-Explore. В отличие от традиционных бенчмарков, SWE-Explore выделяет этап предварительного поиска. Он оценивает способность агента на основе описания ошибки выдать ранжированный список конкретных участков кода, которые действительно имеют отношение к проблеме. Набор данных обширен: он включает 848 задач из 203 проектов с открытым исходным кодом на десяти языках программирования, причем наиболее представленным является Python (547 задач).
Разрыв в точности: успех на уровне файлов против провала на уровне строк
Самым поразительным выводом исследования стало огромное несоответствие между точностью на уровне файлов и на уровне строк. При тестировании универсальных агентов, таких как Claude Code, Codex и OpenHands, результаты оказались весьма показательными:
- Точность на уровне файлов: Агенты справляются хорошо, успешно определяя правильные исходные файлы и присваивая им высокие ранги.
- Точность на уровне строк: Эффективность резко падает. Универсальные агенты для написания кода охватили лишь от 14% до 19% фактических строк кода, необходимых для исправления.
Интересно, что простое обновление базовой большой языковой модели (LLM) не решает эту проблему. Независимо от того, используются ли модели от OpenAI, Anthropic, Google, Moonshot или Zhipu, закономерность остается неизменной: высокая точность попадания в файлы, но катастрофически низкое покрытие строк. Исследователи отметили, что специализированные системы, такие как CoSIL, превосходят универсальных агентов, рассматривая код как сеть взаимосвязанных строительных блоков. Это говорит о том, что архитектурные изменения важнее, чем просто мощность модели.
Эффект порога: почему важно «читать больше»
С помощью контролируемых экспериментов по абляции исследователи обнаружили «эффект порога» в отношении контекста. Варьируя объем основного кода, предоставляемого модели (от 0% до 100%), они выяснили, что качество исправлений не улучшается линейно.
Для более простых задач существует четкая точка перелома: если агент видит менее 50% необходимых основных областей, показатель успешности исправлений остается близким к нулю. Значительный скачок в количестве успешных исправлений происходит только тогда, когда агент получает доступ к диапазону от 50% до 75% необходимого контекста. Что крайне важно, исследование показало, что предоставление нерелевантного «шумового» кода вредит производительности не так сильно, как отсутствие критически важных строк. Вывод для разработчиков очевиден: в эпоху ИИ-агентов лучше предоставить больше контекста, чем рисковать отсеиванием важных деталей.
Основные выводы
- Локализация — это узкое место: ИИ-агенты успешно находят нужный файл, но испытывают значительные трудности с точным определением конкретных строк кода, необходимых для исправления.
- Масштабирование моделей — не панацея: Переход на более мощные LLM не устраняет разрыв в точности на уровне строк; более эффективными являются специализированные архитектурные подходы, такие как CoSIL.
- Правило 50% контекста: Успешность исправлений ИИ следует пороговому паттерну: для того чтобы вероятность успешного исправления стала высокой, необходимо, чтобы было доступно как минимум 50–75% соответствующего контекста кода.