← 返回列表

AI serija intervjua 15: Koje su uobičajene zamke Vibe Codinga?

Iako je model "osjećaj/atmosfera" Vibe Codinga vrlo ugodan pri brzom razvoju prototipa i kreativnom istraživanju, ako se ne kontroliše, lako upada u nekoliko tipičnih zamki. U nastavku se sumiraju iz pet dimenzija: kvalitet kôda, održivost, sigurnost, evolucija zahtjeva, timska saradnja


1. Zamke kvaliteta kôda

Zato što se Vibe Coding oslanja na dijalog i iteraciju, korisnik svaki put postavlja nejasne zahtjeve za izmjenom (npr. "neka ovo dugme bude više tehnološki"), AI će težiti dodavanju novog kôda umjesto refaktorisanja postojeće logike. Ne zna koji je stari kôd neaktivan i teško ga briše, što dovodi do nagomilavanja suvišnog i mrtvog kôda. Istovremeno, AI nema ujednačeno "pamćenje stila kôda", pa svaka generacija može slijediti različite konvencije imenovanja (zavisno od slučajnosti u podacima za obuku), a korisnici rijetko daju jasna pravila. Konačno, kôd postaje neuredan i nepredvidiv. Ukratko:

  1. Suvišan i mrtvi kôd: Nakon više popravki, AI ostavlja stare implementacije, blokove kôda isključene komentarom, neiskorištene uvoze, jer je rizik brisanja visok pa ih zadržava.
  2. Nedosljedno imenovanje i stil: AI nasumično uzima stilove iz podataka za obuku u različitim rundama; ako korisnik ne nametne pravila, miješaju se camelCase, podvlake i razmaci.
  3. Skrivene logičke greške: AI teži generisanju kôda koji je ispravan za "uobičajeni put", ali rubni uvjeti (null vrijednosti, ekstremne vrijednosti, konkurencija) često su zanemareni jer je takvih primjera u podacima za obuku malo.

2. Zamke održivosti

Vibe Coding iterira izuzetno brzo, korisnik i AI se fokusiraju na to "da li je trenutna funkcija upotrebljiva", gotovo bez vremena za pisanje dokumentacije, komentara ili refaktorisanje. AI nema dugoročno pamćenje, neće aktivno dodavati docstring za funkcije, niti razmišljati o sljedećem programeru koji će preuzeti posao. Osim toga, AI teži "rješavanju trenutnog zahtjeva" i ili pretjerano dizajnira univerzalni okvir (misleći da će korisniku trebati kasnije) ili kopira i lijepi za brzu implementaciju, što dovodi do haotičnog nivoa apstrakcije. Ukratko:

  1. Nedostatak dokumentacije i komentara: AI podrazumijevano generiše "samoočigledan" kôd, ali složeni regularni izrazi ili algoritmi su teško razumljivi; ako korisnik ne zatraži, AI neće pisati dokumentaciju.
  2. Pretjerana apstrakcija ili nedovoljna apstrakcija: AI ponekad primjenjuje uobičajene dizajn uzorke (npr. fabrika, strategija) čak i za jednostavne probleme; ponekad, radi lijenosti, ne izdvaja zajedničke funkcije već direktno kopira blokove kôda.

3. Sigurnosne zamke

Podaci za obuku AI-a uključuju mnoštvo open-source kôda, među kojima ima i starih ranjivosti (npr. SQL konkatenacija, tvrdo kodirani ključevi). U Vibe Codingu, korisnici rijetko traže "korištenje parametriziranih upita" ili "čitanje tajni iz varijabli okruženja", pa AI primjenjuje najčešći (i često nesigurni) obrazac. Osim toga, AI nema svijest o "modelu prijetnji" i ne provjerava aktivno filtriranje ulaza ili minimalizaciju dozvola, jer ga zanima samo implementacija funkcionalnosti. Ukratko:

  1. Injekcione ranjivosti: AI podrazumijevano koristi konkatenaciju stringova za konstrukciju SQL/naredbi, jer je to najčešći obrazac u jednostavnim tutorijalima.
  2. Tvrdo kodiranje osjetljivih informacija: Primjeri u podacima za obuku često sadrže API ključeve upisane direktno, pa AI oponaša taj obrazac.
  3. Pretjerane dozvole: Radi lakšeg rada, AI često koristi sudo ili w+ način otvaranja fajlova, ne vodeći računa o minimalnim potrebnim dozvolama.

4. Zamke evolucije zahtjeva

Vibe Coding nema jasne granice. Korisnik kaže "dodaj još jednu funkciju", AI će se potruditi, ali ne zna šta je "van okvira". AI takođe nema koncept prioriteta, pa može istovremeno implementirati tri sporedne karakteristike, što potopi osnovne funkcije. Prilikom svake popravke greške, AI ne pregledava stare funkcije, što često dovodi do regresije (popravi A, pokvari B). Ukratko:

  1. Proširenje opsega: Da bi "zadovoljio korisnika", AI aktivno dodaje naizgled povezane ali neobavezne funkcije (npr. kalkulator dobija historiju).
  2. Degradacija funkcija: Prilikom popravke greške, AI ne poznaje globalnu logiku, izmijeni zajedničku funkciju, što dovedi do neispravnosti drugih funkcija koje zavise od nje.

5. Zamke timske saradnje

Proces Vibe Codinga je privatna interakcija između pojedinca i AI-a, bez ostavljanja prenosivih specifikacija ili zapisa o odlukama. Različiti članovi tima razgovaraju s AI-om nezavisno, dobijajući kôd u različitim stilovima, što pri spajanju izaziva brojne konflikte. Osim toga, AI ne generiše automatski commit poruke ili dnevnike promjena, pa se razlozi evolucije kôda gube, a kasniji održavatelji mogu samo nagađati. Ukratko:

  1. Neponovljive izgradnje: Različite osobe u različito vrijeme koristeći isti prompt, AI će dati različite implementacije (zbog slučajnosti uzorkovanja).
  2. Nedostatak praćenja promjena: Nema dokumentacije o dizajnu, nema commit poruka koje objašnjavaju "zašto je ovo promijenjeno", kôd postaje crna kutija.

评论

暂无已展示的评论。

发表评论(匿名)