Проблемы вайбкодинга и написания кода с помощью ИИ 🤖
👁 10
ИИ ускоряет разработку, но качество кода само не появляется из ниоткуда. Расскажу что часто ломается и как чинить.
1. Код есть, тестов нет. ИИ охотно генерирует модули, но проверять себя не предлагает. Всё работает, пока не сломается стык компонентов. Как чинить: начните с тестов на хрупкие места (таймауты, ошибки внешних процессов) и требуйте тест с каждой фичей. Хватит
pytest и go test.
2. Копипаста вместо архитектуры. Скопировать функцию в соседний модуль ИИ проще, чем вынести общее. Как чинить: смотрите на дубли при ревью, осознанные оставляйте. Ищут jscpd и dupl.
3. Несуществующие пакеты и методы. Выглядит правдоподобно, падает при запуске. Выдуманное имя пакета могут занять злоумышленники. Как чинить: проверяйте каждую зависимость, есть ли она, кто автор, свежая ли.
pip index versions имя или go list -m -versions модуль
Интересный факт: Различные LLM при генерации кода регулярно галлюцинировали несуществующее название пакета huggingface-cli как отдельной библиотеки для установки через менеджер пакетов. Злоумышленники заметили эту галлюцинацию, зарегистрировали пустое имя huggingface-cli в публичных репозиториях и загрузили туда вредоносный код. Так появился Slopsquatting - метод кибератак, который использует галлюцинации ИИ.
4. Хелперы ради хелперов. Из трёх строк получается метод, который вызывается один раз. Как чинить: выносите, только если вызов минимум дважды или это упрощает чтение.
5. Огромные try/except. Реальная причина сбоя теряется. В Go то же самое: _ вместо ошибки. Как чинить: ставьте try вокруг одной строки, ловите конкретные исключения, в Go оборачивайте через fmt.Errorf("...: %w", err). Ловят ruff и errcheck.
6. Лестницы из if/else. Пять уровней вложенности и ветки на невозможные случаи. Как чинить: ранние возвраты, таблицы вместо цепочек условий, удаление лишних проверок.
pythonPLAN_DISCOUNT = {"pro": 0.2, "basic": 0.1}
def discount(user):
if user is None or not user.is_active:
return 0
return PLAN_DISCOUNT.get(user.plan, 0)7. Мусор, который никто не удалил. Заброшенные заготовки и неиспользуемый код. Как чинить: периодически чистите проект через vulture, ruff и golangci-lint.
8. Секреты и гигиена. Токены открытым текстом, версии не зафиксированы, коммитов нет. Как чинить: ротируйте секреты, фиксируйте версии (uv lock, go.sum), ищите утечки через gitleaks.
9. Нет правил игры для ИИ. Как чинить: заведите CLAUDE.md или AGENTS.md: строгая типизация, короткие функции, никаких голых исключений, линтеры в строгом режиме. Где такой файл был, код заметно чище. ИИ пишет так, как ему разрешили.
10. Файл правил не резиновый. ИИ читает его целиком, и чем он длиннее, тем хуже соблюдается. Как чинить: выносите процедуры в скилы. Это папка с файлом SKILL.md. В контексте всегда только описание, а полный текст подгружается, когда задача подходит.
markdown---
name: add-dependency
description: Используй при добавлении новой зависимости
---
1. Проверь, что пакет существует
2. Посмотри автора и дату релиза
3. Если пакету меньше года, спроси меня
4. Зафиксируй версию, запусти pip-audit
Качество дают тесты, линтеры, правила и скилы. Ревью и дисциплина остаются за вами.1
Supreme Commander Two
Подписаться