Агенты генерируют пулреквесты в open source. Разбираем опыт AutoGPT: как ставить ворота, писать AGENTS.md и не тратить команду на ревью слабых PR.— Читать дальше «Ваши open source-контрибьюторы теперь ИИ-first. Как не утонуть в потоке агентских пулреквестов»
Если в очереди на ревью вашего open source-проекта всё чаще оказываются пулреквесты, написанные не человеком, а агентом, — вы не одни. Чтобы не утонуть в этом потоке, мейнтенеру нужно перенести правила рядом с кодом и настроить автоматические ворота: шаблон PR, CI, требования к тестам и лицензионное соглашение участника.
В AutoGPT, где на момент интервью у репозитория было свыше 180 тысяч звёзд и 150 открытых PR, большая часть этих PR создана агентами: Copilot, OpenClaw, собственными инструментами команды и сторонними ботами. Большинство мейнтенеров реагируют просто: закрыть дверь, отключить пулреквесты, не тратить силы на чужой LLM-вывод. Но у Николаса Тиндла, одного из основателей ИИ-инженерии в AutoGPT, другой взгляд: «По сути, кто-то другой платит за ваши вычислительные ресурсы. Если контрибьютор хочет потратить свои токены на улучшение вашего проекта — пусть тратит. Главное, сделать так, чтобы единственный путь внутрь проходил через ваши правила.»
ИИ-first контрибьютор — это разработчик, который отдаёт написание кода, тестов или документации генеративной модели, либо самоходный агент, который клонирует репозиторий, ищет issue, пишет код и открывает PR. Для мейнтенера результат одинаков: в репозиторий приходит поток кода, который часто не учитывает контекст проекта и требует ревью.
Ключевые выводы
Агенты не ищут документацию сами — они читают то, что лежит рядом с кодом. AGENTS.md и CLAUDE.md в нужных директориях работают лучше, чем вики.
Пропускные ворота должны быть автоматическими и однозначными: шаблон PR, тест-план, CI как стена, CLA как детектор человека.
Не все ворота стоит оставлять включёнными: автоматические комментарии об ошибках CI быстро превращаются в шум.
Плохой AGENTS.md хуже, чем его отсутствие: избыточные инструкции засоряют контекст и ломают поведение агентов.
Мейнтенер всё ещё решает, что принимать: закрыть PR и переписать самому — тоже валидный выбор.
Первое, что пробовала сделать AutoGPT, — улучшить CONTRIBUTING.md, написать подробную вики и обновить гайды. Это не сработало. Дело в том, что агенты не ходят по ссылкам и не ищут документацию в разделах репозитория. Они смотрят на то, что находится в текущей директории и на один-два уровня выше. Если инструкция не лежит там, где агент работает, для него её не существует.
Сначала команда добавила файлы CLAUDE.md, потому что Claude открывал пулреквесты без достаточного контекста о репозитории. Потом выяснилось, что Copilot и Codex эти файлы игнорируют — они не Claude. Решением стал централизованный AGENTS.md, на который указывают все специфичные для модели файлы.
Важный нюанс: AGENTS.md действует внутри директории. Если агент работает в backend/, он видит правила для бэкенда. Если динамически загружается навык, связанный с фронтендом, агент может не знать, в какой директории искать инструкции — и навык сам должен ему подсказать путь. Поэтому в AutoGPT файл AGENTS.md лежит рядом с кодом, который он регулирует.
Навык — что это?
В терминологии агентских инструкций навык — это файл с описанием, по которому агент решает, когда загружать полный набор правил. Агент сканирует описания заранее и подключает нужный навык, когда задача совпадает. Например: «напиши Storybook-тест, если компонент лежит в этих папках».
Фронтенд-инженер AutoGPT устал от одного и того же класса сломанных PR в open source-проекте и оформил гайд как навык. Теперь каждый агент, который касается репозитория, видит триггер и выполняет правило. Бэкенд делает то же самое: не набрал 80% покрытия — PR не пройдёт.
# Пример структуры агентских инструкций в репозитории
AGENTS.md # центральные правила для всех агентов
CLAUDE.md # ссылка на AGENTS.md + специфика Claude
backend/AGENTS.md # правила для бэкенда
frontend/навыки/write-storybook-test.md # навык для фронтенда
AutoGPT выстроила несколько механизмов, которые сдерживают поток низкокачественных пулреквестов и заставляют агентов вести себя предсказуемо.
Шаблон пулреквеста как пропускной пунктВ шаблоне PR прямо написано: PR, не соответствующий шаблону, закрывается автоматически и без колебаний. Команда даже построила бота, который это делает. Но запускать его не понадобилось — само правило изменило поведение агентов. Агенты стали заполнять шаблон. А вот люди иногда его игнорировали, и это Тиндл считает полезным сигналом: «Если вы не следуете шаблону, вы, скорее всего, человек, и я отнесусь к вам мягче.»
Тест-план, который запускает кодВ шаблоне есть раздел тест-плана, и его формулировка незаметно подсказывает агенту протестировать пулреквест. Эта фраза активирует навык test PR: агент устанавливает браузер, разворачивает приложение и проверяет изменение. Агент пришёл поставить галочку, а в итоге запустил код. После этого сломанные PR стали редкостью. Осталась другая проблема — PR, которые работают, но не вписываются в дорожную карту.
Codecov и другие проверки настроены как required checks. Агент открывает PR, через несколько минут видит, что мёрж заблокирован, загружает навык с тестами и добивается покрытия. Никто не просил — инфраструктура сама направила агента.
CLA (Contributor License Agreement) как детектор человекаAutoGPT использует двойную лицензию, но Тиндл советует лицензионное соглашение участника (Contributor License Agreement, CLA) любому проекту, даже MIT. Подписание требует браузера и OAuth-потока GitHub на отдельном домене. Сегодня агенты с этим справляются плохо — и это хорошо, потому что большинство мейнтенеров не хотят, чтобы агент ходил в GitHub от их имени. Если CLA не подписан в течение недели, PR закрывается с комментарием «подпишите CLA и переоткройте».
SHA коммита перед закрытием замечанияЧасть агентов закрывает все треды ревью, не исправляя код. В AutoGPT есть навык pr-address, который описывает допустимую последовательность: исправить, закоммитить, запушить, ответить, потом разрешить тред. Ответ должен содержать полный SHA коммита, полученный через git rev-parse HEAD, чтобы агент не подсунул старый хеш. Навык явно называет антипаттерны: «Acknowledged» — не исправление, и ссылка на коммит, который не трогает указанную строку, тоже не считается.
# Пример правила из навыка pr-address
1. Исправь замечание.
2. Закоммитьте изменение.
3. Запушьте в ветку PR.
4. Ответьте в тред с SHA: git rev-parse HEAD
5. Только после этого нажмите Resolve conversation.
Когда CI падает, AutoGPT изначально запускала агента, который читал лог и писал комментарий, что сломалось. Первая версия использовала Claude Code внутри GitHub Actions с аутентификацией в CI — лишняя широкая учётная запись. Потом перешли на Copilot внутри рабочего процесса: тот же результат, но без лишних кредов.
А потом выключили именно автоматические комментарии об ошибках CI. Прогоны в AutoGPT падают часто, и бот, который целыми днями описывает каждый падший прогон, создаёт не меньше шума, сколько и сами ошибки. Урок: оставляйте то, что снижает нагрузку на мейнтенера, и выключайте то, что превращается в фоновый шум.
Четыре ловушки, которые стоит записатьТиндл подчёркивает два тезиса, которые не связаны с инструментами. Первый: вы не обязаны принимать каждый пулреквест. Мёржить чужой LLM-вывод — асимметричная сделка: вы будете поддерживать этот код вечно. Закрыть PR и переписать решение самому — валидный выбор.
GitHub даёт мейнтенерам ручки: можно отключить пулреквесты целиком, ограничить создание issue только участникам с правами collaborator или требовать предварительного обсуждения. Если хотите — вообще закройте приём внешнего кода, как это сделали в SQLite: они принимают только баг-репорты. У вашего проекта тоже может быть своя граница.
Второй тезис: когда вы закрываете PR, но переписываете его идею сами, добавьте автора как соавтора, если это уместно. В AutoGPT 800 контрибьюторов, и один дополнительный соавтор ничего не стоит. Для большинства людей важно, что их проблему заметили и исправили.
Часто задаваемые вопросы
1
Что такое ИИ-first контрибьютор?
Это контрибьютор, который использует генеративную модель или автономного агента для создания пулреквестов, тестов, документации или issue. Для мейнтенера результат выглядит как обычный PR, но качество и контекст часто отличаются от человеческих.
2
Почему агенты не читают CONTRIBUTING.md?
Агенты работают с тем, что лежит в их текущем контексте: файлы в директории, к которой они обращаются, и инструкции, явно переданные в промпте. Они не ходят по ссылкам и не ищут вики. Поэтому правила нужно размещать рядом с кодом — в AGENTS.md, CLAUDE.md или навыки.
3
Что должно быть в AGENTS.md?
Краткие, конкретные инструкции: как запускать тесты, как оформлять PR, какие стандарты покрытия действуют, какие антипаттерны запрещены. Избыточный AGENTS.md хуже отсутствующего, потому что засоряет контекст и сбивает агентов с толку.
4
Какие ворота реально снижают нагрузку на мейнтенера?
Жёсткий шаблон PR, тест-план, который побуждает агента запустить код, CI как обязательная стена, CLA как детектор человека и правило о SHA коммита перед разрешением треда ревью. Главное — ворота должны быть автоматическими и однозначными.
5
Стоит ли отключать пулреквесты из-за агентов?
Не обязательно. Но мейнтенер вправе выбрать любую границу: issue-only, collaborators-only, полное отключение PR или предварительное обсуждение. Главное — сделать правила явными и разместить их там, где агенты их найдут.
Open source развивался, делая сотрудничество явным: лицензии формализовали разрешения, issue сделали работу видимой, пулреквесты превратили ревью в общую практику. Инструкции для агентов в репозитории — следующий шаг в этом направлении. Правильная форма ещё не устоялась: у AutoGPT уже третья версия AGENTS.md, и она появилась потому, что команда сначала развёртывала плохие версии и смотрела, что с ними делают агенты.
Тиндл советует мейнтенерам записываться в программу обратной связи GitHub — maintainers.github.com:
You've got to go there. You've got to sign up. It gets you all the connections you want at GitHub. That's where I learned about all this stuff, and where I share it.
Nicholas Tindlefounding AI engineer, AutoGPT
Мейнтенер всё ещё решает, что принимать, и задаёт планку. Разница лишь в том, что всё больше этого решения можно вынести рядом с кодом — туда, где уже находятся ваши контрибьюторы и их агенты.
Если тема интересна, загляните в разделы tproger: open source, GitHub и искусственный интеллект.
Источник: GitHub Blog — Your contributors are AI-first now. Is your project?
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Как выбрать фреймворк для ИИ-агентов | 0 | 15 | 24-08-2026 |
| 2 | Как ограничить расходы на OpenAI API, чтобы ИИ-агенты не сожгли бюджет | 0 | 8 | 04-07-2026 |
| 3 | AI-агенты сломали управление жизненным циклом идентификации. Что с этим делать | 0 | 7 | 04-07-2026 |
| 4 | Kubernetes на практике: гайды и малоизвестные Open Source-инструменты | 0 | 11.88 | 25-08-2026 |
| 5 | Как написать отчёт по практике с помощью ИИ и готовых промптов? | 5 | 7 | 02-07-2026 |
| 6 | Лучшие курсы по ИИ для детей: обучение нейросетям, генерации картинок и созданию AI-проектов | 0 | 12.3 | 26-08-2026 |
| 7 | Курсы искусственного интеллекта для школьников: где детям изучать AI и создавать свои проекты? | 0 | 6.06 | 13-08-2026 |
| 8 | Как построить карьерный трек для разработчиков | 0 | 8.09 | 18-08-2026 |
| 9 | Как мы детектили фрод, а получили Джонни и Джулию: история одной браузерной разминки | 0 | 4.75 | 17-08-2026 |
| 10 | GPU-серверы для LLM-инференса: 5 решений, на чём запустить локально в 2026 году | 0 | 20.21 | 26-08-2026 |