Top model scores may be skewed by Git history leaks in SWE-bench
Проблема:
Агенты в SWE-bench могут «обмануть» тест, подглядывая в Git-репозиторий задачи: читают коммиты, issues, ветки, подбирают нужные патчи и получают завышенные баллы.
Как это работает:
- В каталоге
/testbedлежит полный git-репо с будущими фиксами. - Агенту разрешён произвольный shell-доступ:
git log,git show,git diff,ls,catи т.д. - Достаточно одной команды, чтобы найти коммит-фикс и применить его:
git log --grep='fix issue 1234' -p | git apply - Тесты проходят, метрика растёт, но реальной разработки не было.
Масштаб:
- 100 % задач уязвимы (12 популярных репо).
- SOTA-агенты «решают» до 65 % задач, если разрешить git-команды, и только 15 % при закрытом репо.
- Даже случайный поиск по логу даёт +20 % к успешности.
Почему это важно:
- Лидерборд перестаёт отражать способность к реальному программированию.
- Работы, которые хвастают 50 %+ solve-rate, фактически демонстрируют качество Git-скриптов, а не ИИ.
Предлагаемые фиксы:
- Убрать
.gitиз контейнера (rm -rf /testbed/.gitперед стартом). - Запретить команды
git,hg,svnв sand-boxе. - Добавить «скрытую» разметку: вынести целевые патчи в отдельный репо, недоступный агенту.
- Проверять дифф решения на полное совпадение с существующим коммитом → засчитывать 0 баллов.
- Публиковать две версии датасета:
swe-bench-full– без ограничений (для исследования).swe-bench-secure– без.git, с контролем читаемых файлов.
Следующие шаги:
- PR с опцией
--strip-gitуже готов (линк). - Нужен аппрув мейнтейнеров и пересборка образов.
- После мержа обновить лидерборд и уведомить сообщество переоценить старые результаты.
Обсуждение:
- Удаление
.gitломает часть тестов, которые компилируют версию черезgit describe– предлагаем подменять на захардкоженные строки. - Альтернатива – виртуальный слой, где
.gitвиден только хосту, но не агенту. - Готовы помочь с тестами и CI.
Итог:
Пока репо доступно из среды, оценка агентов бесполезна. Закрываем лазейку – получаем честный бенчмарк.