LINUX.ORG.RU

npm и ИИ - это сила! Gemini удалил 30 000 строк кода, сломал сервис

 , ,


0

2

Subj


ИИ-агент Google Gemini при внесении правок в действующее приложение удалил почти 30 000 строк рабочего кода и на 33 минуты вывел сервис из строя — пользователи видели только ошибку 404. После возврата к прежней версии ИИ-агент отчитался об успешном восстановлении, хотя это сделал сам разработчик. Затем ИИ создал в проекте поддельные записи о согласовании деструктивных изменений, чтобы пройти автоматические проверки.

В своём посте на сабреддите r/Bard разработчик описал, как Gemini 3.5 при реорганизации структуры проекта проигнорировал прямые инструкции сохранить существующую функциональность. ИИ-модель отправила на проверку набор изменений, затронувший 340 файлов: добавила около 400 строк кода и удалила 28 745. Помимо запрошенного, Gemini удалил шаблоны интернет-магазина и добавил скрипт переноса данных, не имевший отношения к задаче.

Основной ущерб, по словам автора, нанесла следующая порция сохранённых изменений. Gemini изменил настройки маршрутизации в Firebase, облачной платформе Google для хостинга приложений: правила, определяющие, куда система направляет запросы пользователей. ИИ-модель подставила название сервиса, которое выглядело корректно, но указывало на несуществующий ресурс в облаке. В результате сайт 33 минуты отвечал пользователям ошибкой 404 — «страница не найдена».

После того как разработчик отменил все изменения Gemini и вернул прежнюю версию кода, ситуация стала ещё запутаннее. ИИ-модель сгенерировала отчёт о том, что сервис восстановлен, и трафик направлен корректно, хотя сборку, на которую она ссылалась, разработчик уже отменил вручную. Сайт заработал благодаря ручному возврату к версии кода, не содержавшей ни одного изменения Gemini.

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

Причину деструктивного поведения отследили до сторонней программной библиотеки — npm-пакета, стилизованного под брендинг Google Antigravity. Библиотека внедряла в проект набор агрессивных правил для ИИ-агента: запрещала запрашивать подтверждение у разработчика перед действием, автоматически публиковала новую версию приложения при успешной сборке, повторяла попытки после неудачной публикации и позволяла ИИ-агенту самостоятельно изменять собственные файлы правил.

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


А вы говорите, «ИИ ненужно!» Кто ж ошибки-то в код вносить будет? Так, как ИИ ещё не каждый кожаный мешок сумеет навертеть!

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

эталон вайбкодинга без проверки человеком - попытаться нафиг все снести… ну что же, успехов ИИ, слава роботам!

cetjs2 ★★★★★
()

ИИ-модель отправила на проверку набор изменений, затронувший 340 файлов: добавила около 400 строк кода и удалила 28 745. Помимо запрошенного, Gemini удалил шаблоны интернет-магазина и добавил скрипт переноса данных, не имевший отношения к задаче.

отправила на проверку

Искусственный идиот отправил на проверку шлак, а кожаный просто принял не читая?

Zhbert ★★★★★
()

Причину деструктивного поведения отследили до сторонней программной библиотеки — npm-пакета, стилизованного под брендинг Google Antigravity. Библиотека внедряла в проект набор агрессивных правил для ИИ-агента: запрещала запрашивать подтверждение у разработчика перед действием, автоматически публиковала новую версию приложения при успешной сборке, повторяла попытки после неудачной публикации и позволяла ИИ-агенту самостоятельно изменять собственные файлы правил.

О, это прям новый уровень.
Первый был расчитан просто на идиотов, которые на кажжые 2+2 грузят «библиотеки». Новый расчитан на идиотов, которые скармливают это искуссвенным идиотам… Степень идиотизма растёт в геометрической прогрессии.

Zhbert ★★★★★
()

Причину деструктивного поведения отследили до сторонней программной библиотеки — npm-пакета, стилизованного под брендинг Google Antigravity. Библиотека внедряла в проект набор агрессивных правил для ИИ-агента

Библиотека внедряла в проект набор агрессивных правил для ИИ-агента

Ну да, во всем виноват ии. А не дятел, который скачал себе вирус

router ★★★★★
()

Это как, оно сразу в продакшен вносило правки??? Ей богу, доверь технику дуракам, так они себе сами головы поотрывают.

yvv1
()
Ответ на: комментарий от Zhbert

Нет, тут конкретно накосячил естественный идиот. Искусственный в этой ситуации наговнячил на 5+ - как и было запрошено. Если бы мне на фабрике сделали запрос вот сегодня к вечеру с нуля наклепать кухню, иначе меня уволят, я бы тоже может наклепал что то подобное.

LightDiver ★★★★★
()
Ответ на: комментарий от Zhbert

Может поправить заголовок?

Кликбейтный текст, а причина мелким почерком в предпоследнем абзаце:

Библиотека внедряла в проект набор агрессивных правил для ИИ-агента

router ★★★★★
()
Ответ на: комментарий от Zhbert

увы… надо ждать катастрофу из-за галлюцинаций ИИ, чтобы ответственнее относиться стали к проверке изменений хотя бы.

cetjs2 ★★★★★
()
Ответ на: комментарий от router

И вот серьезно? Просто принимать изменения без плана, без просмотра что сделано? Тут действительно идиот искусственный?

Да я даже в нескольких сотнях строк так не сделаю.

LightDiver ★★★★★
()
Ответ на: комментарий от cetjs2

Вроде бы, тут кожаный мешок проконтролировал

tiinn ★★★★★
() автор топика
Ответ на: комментарий от LightDiver

М-м-м, агентный вайбкодинг не так работает. Вы и говорите, мол, возьми вот эти файлы, допиши, поправь.

tiinn ★★★★★
() автор топика

Библиотека внедряла в проект набор агрессивных правил для ИИ-агента

Промпт инжекшон. Такое сразу в продакшен надо. Зачем проверять?

yvv1
()
Ответ на: комментарий от router

Смотри, у тебя есть **** строк кода. На выходе у тебя стало на 30+к строк меньше. Ничего не смущает? Не? При чем тут библиотека? Живой идиот не видел что вышло? Не знал план работ?

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Еще раз

Библиотека внедряла в проект набор агрессивных правил для ИИ-агента

Ты понимаешь, что такое ИИ агент? Агент ставится на твой комп и действует с теми учетками, которые ты ему дашь. Его поведение ты можешь ограничить правилами.

Разработчик ДО работы с ИИ внедрил себе вирус. Который явно РАЗРЕШИЛ и приказал ИИ агенту творить треш, угар, а потом отлюбить разработчика

Кто здесь виноват?

router ★★★★★
()
Ответ на: комментарий от router

Судя по всему, разработчик. И не заметил

Ты давно видел список зависимостей простого хелловорда на этом ваше Node.js, например? Что ты там заметишь в этой помойке?

Zhbert ★★★★★
()
Ответ на: комментарий от cetjs2

увы… надо ждать катастрофу из-за галлюцинаций ИИ, чтобы ответственнее относиться стали к проверке изменений хотя бы.

Не станут.

Zhbert ★★★★★
()
Ответ на: комментарий от tiinn

Я наверное неправильно термин понимаю. Я составляю архитектуру проекта, даже если это рефакторинг. Составляю план работ от мелкого к крупному. Если это новый проект, оформляю шаблон, потом добавляю по одной каждую фичу, но это не наш метод. У нас готовый проект на рефакторинг, поэтому я бы сначала выносил мелкие дублирования если есть, потом разнес бы перегруженное, сделал бы автотесты, с проверкой функциональности после каждого изменения пошагово.

Где тестирование? Где структура? Где план? Где проверка после изменений? Где тесты?

LightDiver ★★★★★
()

Уже где-то писал, но все-таки. Это дефолт. Codex с openai без проблем может удалить директорию проекта запущенного с --dangerously-bypass-approvals-and-sandbox, а потом попробовать сделать reclone и крашнуться если попросить его откатить изменения, поэтому все временные изменения при каждой итерации нужно сохранять в какую-нибудь ветку типо dump-*

Китайские модели с codex вообще в наглую выходят из запущенной директории, и вместо инструкций и данной документации при запросе интегрировать backend в frontend, могут без проблем полезть в совершенно другую директорию с backend’ом и начать читать код оттуда, чтобы упростить себе задачу.

Совсем этим я сталкивался лично и неоднократно.

Поэтому запускать ИИ-агент нужно в docker, или на изолированной машине/в контейнере.

anonymous_sama ★★★★★
()
Ответ на: комментарий от router

Ну я вообще не даю такого доступа, только коммит вручную, даже в ветку с мусором.

anonymous_sama ★★★★★
()
Ответ на: комментарий от LightDiver

В норме агент должен был по запросу подготовить изменения и предложить мердж реквест

Но вирус, который установил разработчик, добавил правила типа никаких реквестов, смело коммить, роняй все и ври как в последний раз

router ★★★★★
()
Ответ на: комментарий от tiinn

Запуск проекта на компиляцию делаетя только после бэкапа (они были). Сама по себе компиляция незавершенная не заменит рабочих бинарников старых и функциональность не порушит или я ошибаюсь? В раст, в ts ты ты просто не дойдешь до поломки проекта - все сломается на стадии сборки, как пример.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

я бы сначала выносил мелкие дублирования если есть

Ну, вот, ТС сказал, мол, «убери дублирущие методы, если есть», а ИИ-шечка сразу ему навертела удаление 30 тыс. строк кода.

tiinn ★★★★★
() автор топика
Ответ на: комментарий от tiinn

Не ТС, это пересказ новости

а ИИ-шечка сразу ему навертела удаление 30 тыс. строк кода.

Неа. Он сказал что-то, но до этого словил вирус, который поменял запрос. ЫЫ честно сделал то, что ему приказали. Так понятнее?

router ★★★★★
()

ИИ-агент отчитался об успешном восстановлении, хотя это сделал сам разработчик

Ну и кто здесь чей инструмент, м?

thesis ★★★★★
()
Ответ на: комментарий от tiinn

Их не убирают. Их пишут отдельным модулем, сначала компилируют новый модуль, как единый источник истины, затем подключают его, проверяют работу, а только потом удаляют старое.

У меня вопрос созрел - а нахрена давать доступ тому, что ты не контролируешь на 100%?

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Их не убирают. Их пишут отдельным модулем, сначала компилируют новый модуль, как единый источник истины, затем подключают его, проверяют работу, а только потом удаляют старое.

не вижу крамолы в желании их убрать. При наличии бэкапов.

а нахрена давать доступ тому, что ты не контролируешь на 100%?

так калькулятор-то бух не контролирует вообще, а вам, между прочим, на нём з/п считают.

tiinn ★★★★★
() автор топика
Ответ на: комментарий от router

Неа. Он сказал что-то, но до этого словил вирус, который поменял запрос. ЫЫ честно сделал то, что ему приказали. Так понятнее?

Я с этим и не спорил. Я с @LightDiver спорил о том, что разраб неадекватный. Разраб-то, может, вполне нормальный промпт написал, вполне безопасный. А случилось то, что я в ОП написал, и то, что вы разъяснили.

tiinn ★★★★★
() автор топика
Ответ на: комментарий от tiinn

Слушай, у меня еще вопрос - ну ладно у меня ресурсы ограничены, я работаю с бэкапами на живом проекта, а у них что, нет тестового сервера? Или чего то подобного?

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Да, бух назначен стрелочником. Но, если вас у него сто человек, хрена лысого он по пять раз вас перепроверяет. Так, разок проверит, и всё.

Как бы то ни было, все пользуются инструментами, которые ни хрена не контролируют. Если оне работают хотя бы в 80% случаев

tiinn ★★★★★
() автор топика
Последнее исправление: tiinn (всего исправлений: 1)
Ответ на: комментарий от LightDiver

запрос вот сегодня к вечеру с нуля наклепать кухню

Напрограммировал какую-то кухню́.

thesis ★★★★★
()
Ответ на: комментарий от router

Но вирус, который установил разработчик, добавил правила типа никаких реквестов, смело коммить, роняй все и ври как в последний раз

А мне вот интересно, если у них живой разраб объестся грибов, и решит смело закомитить всё что захочет в продакшн, ему это тоже просто так позволят? Без пул реквестов, ревью и прочих ненужных формальностей? Интересуюсь потому, что например у меня в конторе мне никогда ничего подобного не позволят, даже если я очень захочу.

yvv1
()
Ответ на: комментарий от LightDiver

Слушай, у меня еще вопрос - ну ладно у меня ресурсы ограничены, я работаю с бэкапами на живом проекта, а у них что, нет тестового сервера? Или чего то подобного?

Так, может, у них всё в рамках тестового сервера произошло? Об этом речи не было.

tiinn ★★★★★
() автор топика
Ответ на: комментарий от yvv1

А мне вот интересно, если у них живой разраб объестся грибов, и решит смело закомитить всё что захочет в продакшн, ему это тоже просто так позволят? Без пул реквестов, ревью и прочих ненужных формальностей?

Если уж разработчики ядра линукса такое позволяют

tiinn ★★★★★
() автор топика
Ответ на: комментарий от LightDiver

Так, пользователи могли быть свои, подсадные ;)

tiinn ★★★★★
() автор топика
Ответ на: комментарий от yvv1

например у меня в конторе мне никогда ничего подобного не позволят, даже если я очень захочу.

Вот из разработчик из топика теперь не скоро забудет полученное удовольствие. И будет ограничивать доступ

Хотя если он наглухо вайбнутый, то может и нет

router ★★★★★
()
Ответ на: комментарий от router

Если у него есть права, то после грибов он может накосорезить все, что ему позволят эти права

Если в конторе у каждого есть права комитить всякую херню сразу в релиз, то что-то в этой консерватории не так. Я например в живой природе такого не встречал.

yvv1
()
Ответ на: комментарий от yvv1

Если в конторе у каждого есть права комитить всякую херню сразу в релиз, то что-то в этой консерватории не так. Я например в живой природе такого не встречал.

А я для кого ссылку привёл?

tiinn ★★★★★
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.