Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.
Новый агент проверяет, сохранилось ли поведение программы после исправления, переноса или рефакторинга, даже если код нельзя запустить напрямую. В препринте AWS AI Labs, который не прошёл рецензирование и приводит замеры самих авторов, FEAgent находил расхождения с эталонным исправлением даже после успешного прогона тестов. Такой аудит может стать дополнительным барьером между тестированием и выпуском сгенерированного кода.
Как граф кода превращается в список проверок
FEAgent начинает не с общего вопроса к LLM, а с описания того, какое поведение нужно сохранить. В него входят допустимые входные данные, возвращаемое значение, исключения, внешние эффекты, изменения переданных объектов и завершение программы. Команда также задаёт допущения о библиотеках, файлах, сервисах и других зависимостях.
Исходную и изменённую программы агент представляет как типизированные графы. Их узлы обозначают функции, параметры, переменные, ветвления, вызовы и внешние сущности. Рёбра показывают поток управления и данных, импорт, чтение, запись, возврат значения и вызов другой функции.
Затем FEAgent сопоставляет публичные точки входа и фрагменты, которые влияют на видимый результат. Из них он формирует конкретные проверки: одинаково ли обрабатывается нулевой знаменатель, достигает ли запись возвращаемого объекта, сохранилась ли защита от переполнения, совпадают ли внешние эффекты.
Запросы к графу ограничены глубиной и объёмом. Каждое утверждение должно ссылаться на узлы, связи и строки исходного кода. Если нужный вызов не удалось разрешить или путь остался непроверенным, агент сохраняет пробел в журнале доказательств, а не заполняет его догадкой.
Независимое моделирование ловит расхождения за одинаковыми ответами
После структурного анализа генератор подбирает входные данные для ещё не проверенных ветвей: граничные значения, пустые коллекции, исключительные случаи и комбинации, которые разводят разные условия. Это не обычный набор случайных тестов — каждый пример связан с конкретным путём в графе.
Две изолированные LLM получают по одной версии программы и не видят ни другую реализацию, ни её прогноз. Каждая модель выполняет суррогатное исполнение: пошагово предсказывает результат кода без настоящего запуска. Она записывает возврат, исключение, побочные эффекты, изменения объектов и статус завершения.
Раздельный анализ мешает модели заранее решить, что программы похожи, а затем подогнать объяснение. Обычный алгоритм сопоставляет полученные следы и не может самостоятельно переосмыслить намерение разработчика. FEAgent возвращает эквивалентность, различие или неопределённый результат, если свидетельства конфликтуют.
Граф помогает замечать эффекты, скрытые за одинаковыми возвращаемыми значениями. В одном из разобранных исправлений обе версии возвращали None, но одна очищала весь кеш, а другая — только его часть. Для вызывающего кода ответы совпадают, а состояние системы расходится.
Тесты остаются первым фильтром, но перестают быть единственным
На EquiBench проверили 1200 пар небольших программ; прямой запуск подтвердил контрпримеры для 18% пар, хотя опубликованные метки считали их иначе. Среди исправлений SWE-bench Verified, уже прошедших репозиторные тесты, исполнение подтвердило расхождение с эталонным исправлением у 94 из 331 кандидатов, или 28,4%.
Проверка охватывала два разных масштаба: отдельные функции из EquiBench и изменения внутри репозиториев из SWE-bench Verified, созданные mini-SWE-agent. Все отмеченные расхождения дополнительно воспроизводили настоящим запуском, поэтому итоговые случаи опираются не только на прогноз LLM.
Расхождение с эталонным исправлением ещё не доказывает, что кандидат неверно решает исходную задачу. Он может добавлять допустимое поведение, которое отсутствует в эталоне. Для такого решения нужны требования, тесты или ручная проверка, а FEAgent лишь показывает конкретную разницу.
Работа меняет планы команд там, где тесты служат окончательным критерием приёмки сгенерированных исправлений, миграций и рефакторинга. После тестов можно запускать выборочный аудит критичных изменений, отправлять неопределённые случаи инженеру и требовать воспроизводимый вход для каждого вердикта о различии.
FEAgent не заменяет математическое доказательство эквивалентности: конечный набор входов и прогнозы моделей не покрывают все возможные исполнения. Работа также не отделяет количественно вклад графа от вклада суррогатного исполнения. Поэтому архитектуру разумно оценивать как дополнительный проверяемый фильтр, а не как новый окончательный эталон.
Источники
Похоже на вашу задачу?
Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.



