Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.
Кодирующего агента научили надёжнее находить дефект, менять подход после неудачи и проверять собственный патч. В работе Stanford University и AWS AI Labs, которая пока не прошла рецензирование, все числа получили сами авторы: доля задач, решённых с первой попытки, выросла на 11,1 процентного пункта. Это позволяет перенести часть логики из дорогой агентной обвязки в обучение модели, но не отменяет внешнюю проверку.
Почему дополнительные попытки не гарантируют исправление
Авторы разделили надёжность агента на покрытие и качество выбора. Покрытие показывает, нашёлся ли хотя бы один правильный патч среди нескольких попыток. Качество выбора показывает, смог ли агент распознать этот патч и вернуть именно его.
Для покрытия нужны два навыка. Агент должен искать дефект в разных местах, а затем пробовать разные способы исправления. Простого перезапуска недостаточно: попытки часто возвращаются к тому же файлу и повторяют близкое по смыслу изменение.
Разнообразие тоже нельзя увеличивать вслепую. Когда агента заранее заставляли просматривать больше мест, он исследовал репозиторий шире, но решал меньше задач. Лучше работал поиск, в котором следующий шаг зависел от результатов запуска кода: неудачная проверка заставляла отказаться от прежнего места или способа исправления.
Третий навык — проверка кандидатов. Тест, который агент написал для собственного патча, может повторять ту же ошибочную трактовку задачи. Такой тест проходит, но не отличает правильное поведение от правдоподобной ошибки.
Для этого в работе применили дифференциальную проверку. Один и тот же воспроизводящий тест запускали на исправленном дереве исходников и на версии с отменённым патчем. Если тест проходил в обоих случаях, он не подтверждал исправление и не получал положительной оценки.
Как поведение перенесли в модель
Обучение шло в два этапа. Сначала модель дообучали с учителем на траекториях ремонта, отдавая больший вес правильным, коротким и исследовательским решениям. Так поощряли переход к новому месту правки после неудачи, а не бесконечное редактирование первого найденного участка.
Затем обучение с подкреплением усилило проверяющую часть агента. Для каждого патча система создавала ошибочные варианты: меняла граничные условия, значения, ветвления и побочные эффекты. Тест получал награду за то, что обнаруживал такие варианты, а отдельные проверки внутри теста — за конкретные пойманные ошибки.
Диагностику проводили на всём SWE-bench Verified. Траектории для обучения взяли из одной части набора, а итоговые модели оценили на 270 других задачах. Эти задачи не входили в дообучение, однако использовались при предварительном изучении сбоев, поэтому это проверка на отложенных задачах знакомого бенчмарка, а не полностью независимый эксперимент.
Перенос дополнительно проверяли на SWE-bench Pro, SWE-PolyBench, SWE-bench Lite и DeepSWE. В экспериментах сохраняли одинаковые инструменты, агентную обвязку, ограничения контекста и число попыток, чтобы отделить эффект обучения от изменений среды.
Что изменилось и стоит ли менять архитектуру агента
После дообучения с учителем доля решений с первой попытки достигла 35,2%. Обучение с подкреплением добавило ещё 7,8 процентного пункта, то есть основную прибавку дал этап, где тесты учились отличать исправления от специально созданных ошибок.
Покрытие несколькими попытками выросло с 46,7% до 60,7%: правильный патч чаще появлялся хотя бы в одном запуске. Точность проверяющей модели достигла 41,7%, поэтому рост объясняется не только более разнообразным поиском, но и лучшим отбором кандидатов.
Для команд, которые строят кодирующих агентов, работа меняет план экспериментов, но не требует немедленно менять платформу. Вместо одной общей метрики полезно отдельно измерять, появился ли правильный патч среди кандидатов и смогла ли система его выбрать. Иначе дополнительные запуски могут выглядеть как улучшение, хотя агент лишь повторяет одну ошибку.
Дифференциальную проверку можно применить и без собственного обучения. В эксперименте она решила 52,8% задач, потратив 48,1% шагов базовой схемы с восемью независимыми попытками. Это практический аргумент в пользу запуска воспроизводящего теста как на патче, так и на отменённой версии до масштабирования числа кандидатов.
Если модель дообучают, полезнее собирать не только успешные траектории, но и пары близких правильных и неправильных исправлений. Они учат проверяющую часть видеть различия, которые невозможно получить из одного положительного примера.
Считать такой проверяющий модуль доказательством корректности нельзя. Тест подтверждает, что патч выдержал конкретный набор ошибочных вариантов, а качество падает на ошибках от незнакомых генераторов. На DeepSWE модели не решили полностью ни одной задачи по строгому критерию, поэтому вывод пока относится прежде всего к задачам семейства SWE-bench и похожим репозиторным агентам.
Источники
Похоже на вашу задачу?
Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.



