← 返回列表

AI serija intervjua 15: Koje su uobičajene zamke Vibe Coding-a?

Iako je "osećaj/atmosfera" režim Vibe Coding-a veoma zabavan pri brzom prototipiranju i kreativnom istraživanju, ako se ne kontroliše, lako upada u nekoliko tipičnih zamki. U nastavku sumiramo iz pet dimenzija: kvalitet koda, održivost, bezbednost, evolucija zahteva, timski rad


1. Zamke kvaliteta koda

Zato što se Vibe Coding oslanja na iteraciju kroz dijalog, korisnik svaki put daje nejasne zahteve za izmenama (poput "neka ovo dugme izgleda više tehnološki"), AI će težiti da doda novi kod umesto da refaktoriše postojeću logiku. Ne zna koji stari kod je zastareo i ne usuđuje se lako da ga obriše, što dovodi do nagomilavanja redundantnog i mrtvog koda. Istovremeno, AI nema jedinstvenu "memoriju stila koda", pa svaki put može generisati kod sa drugačijim konvencijama imenovanja (zavisno od slučajnosti uzoraka za obuku), a korisnik retko daje jasna pravila, što rezultira neurednim i nepredvidivim kodom. Ukratko:

  1. Redundansa i mrtvi kod: Nakon više popravki, AI ostavlja stare implementacije, blokove zakomentarisanog koda, neiskorišćene uvoze, jer je rizik od brisanja visok, pa ih zadržava.
  2. Nedosledno imenovanje i stil: AI nasumično izvlači stil iz podataka za obuku u različitim rundama, a ako korisnik ne nametne pravila, mešaju se camelCase, snake_case i razmaci.
  3. Skrivene logičke greške: AI teži da generiše kod koji je ispravan za "uobičajene putanje", ali granični uslovi (null vrednosti, ekstremne vrednosti, konkurentnost) često se zanemaruju jer je takvih primera u podacima za obuku malo.

2. Zamke održivosti

Iteracija u Vibe Coding-u je izuzetno brza; i korisnik i AI su fokusirani na "da li je trenutna funkcija upotrebljiva", gotovo da nema vremena za pisanje dokumentacije, komentara ili refaktorisanje. AI nema dugoročnu memoriju, ne dodaje aktivno docstring-ove funkcijama, niti razmišlja o sledećem programeru koji će preuzeti projekat. Takođe, AI teži da "reši trenutni zahtev", bilo prekomernim dizajnom opšteg okvira (misleći da će korisniku kasnije trebati), bilo kopiranjem i lepljenjem za brzu implementaciju, što dovodi do haotičnog nivoa apstrakcije. Ukratko:

  1. Nedostatak dokumentacije i komentara: AI podrazumevano ispisuje "samodokumentujući" kod, ali stvarne složene regularne izraze ili algoritme je teško razumeti; bez zahteva korisnika, AI ne piše dokumentaciju.
  2. Prekomerna ili nedovoljna apstrakcija: AI ponekad primenjuje uobičajene dizajn šablone (poput fabrike, strategije) čak i za jednostavne probleme; ponekad, iz lenjosti da izdvoji zajedničke funkcije, direktno kopira blokove koda.

3. Bezbednosne zamke

Podaci za obuku AI-ja sadrže mnogo open-source koda, uključujući istorijske ranjivosti (poput SQL konkatenacije, hardcoded ključeva). U Vibe Coding-u, korisnik retko zahteva "korišćenje parametrizovanih upita" ili "čitanje ključeva iz promenljivih okruženja", pa AI koristi najčešći (i često nesiguran) obrazac. Osim toga, AI nema svest o "modelu pretnje", ne proverava aktivno filtriranje ulaza ili minimizaciju privilegija, jer ga zanima samo implementacija funkcionalnosti. Ukratko:

  1. Injekcione ranjivosti: AI podrazumevano koristi konkatenaciju stringova za SQL/komande, jer je ovaj način najčešći u jednostavnim tutorijalima.
  2. Hardcoded osetljive informacije: Primeri u podacima za obuku često imaju API ključeve upisane direktno u kod, pa AI oponaša taj obrazac.
  3. Prekomerne privilegije: Radi lakšeg rada, AI često koristi sudo ili w+ režim za otvaranje datoteka, ne vodeći računa o minimalnim potrebnim privilegijama.

4. Zamke evolucije zahteva

Vibe Coding nema jasne granice. Korisnik kaže "dodaj još jednu funkciju", a AI će dati sve od sebe da je ispuni, ali ne zna šta je "izvan opsega". AI takođe nema koncept prioriteta, pa može istovremeno implementirati tri dodatne karakteristike, što potapa osnovnu funkcionalnost. Istovremeno, prilikom svake izmene za ispravljanje bug-a, AI ne pregleda stare funkcionalnosti, pa često dolazi do regresije: popravi se A, pokvari B. Ukratko:

  1. Proširenje opsega: Da bi "zadovoljio korisnika", AI aktivno dodaje naizgled relevantne ali nepotrebne funkcije (poput dodavanja istorije u kalkulator).
  2. Funkcionalna regresija: AI pri ispravljanju bug-a, zbog nepoznavanja globalne logike, izmeni jednu zajedničku funkciju, što dovodi do kvara drugih funkcija koje zavise od nje.

5. Zamke timske saradnje

Dijaloški proces Vibe Coding-a je privatna interakcija pojedinca sa AI-jem, bez ostavljanja prenosivih specifikacija ili zapisa o dizajnerskim odlukama. Različiti članovi tima vode dijalog sa AI-jem, dobijaju kod u svom stilu, što pri spajanju stvara mnogo konflikata. Takođe, AI ne generiše automatski commit poruke ili dnevnike promena, pa se razlozi za evoluciju koda gube, a kasniji održavaoci moraju da nagađaju. Ukratko:

  1. Nereproduktibilna izgradnja: Različiti ljudi, u različito vreme, koristeći isti prompt, AI će dati različite implementacije (zbog slučajnosti uzorkovanja).
  2. Nedostatak praćenja promena: Nema dizajn dokumentacije, nema commit poruka koje objašnjavaju "zašto je ova izmena napravljena", kod postaje crna kutija.

评论

暂无已展示的评论。

发表评论(匿名)