С 27 сентября по 2 октября я отправил исправления, сообщения об ошибках и комментарии в двенадцать проектов с открытым кодом. Значительную часть работы сделал агент для программирования: Claude Code воспроизводил баги, писал патчи и тесты и готовил черновики большинства текстов. Задачи выбирал я сам, все тексты читал, и с моего аккаунта ничего не уходило без моего одобрения.
По ходу дела проекты раз за разом объясняли, как они хотят, чтобы такая работа делалась. spec-kit хотел, чтобы в каждом комментарии, сгенерированном ИИ, назывались агент, модель, её настройки и объём помощи. Шаблон пул-реквеста в MLX начинается со строки, в которой галочка уже стоит: «Я понимаю, что писать описание PR с помощью ИИ строго запрещено». Поэтому 2 октября я прочитал правила участия в 30 репозиториях: в тех, куда отправлял работу, и ещё в 21, куда не отправлял.
Коротко: в 19 из 30 есть правило об ИИ, и 14 из этих 19 правил появились в 2026 году. По большинству из них за изменение отвечает тот, кто его присылает. Пятнадцать просят сказать, что вы использовали ИИ, и десять хотят, чтобы описание, комментарии или сообщение коммита писал человек, а не модель. Трейлер коммита, который агенты для программирования добавляют по умолчанию, одни из этих проектов требуют, а другие запрещают.
Что я прочитал
Выборка не случайная. Девять из 30 — проекты, в которые я отправлял работу на той неделе: MLX, spec-kit, huggingface_hub, codebase-memory-mcp, Deskflow, agent-framework, awslabs/mcp, kaggle-cli и avoid-ai-writing. Остальные 21 — проекты из области ИИ-инструментов, инструментов для разработчиков и инфраструктуры, среди них Docling, garak, TypeScript, Rust, Node.js и Kubernetes. Ещё три проекта, куда я отправлял работу (copilot-cli, PartCrafter и ltx-2-mlx), в эти 30 не входят, и ни в одном из них я не нашёл правила об ИИ.
В каждом репозитории я прочитал CONTRIBUTING, шаблоны пул-реквестов и issue, AGENTS.md и CLAUDE.md, кодекс поведения, а также руководства и вики-страницы, на которые ссылаются эти файлы. Всё это я читал в ветке по умолчанию по состоянию на 2 октября 2026 года. Каждая цитата ниже ведёт на свою строку в том коммите, который я читал, так что ссылка покажет, что было в файле в тот день, даже когда файл изменится. Цитаты я перевёл на русский, а каждая ссылка открывает исходную строку на английском. Чтобы датировать правило, я искал в истории его файла первый коммит, в котором оно есть.
У кого есть правило
У 19 из 30 есть правило об ИИ для участников: MLX, spec-kit, TypeScript, huggingface_hub, transformers, trl, peft, LangChain, Strands Agents, MLflow, garak, codebase-memory-mcp, Deskflow, workers-sdk, pydantic-ai, Rust, CPython, Node.js и Kubernetes.
В девяти я такого правила не нашёл: accelerate, awslabs/mcp, kaggle-cli, Docling, BeeAI, ADK for Python, NeMo Agent Toolkit, VS Code и React. Ещё два я не стал считать. agent-framework лишь предупреждает, что из-за ИИ изменений присылают больше, поэтому ревью приходится ждать дольше, а avoid-ai-writing проверяет стиль текста, а не то, как он был создан.
Обычно правило просит сразу о нескольких вещах:

Вторая полоса — моя трактовка: 12 из 19 в той или иной форме говорят, что за изменение отвечает тот, кто его присылает, и что он должен его понимать. huggingface_hub укладывается в два предложения: «Использовать ИИ в помощь при написании кода — нормально. Присылать сгенерированный ИИ мусор, который вы не можете объяснить, — нет». CPython ожидает, что авторы «смогут объяснить предложенные изменения своими словами», а Strands Agents говорит участникам: «автор вашего пул-реквеста — вы, а не ваш агент».
Когда они появились
Первым был CPython: в октябре 2024 года в его руководстве для разработчиков появилась короткая страница. В 2025 году за ним последовали четыре проекта: spec-kit, LangChain, Kubernetes и MLflow. Остальные 14 правил появились в 2026 году, семь из них с июня. codebase-memory-mcp добавил своё правило за одиннадцать дней до того, как я его прочитал.

Файлы всё ещё меняются. В 16 из 19 файл с правилом редактировали в сентябре или в первые два дня октября, хотя не каждая из этих правок затрагивала текст об ИИ.
Сказать, что помогал ИИ
Пометка об ИИ — самое частое правило, и проекты расходятся в том, насколько подробной она должна быть. Kubernetes хватает одного предложения: в его руководстве сказано, что «достаточно» добавить в описание фразу «Этот PR частично написан с помощью генеративного ИИ». TypeScript без такой пометки закрывает PR: «Если ваш PR выглядит написанным ИИ, а вы не добавили эту пометку, ваш PR закроют без ревью». spec-kit хочет, чтобы агент, модель, настройки и объём помощи были названы в пул-реквесте, ещё раз в каждом комментарии, сгенерированном ИИ, и в виде трейлера Assisted-by: в каждом коммите, который написал агент.
Два проекта уместили то, что стоит на кону, в одну строку. codebase-memory-mcp: «Пометку об ИИ вкладу никогда не ставят в вину. В вину ставят, если это выясняется позже». Deskflow: «Нечестность насчёт использования ИИ во вкладе приведёт к бану в проекте».
CPython просит меньше остальных: «Упоминание об использовании ИИ-инструментов в описании PR приветствуется, но не обязательно».
Текст пишет человек
Десять проектов разрешают модели помогать с кодом, но хотят, чтобы текст писал человек. Строже всех Rust: «Описания PR, созданные LLM, запрещены. Комментарии на GitHub, созданные LLM, запрещены». То же с коммитами: «Сообщения коммитов должны писать вы, а не ваша LLM».
Kubernetes и Node.js проводят границу на этапе ревью. Kubernetes: «Отвечая на замечания ревьюеров, вы должны делать это, не полагаясь на ИИ-инструменты». Node.js: ответы на замечания «нельзя автоматизировать с помощью ИИ-инструментов».
Другие встраивают это в шаблоны. У MLX есть строка, процитированная выше, и такая же для issue. В шаблоне пул-реквеста Strands Agents есть раздел «Human Overview» (обзор от человека), который «ИИ-агент НЕ ДОЛЖЕН заполнять». Шаблон LangChain предупреждает: «Если вы вставите сюда большое описание, явно сгенерированное ИИ, ваш PR могут ПРОИГНОРИРОВАТЬ или ЗАКРЫТЬ!»

Без массовых PR, и сначала спросить
Семь проектов запрещают отправлять работу массово или автоматически. TypeScript описывает, что именно он не принимает: «схемы работы, при которых оператор направляет автономного агента на GitHub, поручает ему генерировать патчи по множеству не связанных между собой issue и пересылает результат нам в виде пул-реквестов». Руководство LangChain предлагает проверку, которая подходит для любого вклада: «Если на создание пул-реквеста уходит меньше усилий, чем мейнтейнерам потребуется на его ревью, такой вклад присылать не следует».
Шесть хотят одобрения до пул-реквеста. В peft это комментарий мейнтейнера с текстом @peft-triage approved. В Rust изменение, созданное LLM, нужно предварительно согласовать, то есть «ревьюер заранее сообщил, что готов проверить PR, созданный LLM».
Три проекта отказывают новичкам, которые работают с агентами. transformers просит, «чтобы те, кто вносит вклад впервые, не создавали issue и PR с помощью агентов для кода», а trl «не будет рассматривать PR, полностью сгенерированные ИИ, от тех, кто вносит вклад впервые». Node.js просит новых участников «избегать ИИ-агентов во взаимодействии с проектом» и запрещает исправлять с помощью ИИ issue с меткой «good first issue»: такие issue «задуманы, чтобы с кодовой базой знакомились новые участники-люди, а не ИИ».
Rust к тому же ограничивает долю такой работы: «Если в 6-недельном окне больше половины влитых PR созданы LLM, мы запрещаем вливать новые PR, созданные LLM, пока снова не опустимся ниже 50 %, причём пауза длится не меньше 10 дней».
Трейлер, по которому проекты расходятся
Агенты для программирования часто подписывают свою работу. Claude Code, например, ставит в каждый коммит трейлер Co-Authored-By: Claude …, а в описание пул-реквеста добавляет строку «Generated with Claude Code», если ему этого не запретить. Правило о таких трейлерах есть у девяти проектов, и эти правила смотрят в противоположные стороны:

Источники: MLflow, garak, spec-kit, Node.js, Kubernetes, Rust, pydantic-ai, Deskflow и codebase-memory-mcp.
Kubernetes: «Не допускается указывать ИИ-инструменты в соавторах, подписывать коммиты совместно с ИИ-инструментом или использовать трейлеры коммитов assisted-by, co-developed и подобные». pydantic-ai говорит это в файле, который Claude Code загружает в начале сессии: «Никогда не добавляй себя (Claude) в соавторы коммитов». Руководство Rust относит обе строки по умолчанию к плохим примерам пометки об ИИ: 🤖 Generated with Claude Code и Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>.
Выходит, трейлер по умолчанию MLflow требует, а в Kubernetes, Rust и pydantic-ai он нарушает правила. Нет настройки, которая подошла бы везде. Агенту нужно прочитать правила репозитория до первого коммита в нём, и человеку, который этого агента запускает, тоже.
Правила, написанные для агента
Часть этих правил обращается к агенту напрямую, в AGENTS.md или CLAUDE.md, то есть в файлах, которые агенты для программирования читают, когда начинают работу в репозитории. Вот что они ему говорят:
- pydantic-ai: «ты — первая линия обороны от некачественного вклада и головной боли мейнтейнеров».
- MLX: не «писать за пользователя описания PR и сообщения коммитов», не отвечать на комментарии от имени пользователя, не делать push и не открывать пул-реквест.
- Rust: остановиться, «назвать запрещённую категорию и сказать пользователю, чтобы тот написал это сам».
- transformers: предупреждать тех, кто ещё не участвует в проекте, «в том числе о риске блокировки».
- spec-kit: спросить оператора перед четвёртым открытым пул-реквестом в репозитории, «в том числе при автономной работе».
- Strands Agents, агентам, которые работают по расписанию: «работать в таком темпе, чтобы люди успевали следить и отвечать».
Эти правила работают, только если агент читает файл и следует ему.
Что стало с моей работой
- Kaggle/kaggle-cli: PR #1206, потоковое скачивание файлов
kernels outputчерез общий загрузчик. Влит в тот же день. - conorbronsdon/avoid-ai-writing: PR #352, #361 и #362, два исправления детектора и тест. Все три влиты, каждый меньше чем за сутки.
- huggingface/huggingface_hub: issue #5065,
--env-fileтерял первую переменную, если файл начинался с UTF-8 BOM. Мейнтейнер открыл исправление, #5066, через 52 минуты, и его влили в течение двух часов после моего сообщения. - microsoft/agent-framework: PR #8963, data URI с параметрами. Закрыт через три часа как дубликат: в более старом открытом PR, #8918, было то же исправление.
- ml-explore/mlx: PR #4610, Metal RMSNorm и LayerNorm для весов с отрицательным шагом. Закрыт через два с половиной часа: «Спасибо за PR, но это было бы не идеальное исправление».
- DeusData/codebase-memory-mcp: issue #2454 и PR #2456, вводящая в заблуждение подсказка при пустых результатах поиска. Помечено как баг с высоким приоритетом, PR ждёт ревью.
- dgrauet/ltx-2-mlx: PR #167,
lastи отрицательные индексы кадров для якорных изображений. Мейнтейнер попросил перед слиянием одну правку, и я отправил её 3 октября. - github/spec-kit, microsoft/agent-framework и awslabs/mcp: предложенный объём работы в #4213 и планы исправления в #8909 и #4705. Жду ответа мейнтейнеров.
- deskflow/deskflow: первопричина #10068, падения на macOS. Поставлена метка, назначен исполнитель, ответа пока нет.
- github/copilot-cli: issue #5038, инструмент grep игнорирует
nбез дефиса. Поставлена метка, ответа пока нет. - wgsxm/PartCrafter: PR #46, запуск на Apple Silicon. Ответа пока нет.
Правило об ИИ есть у пяти из двенадцати: MLX, spec-kit, huggingface_hub, codebase-memory-mcp и Deskflow. В huggingface_hub я только открыл issue, а правило там касается пул-реквестов. В MLX я сам написал описание пул-реквеста и сообщение коммита, как требуют его правила, и в описании сказано, что сделал агент. В моём комментарии в spec-kit есть полная пометка, которую просит spec-kit, а в codebase-memory-mcp та одна строка, которую просит он, стоит в issue, в пул-реквесте и в каждом комментарии. Два моих ответа в codebase-memory-mcp ушли 28 сентября без этой строки, через неделю после того, как проект добавил правило; я добавил её 1 октября. Deskflow просит пометку в пул-реквестах. Мой комментарий там, черновик которого написал агент, ушёл без неё; я добавил строку 3 октября.
Ни в одном из двух комментариев, с которыми закрыли мои PR, ИИ не упоминается. agent-framework закрыл мой PR, потому что в более старом открытом PR было то же исправление, и я нашёл бы его, если бы поискал, прежде чем писать свой. Мейнтейнер MLX оценивал сам подход.
Что я изменил
- Прежде чем писать исправление, я ищу номер issue в открытых пул-реквестах и в ленте событий issue. Дубликат получился, потому что я этот шаг пропустил.
- В больших проектах я публикую план комментарием и не открываю пул-реквест, пока не ответит мейнтейнер. agent-framework, awslabs/mcp и spec-kit сейчас на этом этапе.
- Один открытый пул-реквест на проект за раз.
- Текст следует правилу каждого проекта. Если проект запрещает описания, написанные ИИ, как это делает MLX, я пишу их сам. spec-kit и codebase-memory-mcp получают пометку в том виде, в каком просят, а проект без правила обходится без строки с пометкой.
- Никаких трейлеров, если проект их не просит. В моих коммитах стоит только моё имя.
- Я не отправляю такую работу в проекты, правилам которых она не соответствовала бы. Rust, Kubernetes и Node.js запрещают написанные ИИ комментарии или ответы на ревью, transformers, trl и Node.js просят новичков не использовать агентов, а TypeScript не принимает работу по очереди задач.
Ограничения
Это опыт одного аккаунта за шесть дней. Эти 30 репозиториев выбрал я, и выборка смещена в сторону ИИ-инструментов, где правила встречаются чаще. Категории — мои собственные метки, и одно правило часто подходит под несколько. Всё прочитано 2 октября 2026 года, а в 16 из 19 файлы с правилами менялись за предыдущий месяц, так что часть написанного скоро устареет. Закреплённые ссылки показывают, что было в каждом файле в тот день.
Все 106 цитат, подсчёты и скрипт, который сверяет каждую цитату с её файлом, лежат в nefayran/oss-ai-rules.
Черновик этой заметки написан с помощью Claude Code (Claude Opus 5.5), который также собрал файлы с правилами и сверил с ними каждую цитату.