Представьте, что вы деплоите проект в пятницу вечером, а на следующее утро приходите и видите, что GitHub-репозиторий завален десятками бессмысленных Pull Request от «авторов», которые пытаются «улучшить» ваш код. Это не фантастика, а суровая реальность, с которой столкнулись мы и, вероятно, многие другие разработчики. В этой статье мы расскажем, как мы побороли «ИИ-спам» в нашем репозитории и вернули контроль над кодом.

Введение: Новая эра «мусорных» Pull Request

Если вы поддерживаете популярный open-source проект или работаете в крупной компании с открытыми внутренними репозиториями, вы наверняка заметили пугающую тенденцию последнего года. Количество Pull Request (PR) растет, но их качество стремительно падает. Мы столкнулись с феноменом «ИИ-спама»: когда автоматизированные скрипты, вооруженные LLM (Large Language Models), сканируют репозитории на предмет мелких опечаток, форматирования или тривиальных багов и создают десятки бессмысленных правок.

На первый взгляд, это кажется полезным — кто откажется от исправления опечатки? Однако на практике это превращается в «ревью-ад». Мейнтейнеры тратят часы на проверку кода, который выглядит правдоподобно, но на деле может содержать тонкие галлюцинации или нарушать логику системы. В нашем случае ситуация дошла до критической точки, когда поток автоматизированных правок начал блокировать работу над реальными фичами.

Анатомия проблемы: Откуда берется ИИ-спам?

Современные боты — это не просто скрипты на Python, которые ищут слово "teh" вместо "the". Это сложные агенты, которые пытаются имитировать поведение человека. Они используют API GitHub для поиска репозиториев по ключевым словам, анализируют структуру кода и генерируют описания PR, которые выглядят так, будто их написал опытный разработчик.

Интересно, что триггером для нашего расследования послужила странная активность, связанная с мониторингом внешних API. Мы заметили, что боты начали массово предлагать изменения в модулях, отвечающих за интеграцию со сторонними сервисами. В логах наших серверов разработки часто мелькали запросы к эндпоинтам вроде "api/v1/reports/summaries" protondb. Это специфический сегмент данных, связанный с отчетами о совместимости игр (ProtonDB), и боты пытались «оптимизировать» парсинг этих отчетов.

Основные признаки ИИ-спама

  • Масштабируемость: Один и тот же паттерн правки появляется в 50 разных репозиториях одновременно.
  • Поверхностность: Правки касаются только документации, комментариев или тривиальных условий.
  • Стиль сообщений: Слишком вежливые, «корпоративные» описания PR, сгенерированные ChatGPT.
  • Анонимность: Аккаунты созданы недавно, имеют пустую историю или историю, состоящую только из мелких правок в случайных проектах.

Почему стандартные средства защиты GitHub не справляются?

GitHub предлагает несколько инструментов для борьбы со спамом, включая Allowlists, Blocklists и ограничения на создание репозиториев. Однако эти меры оказались неэффективными против ИИ-ботов по нескольким причинам:

  1. Масштабируемость: Боты быстро создают новые аккаунты и меняют свои тактики.
  2. Скрытность: ИИ-боты имитируют человеческое поведение, что затрудняет их обнаружение.

Наш подход: флаг --author в Git

Мы решили использовать флаг --author в Git, чтобы фильтровать коммиты по автору. Это позволило нам автоматически блокировать подозрительные PR.

git log --author="notHuman" --invert-grep

Этот подход оказался более эффективным, чем стандартные инструменты GitHub.

Заключение

В этой статье мы рассказали, как мы победили спам ИИ-ботов в нашем GitHub-репозитории с помощью флага --author в Git. Мы надеемся, что наш опыт будет полезен другим разработчикам и поможет им защитить свои репозитории от ИИ-спама.