AI intervju serija 15: Koje su uobičajene zamke Vibe Codinga?
Iako je način "osjećaj/atmosfera vođen" Vibe Codinga ugodan pri brzom prototipiranju i kreativnom istraživanju, ako se ne kontrolira, lako upada u nekoliko tipičnih zamki. U nastavku se sažimaju iz pet dimenzija: kvaliteta koda, održivost, sigurnost, evolucija zahtjeva, timska suradnja
1. Zamke kvalitete koda
Jer Vibe Coding ovisi o dijalogom vođenoj iteraciji, svaki put kada korisnik postavi nejasan zahtjev za izmjenom (poput "neka ovaj gumb bude više tehnološki"), AI će težiti dodavanju novog koda umjesto refaktoriranja postojeće logike. Ne zna koji je stari kod već nevažeći i ne usuđuje se lako brisati, što dovodi do nakupljanja suvišnog i mrtvog koda. Istovremeno, AI nema jedinstvenu "memoriju stila koda", svaki put generirajući može slijediti različite konvencije imenovanja (ovisno o slučajnosti uzoraka za obuku), a korisnik rijetko daje jasna ograničenja normi, što na kraju čini kod neurednim i nepredvidivim. Sažeto:
- Suvišni i mrtvi kod: Nakon višestrukih popravaka, AI ostavlja stare implementacije, zakomentirane blokove koda, nekorištene uvoze, jer je rizik brisanja visok, odlučuje ih zadržati.
- Nedosljedno imenovanje i stil: AI u različitim rundama nasumično izvlači stil iz podataka za obuku, a ako korisnik ne nametne norme, miješaju se camelCase, snake_case i razmaci.
- Skrivene logičke greške: AI teži generiranju koda točnog za "uobičajene putove", ali rubni uvjeti (null vrijednosti, ekstremne vrijednosti, konkurencija) često su zanemareni jer je takvih primjera malo u podacima za obuku.
2. Zamke održivosti
Brzina iteracije Vibe Codinga je izuzetno visoka, i korisnik i AI fokusirani su na "je li trenutna funkcija dostupna", gotovo da nema vremena za pisanje dokumentacije, komentara ili refaktoriranje. AI nema dugoročno pamćenje, neće aktivno dodavati docstring funkcijama, niti uzimati u obzir sljedećeg developera koji preuzima kod. Osim toga, AI teži "riješiti trenutnu potrebu", ili pretjerano dizajnira opći okvir (misleći da će korisnik trebati kasnije), ili kopira i zalijepi brzu implementaciju, što dovodi do kaotičnih razina apstrakcije. Sažeto:
- Nedostatak dokumentacije i komentara: AI prema zadanim postavkama izbacuje "samorazumljiv" kod, ali stvarno složeni regex ili algoritmi teško su razumljivi; korisnik ne traži, pa AI ne piše dokumentaciju.
- Pretjerana ili nedovoljna apstrakcija: AI ponekad primjenjuje uobičajene obrasce dizajna (poput tvornice, strategije) čak i za jednostavne probleme; ponekad zbog lijenosti ne izdvaja zajedničke funkcije, već izravno kopira blokove koda.
3. Sigurnosne zamke
Skup podataka za obuku AI-a sadrži mnogo koda otvorenog koda, uključujući povijesne ranjivosti (poput SQL spajanja, tvrdo kodiranih ključeva). U Vibe Codingu, korisnik rijetko aktivno zahtijeva "koristi parametrizirani upit" ili "čitaj ključeve iz varijabli okruženja", pa AI usvaja najčešći (često nesigurni) obrazac. Osim toga, AI nema svijest o "modelu prijetnje", neće aktivno provjeravati filtriranje unosa, minimiziranje dozvola, jer ga zanima samo implementacija funkcije. Sažeto:
- Ranjivosti injekcije: AI prema zadanim postavkama koristi konkatenaciju stringova za konstrukciju SQL/naredbi, jer je taj način najčešći u jednostavnim tutorijalima.
- Tvrdo kodirane osjetljive informacije: Primjeri u podacima za obuku često imaju tvrdo kodirane API ključeve, pa AI oponaša taj obrazac.
- Pretjerane dozvole: Radi praktičnosti, AI često koristi
sudoili načinw+za otvaranje datoteka, ne uzimajući u obzir minimalno potrebne dozvole.
4. Zamke evolucije zahtjeva
Vibe Coding nema jasne granice. Kad korisnik kaže "dodaj još jednu funkciju", AI će se potruditi ispuniti zahtjev, ali ne zna što je "izvan opsega". AI također nema koncept prioriteta, može istovremeno implementirati tri dodatne značajke, što dovodi do potapanja osnovne funkcije. Istovremeno, svaki put kada ispravi novu grešku, AI ne pregledava stare funkcije, često se javlja regresija gdje popravi A, a pokvari B. Sažeto:
- Proširenje opsega: Kako bi "zadovoljio korisnika", AI aktivno dodaje naizgled relevantne ali nepotrebne funkcije (npr. kalkulator dodaje povijest).
- Regresija značajki: Kada AI popravlja određenu grešku, zbog nepoznavanja globalne logike, mijenja jednu zajedničku funkciju, što uzrokuje abnormalnosti u drugim funkcijama koje ovise o njoj.
5. Zamke timske suradnje
Proces dijaloga Vibe Codinga je privatna interakcija pojedinca s AI-jem, bez ostavljanja dokumentacije specifikacija ili zapisa odluka o dizajnu koji se mogu prenijeti. Različiti članovi tima odvojeno razgovaraju s AI-jem, dobivaju kod u vlastitom stilu, što pri spajanju izaziva brojne sukobe. Osim toga, AI neće automatski generirati poruke commit-a ili dnevnike promjena, gubi se obrazloženje evolucije koda, pa kasniji održavatelji moraju nagađati. Sažeto:
- Neponovljive izgradnje: Različite osobe, u različito vrijeme, koristeći isti prompt, AI će proizvesti različite implementacije (zbog slučajnosti uzorkovanja).
- Nedostatak praćenja promjena: Nema dokumentacije dizajna, nema poruka commit-a koje objašnjavaju "zašto je ovo promijenjeno", kod postaje crna kutija.
评论
暂无已展示的评论。
发表评论(匿名)