Разбираем, почему AI-ассистированные проекты блокируют в сообществах. Узнайте, как отличить качественный код от «сгенерированного мусора» и что делать разработчику.
Вы написали open-source проект с помощью AI, но вас забанили на Reddit и Hacker News? Знакомая ситуация. В статье разберём, почему сообщества отвергают AI-ассистированные проекты, и предложим критерии, которые отличают качественную работу от автоматически сгенерированного мусора.
Я работал над Open Vectorizer — движком для векторизации растровых изображений в SVG, написанным на Rust. Проект компилируется в WebAssembly, имеет воспроизводимый бенчмарк и конкурирует с Potrace и VTracer. Я хотел поделиться им, найти контрибьюторов. И тут начались проблемы.
Open Vectorizer идеально подходил для Show HN: open source, технический, интересный алгоритм, бенчмарки. Но Hacker News временно ограничил Show HN для новых пользователей из-за наплыва незнакомых с сообществом людей. Справедливо, но досадно.
Попробовал r/rust. Пост автоматически удалили. Сабреддит требует сертифицировать, что проект не содержит значительного AI-контента. Я не мог этого гарантировать: Open Vectorizer разрабатывался с существенной AI-помощью. Пришлось отказаться.
Даже в r/opensource, где MIT-лицензия и поиск контрибьюторов, правила гласят: «Весь AI-контент — низкокачественный и заслуживает бана». Я оценил иронию: у меня open-source проект, я ищу людей, но сообщества не дают рассказать о нём, потому что машины помогли писать код.
Я понимаю, почему существуют эти правила. AI сделал производство «объектов, похожих на софт», невероятно дешёвым. Можно попросить агента построить базу данных, опубликовать 20 000 строк на GitHub через час и не знать, работает ли это. Сообщества завалены таким мусором. Но фильтр «использовался ли AI?» — плохой прокси для «это низкокачественный мусор?». Это не одно и то же.
Представьте пять разработчиков:
Какие проекты AI-сгенерированы? Очевидная разница между D и E. Но проводить границу по количеству напечатанных символов — неверно. И это различие будет только размываться.
Первая версия Open Vectorizer была недостаточно хороша. Она следовала обычному пайплайну: найти границы пикселей, упростить, подогнать кривые. Результаты были терпимыми, но не отличными: круги не круглые, геометрия повреждена.
Позже я вернулся к задаче с AI-помощью. Мы исследовали, не использовать ли машинное обучение. Обсуждали обучение маленькой vision-модели на синтетических данных SVG→PNG. Возможно, сработало бы, но я решил иначе.
Вместо этого алгоритм был перепроектирован. Ключевое осознание: антиалиасные пиксели — не просто шум, они содержат информацию о покрытии геометрии. Open Vectorizer теперь использует эту информацию для восстановления границ с субпиксельной точностью, обнаруживает углы и примитивы, генерирует кандидаты, растеризует их и сравнивает с исходником. Так он может превратить растровый круг в настоящий SVG-круг, а не в набор кривых Безье.
AI помог разработать эту систему. Сам векторизатор AI не использует. Так является ли Open Vectorizer AI-сгенерированным? Формально да. Но это описание ничего не говорит о его качестве.
При подготовке визуального сравнения AI-агент обнаружил, что наш подсчёт узлов был неверным. Разные SVG-генераторы закрывают пути по-разному. Бенчмарк случайно давал Open Vectorizer на один узел меньше, а Potrace — на один больше. Неудобный баг, когда пытаешься показать, что твой софт проще. Мы исправили, перегенерировали таблицы. Числа Open Vectorizer ухудшились: VTracer начал обходить его по числу узлов в 5 случаях из 17 вместо 2. Мы задокументировали причины и добавили в TODO. Точность при этом воспроизвелась идеально. Вот процесс разработки, который я хочу видеть, независимо от того, содержит ли человек, нашедший баг, углерод.
Возможно, вопросы об AI-ассистированных open-source проектах должны быть другими. Вместо «Писал ли AI значительные части?» спросите:
Эти вопросы говорят о проекте гораздо больше. И они одинаково применимы к человеческому коду. Люди, кстати, производят ужасный код задолго до ChatGPT.
Это не аргумент, что AI-код автоматически хорош. Наоборот. Если AI-агент ввёл уязвимость — это моя проблема. Если алгоритм непонятен — я не должен его публиковать. Если он выдумал результаты бенчмарка — я отвечаю за ложную информацию. Использование AI не снижает стандарты. Оно увеличивает бремя на мейнтейнера доказать, что результат работает. Вот почему важны воспроизводимость, тесты, признание превосходства конкурентов. «Я использовал AI» — не защита от плохой инженерии. Но и не должно автоматически дисквалифицировать хорошую.
Самое странное: я хочу, чтобы Open Vectorizer стал менее зависим от меня и моих AI-агентов. Я хочу, чтобы кто-то, разбирающийся в вычислительной геометрии, сказал, что подгонка кривых глупая. Чтобы Rust-разработчик ускорил декомпозицию покрытия. Чтобы эксперт по SVG улучшил восстановление штрихов. Чтобы кто-то предложил алгоритм, который я не рассматривал. Я хочу людей-контрибьюторов. Но чтобы их найти, я должен показать проект людям. Категорическое отвержение AI-ассистированных проектов создаёт странный цикл: проекты, разработанные с AI, имеют меньше шансов стать коллаборативными. Это контрпродуктивно.
Нам нужно лучшее различие. Не «человеческое vs AI», а «поддерживаемая инженерия vs сгенерированный мусор». Кто-то принимал решения? Оценивал вывод? Понимал его? Тестировал? Будет поддерживать? Может защитить утверждения? Несёт ответственность? Эти вопросы сложнее модерировать. Но они важны. AI-ассистированная разработка никуда не денется. И по мере улучшения инструментов определение того, напечатана ли функция человеком, сгенерирована Copilot или реализована агентом, станет бессмысленным. Софт всё равно должен работать. Кто-то должен нести ответственность. И если он делает что-то интересное, я хочу иметь возможность рассказать об этом другим разработчикам.
Хочешь закрепить знания на практике?
Решай задачи на Algolit — интерактивная платформа для обучения
Начать бесплатно →