Вместе с растущей AI-индустрией приходят и её побочки. Я мейнтейнер библиотекиreact-native-tdlibи довольно быстро заметил: все больше PR выглядят как чистый вывод агента. Сначала я честно реагировал — писал в каждый такой PR вопросы: тестировали ли вы это, что именно меняет ваш код, зачем вот эта строчка. В какой-то момент понял, что трачу время на переписку с людьми, которые сами не знают, что написали.
Первая мысль была — написать большой README или CONTRIBUTING и прямым текстом сказать: «сгенерированный код не принимаю». Но тут же упёрся в вопрос: а как доказать, что код сгенерирован? Аргумент «чую, тут пахнет Claude Code» — так себе позиция для публичного спора в комментариях к PR.
Решение оказалось довольно простым —AGENTS.md. Он конечно не доказывает, что PR сгенерирован, но отлично ловит самые очевидные автоматические PR, где автор, кажется, вообще не участвовал в процессе.
Как работает AGENTS.md и для чего он сделан
AGENTS.md— это, по сути, README, но не для людей, а для агентов. Немного истории. Формат придумал OpenAI для своего Codex CLI летом 2025-го, а в конце 2025-го стандарт передали под нейтральное управление в Linux Foundation. На момент написания статьи его используют десятки тысяч open-source проектов, и читают практически все основные инструменты: Codex, Claude Code, Cursor, Copilot, Gemini CLI, и прочие. Смысл в том, что это один файл на все агенты и не надо плодить для каждого по отдельности.
Ключевой момент в нашем случае:агент читаетAGENTS.mdещё до того, как начинает планировать изменения.То есть любой инструмент, которым кто-то натравливает агента на твой репозиторий, сначала проглатывает твои инструкции, а уже потом лезет в код.
Обычный, «честный»AGENTS.mdвыглядит примерно так:
Полезно само по себе, так как агенту не приходится сильно углубляться в контекст, чтобы понять основные правила проекта. Но раз уж агент гарантированно читает этот файл — почему бы не положить туда кое-что ещё.
Клеймо для PR «maybe automated»
Я перестал пытатьсяловитьагента и начал просить егопредставиться. Идея в том, что определять сгенерированный код не нужно — достаточно попросить раскрыть факт его использования в том самом файле, который агент гарантированно читает первым.
Работает это в три шага.
Шаг 1. Самораскрытие черезAGENTS.md.В этом простом файле лежит прямая инструкция: если PR делается полностью AI-агентом, то пусть он отметит пункт в шаблоне PR. В самом шаблоне этот пункт выглядит примерно так:
Фокус в том, что агент, читающийAGENTS.md, эту галочку честно ставит, а человек, писавший код руками, оставляет её пустой. То есть чекбокс сам по себе неплохо разделяет потоки, и ничего «доказывать» не приходится.
Шаг 2. Бот вешает лейбл и ставит таймер.Дальше срабатывает обычный GitHub Action. Поймав отмеченный пункт, он вешает на PR лейблmaybe automated, пишет комментарий и запускает таймер:PR автоматически закроется через 3 дня, если не подтвердите свое авторство.
Шаг 3. Проверка, которую нельзя сгенерировать.Бот в том же комментарии требует не «честное слово», алоги прогона изменённого метода вexample/приложении на живой TDLib-сессии, отдельно на iOS и Android.
Это ключевой момент именно для моей библиотеки.react-native-tdlib— это нативный мост (ios/,android/), и сгенерированный PR обычно «проходит тесты» именно потому, что тесты ничего нативного не трогают. А вот device-логи реального прогона на двух платформах, для них придется собрать пример, поднять TDLib-сессию и реально прогнать методы.
Реальный пример
К примеру вот в этомPRагент ровно так и сделал как прописано вAGENTS.md. То есть человек, скорее всего, в процесс толком и не вникал, иначе заметил бы эту галочку. Бот тут же повесилmaybe automatedи попросил device-логи с обеих платформ. Дальше показательнее всего повёл себя автор и как только PR попал под лейбл, он закрыл его сам — видимо, понял, что спалился. Таким образом я сэкономил себе время на ревью кода и бесполезные вопросы.
AGENTS.mdзадумывался как способ сделать агентов полезнее, а для меня в итоге стал способом как легко вычислить агента. Ирония в том, что файл для агентов лучше всего ловит тех, кто за этими агентами прячется.
Чем самостоятельнее с каждым днём становится AI, тем чаще люди используют его в своих гадких целях. Накидать PR-ов по чужим репозиториям, набить профиль на гитхабе, собрать мнимую репутацию — а завтра, может, и устроиться на работу «на основе вклада в open source», которого по факту не было. Мне не жалко, что люди пользуются агентами — я сам активно их использую, но напрягает когда за коммитом нет человека, который понимает, что там написано, и готов взять ответственность.AGENTS.mdвсего этого не лечит, но хотя бы диктует простое правило: хочешь, чтобы твой вклад засчитали — покажи, что ты запускал собственный код.