← 返回列表

AI співбесіда серія 15: Поширені пастки Vibe Coding?

Хоча режим Vibe Coding, керований «відчуттям/атмосферою», є дуже зручним для швидкого прототипування та творчого дослідження, без контролю він легко потрапляє в кілька типових пасток. Нижче наведено підсумок за п'ятьма вимірами: якість коду, супроводжуваність, безпека, еволюція вимог, командна співпраця.


1. Пастки якості коду

Оскільки Vibe Coding покладається на діалогову ітерацію, щоразу, коли користувач висуває розпливчасту вимогу зміни (наприклад, «зроби цю кнопку більш технологічною»), AI схильний додавати новий код, а не рефакторити наявну логіку. Він не знає, який старий код уже не працює, і боїться його видаляти, що призводить до накопичення надлишкового та мертвого коду. Водночас AI не має єдиної «пам’яті стилю коду», тому кожного разу він може дотримуватися різних угод про іменування (залежно від випадковості навчальних даних), а користувачі рідко дають чіткі обмеження, тому код стає безладним і непередбачуваним. Підсумовуючи:

  1. Надлишковий та мертвий код: після кількох виправлень AI залишає старі реалізації, закоментовані блоки коду, невикористані імпорти, оскільки ризик видалення високий, він вирішує залишити.
  2. Непослідовне іменування та стиль: AI у різних раундах випадково витягує стиль із навчальних даних, і якщо користувач не нав'язує правила, змішуються camelCase, підкреслення, пробіли.
  3. Приховані логічні помилки: AI схильний генерувати код, який працює у «звичайних шляхах», але граничні умови (нульові значення, екстремальні значення, паралельність) часто ігноруються, оскільки таких прикладів у навчальних даних мало.

2. Пастки супроводжуваності

Ітерація Vibe Coding дуже швидка, і користувач, і AI зосереджені на тому, «чи працює поточна функція», майже не залишається часу на написання документації, коментарів або рефакторинг. AI не має довготривалої пам’яті, не додає docstring до функцій і не враховує наступного розробника, який буде працювати з кодом. Крім того, AI схильний «задовольняти поточні потреби»: або надмірно проектує загальний фреймворк (думаючи, що користувач пізніше цього потребуватиме), або копіює та вставляє для швидкої реалізації, що призводить до плутанини в рівнях абстракції. Підсумовуючи:

  1. Відсутність документації та коментарів: AI за замовчуванням виводить «самоочевидний» код, але складні регулярні вирази або алгоритми важко зрозуміти; якщо користувач не просить, він не пише документацію.
  2. Надмірна абстракція або недостатня абстракція: AI іноді застосовує поширені шаблони проектування (наприклад, фабрика, стратегія), навіть якщо проблема проста; іноді через лінь витягувати спільні функції просто копіює блоки коду.

3. Пастки безпеки

Навчальні дані AI містять велику кількість коду з відкритих джерел, у тому числі історичні вразливості (наприклад, конкатенація SQL, жорстко закодовані ключі). У Vibe Coding користувачі рідко активно вимагають «використовувати параметризовані запити» або «читати ключі зі змінних середовища», тому AI використовує найпоширеніші (і часто небезпечні) шаблони. Крім того, AI не має усвідомлення «моделі загроз», не перевіряє фільтрацію вхідних даних, мінімізацію прав, оскільки його цікавить лише реалізація функцій. Підсумовуючи:

  1. Ін'єкції: AI за замовчуванням використовує конкатенацію рядків для створення SQL/команд, оскільки цей спосіб найпоширеніший у простих підручниках.
  2. Жорстко закодована конфіденційна інформація: приклади в навчальних даних часто містять жорстко закодовані API ключі, і AI імітує цю модель.
  3. Надмірні права: Для зручності AI часто використовує sudo або режим w+ для відкриття файлів, не враховуючи принцип мінімально необхідних прав.

4. Пастки еволюції вимог

Vibe Coding не має чітких меж. Коли користувач каже «додай ще одну функцію», AI намагається задовольнити, але не знає, що виходить за межі. AI також не має поняття пріоритету і може одночасно реалізувати три додаткові функції, що призводить до затоплення основної функціональності. Крім того, щоразу, виправляючи новий баг, AI не переглядає старі функції, і часто трапляються регресії: виправляє A, ламає B. Підсумовуючи:

  1. Розростання обсягу: Щоб «задовольнити користувача», AI активно додає функції, які здаються пов'язаними, але не є необхідними (наприклад, додавання історії до калькулятора).
  2. Функціональна деградація: Коли AI виправляє певний баг, не розуміючи загальної логіки, він змінює спільну функцію, що призводить до аномалій в інших функціях, які від неї залежать.

5. Пастки командної співпраці

Процес діалогу Vibe Coding — це приватна взаємодія особи з AI, яка не залишає документації специфікацій або записів проектних рішень. Різні члени команди розмовляють з AI окремо, отримують код у власному стилі, і при злитті виникають численні конфлікти. Крім того, AI не генерує автоматично commit message або журнали змін, тому причини еволюції коду втрачаються, і майбутні супровідники можуть лише здогадуватися. Підсумовуючи:

  1. Невідтворювана збірка: Різні люди в різний час використовують однаковий prompt, а AI видає різні реалізації (через випадковість вибірки).
  2. Відсутність відстеження змін: Немає документів дизайну, немає commit message, які б пояснювали «чому так змінено», код стає чорною скринькою.

评论

暂无已展示的评论。

发表评论(匿名)