AI интервју серија 15: Кои се вообичаените замки на Vibe Coding?
Режимот на Vibe Coding „чувство/атмосфера“ иако е одличен за брз прототип и креативно истражување, без контрола лесно може да доведе до неколку типични замки. Подолу се сумирани пет димензии: квалитет на код, одржливост, безбедност, еволуција на барањата, тимска соработка
1. Замки на квалитетот на кодот
Бидејќи Vibe Coding се потпира на дијалошка итерација, секој пат кога корисникот дава нејасно барање за промена (на пример, „направи го ова копче да изгледа потехнолошки“), AI има тенденција да додава нов код наместо да го реструктурира постоечкиот. Не знае кој стар код е веќе бескористен и не се осмелува лесно да го избрише, што доведува до акумулација на непотребен и мртов код. Во исто време, AI нема унифицирана „меморија за стил на код“; секое генерирање може да следи различни конвенции за именување (во зависност од случајноста на примероците за обука) и ретко корисникот дава јасни ограничувања, што резултира со збунет и непредвидлив код. Сумирано:
- Непотребен и мртов код: По повеќекратни поправки, AI остава стари имплементации, коментирани блокови код и неискористени импорти, бидејќи ризикот од бришење е висок, па одлучува да ги задржи.
- Неконзистентно именување и стил: AI во различни рунди случајно извлекува стилови од податоците за обука; ако корисникот не наметне стандарди, се мешаат camelCase, underscore и prazni mesta.
- Скриени логички грешки: AI има тенденција да генерира код што е точен за „вообичаените патеки“, но граничните услови (нула вредности, екстремни вредности, конкурентност) често се игнорираат бидејќи ваквите примери се поретки во податоците за обука.
2. Замки на одржливоста
Брзината на итерација на Vibe Coding е многу висока, корисникот и AI се фокусираат на тоа дали „моменталната функционалност е употреблива“, скоро нема време за пишување документација, коментари или реструктурирање. AI нема долгорочна меморија, не додава активно docstring за функциите и не го зема предвид следниот развивач што ќе го преземе кодот. Дополнително, AI има тенденција да „реши моментална потреба“ или да предизајнира некоја општа рамка (мислејќи дека корисникот подоцна ќе има потреба), или да копира-залепи брза имплементација, што води до збунета апстракција. Сумирано:
- Недостаток на документација и коментари: AI стандардно испушта „самообјаснувачки“ код, но сложените регуларни изрази или алгоритми се тешки за разбирање; без барање од корисникот, не пишува документација.
- Претерана апстракција или недоволна апстракција: AI понекогаш користи вообичаени дизајнерски шаблони (како Factory, Strategy) дури и за многу едноставни проблеми; понекогаш, бидејќи е мрзлив да извлече заедничка функција, директно копира блокови код.
3. Безбедносни замки
Податоците за обука на AI содржат многу open source код, меѓу кои има историски ранливости (како SQL конкатенација, хардкодирани клучеви). Во Vibe Coding, корисникот ретко активно бара „користење параметризирани прашања“ или „читање клучеви од променливи на околина“, па AI го користи најчестиот (а често и небезбеден) модел. Покрај тоа, AI нема свест за „модел на закани“, не проверува активно филтрирање на влезни податоци или минимизирање на дозволи, бидејќи е фокусиран само на имплементација на функцијата. Сумирано:
- Ранливости од инјекции: AI стандардно користи конкатенација на стрингови за конструкција на SQL/команди, бидејќи тоа е најчесто во лесните упатства.
- Хардкодирани чувствителни информации: Примерите во податоците за обука често имаат запишани API клучеви, AI го имитира тој модел.
- Прекумерни дозволи: За полесно, AI често користи
sudoили режимw+за отворање датотеки, без да ги земе предвид минималните потребни дозволи.
4. Замки на еволуцијата на барањата
Vibe Coding нема јасни граници. Корисникот кажува „додади уште една функција“, AI се труди да ја исполни, но не знае што е „надвор од опсегот“. AI исто така нема концепт на приоритети, може истовремено да имплементира три дополнителни функции, што доведува до потиснување на основната функционалност. Во исто време, при секоја поправка на нов баг, AI не ги прегледува старите функционалности, често резултирајќи со регресии каде што поправањето на А го расипува Б. Сумирано:
- Ширење на опсегот: За да го задоволи корисникот, AI активно додава функции што изгледаат релевантно но не се неопходни (на пример, калкулатор со историја).
- Функционална регресија: При поправка на одреден баг, AI, бидејќи не ја разбира глобалната логика, менува заедничка функција, што предизвикува грешки во други функции што зависат од неа.
5. Замки на тимска соработка
Процесот на дијалог на Vibe Coding е приватна интеракција помеѓу поединецот и AI, без да остави пренослива спецификација или евиденција на дизајнерски одлуки. Различни членови на тимот водат дијалози со AI одделно, добиваат кодови во различни стилови, а при спојување конфликтите се многубројни. Дополнително, AI не генерира автоматски commit пораки или дневници на промени, па причините за еволуција на кодот се изгубени, а подоцнежните одржувачи мора да нагаѓаат. Сумирано:
- Нерепродуцирачки изградби: Различни луѓе во различно време користејќи ист промпт, AI дава различни имплементации (поради случајност при земање примероци).
- Недостаток на следење промени: Без дизајнерска документација, без commit пораки кои објаснуваат „зошто е ова променето“, кодот станува црна кутија.
评论
暂无已展示的评论。
发表评论(匿名)