Serija AI intervjujev 15: Kakšne so pogoste pasti Vibe Codinga?
Čeprav je način 'občutek/vzdušje' Vibe Codinga pri hitrem prototipiranju in kreativnem raziskovanju zelo prijeten, lahko brez nadzora zlahka padeš v več tipičnih pasti. Spodaj povzemamo iz petih dimenzij: kakovost kode, vzdržljivost, varnost, razvoj zahtev, timsko sodelovanje.
1. Pasti kakovosti kode
Ker se Vibe Coding zanaša na dialoško iteracijo, ko uporabnik vsakič poda nejasno zahtevo po spremembi (npr. 'naj bo ta gumb bolj tehnološki'), bo AI nagnjen k dodajanju nove kode namesto preoblikovanja obstoječe logike. Ne ve, katera stara koda je že neveljavna, in si ne upa enostavno izbrisati, kar vodi do kopičenja odvečne in mrtve kode. Hkrati AI nima enotnega 'spomina na slog kode', vsaka generacija lahko sledi različnim konvencijam poimenovanja (odvisno od naključnosti vzorcev v učnih podatkih), poleg tega uporabniki redko podajo jasne omejitve, zato koda postane nepregledna in nepredvidljiva. Povzetek:
- Odvečna in mrtva koda: Po večkratnih popravkih AI pusti stare implementacije, zakomentirane bloke kode in neuporabljene uvoze, ker je tveganje brisanja visoko, se odloči za ohranitev.
- Nedosledno poimenovanje in slog: AI v različnih krogih naključno črpa slog iz učnih podatkov, če uporabnik ne nalaga pravil, se mešajo camelCase, podčrtaji in presledki.
- Skrite logične napake: AI je nagnjen k generiranju kode, ki je pravilna za 'običajne poti', vendar so mejni pogoji (prazne vrednosti, ekstremne vrednosti, sočasnost) pogosto prezrti, ker je takih primerov v učnih podatkih malo.
2. Pasti vzdržljivosti
Hitrost iteracije Vibe Codinga je izjemno visoka, tako uporabnik kot AI se osredotočata na 'ali je trenutna funkcija uporabna', skoraj ni časa za pisanje dokumentacije, komentarjev ali preoblikovanje. AI nima dolgoročnega spomina, ne dodaja docstringov funkcijam in ne upošteva naslednjega razvijalca. Poleg tega je AI nagnjen k 'reševanju takojšnjih potreb', bodisi pretirano načrtuje splošen okvir (misleč, da ga bo uporabnik kasneje potreboval), bodisi kopira in prilepi za hitro implementacijo, kar vodi v zmedo na ravni abstrakcije. Povzetek:
- Pomanjkanje dokumentacije in komentarjev: AI privzeto izpiše 'samo razlagajočo' kodo, vendar so dejansko zapleteni regularni izrazi ali algoritmi težko razumljivi; če uporabnik ne zahteva, ne bo napisal dokumentacije.
- Prevelika abstrakcija ali premajhna abstrakcija: AI včasih uporabi pogoste oblikovne vzorce (npr. tovarna, strategija), čeprav je problem preprost; včasih pa zaradi lenobe ne izlušči skupnih funkcij in neposredno kopira bloke kode.
3. Varnostne pasti
Učni podatki AI vsebujejo veliko odprtokodne kode, med katero so tudi zgodovinske ranljivosti (npr. SQL sestavljanje, trdo kodirani ključi). Pri Vibe Coding uporabniki redko aktivno zahtevajo 'uporabo parametriziranih poizvedb' ali 'branje ključev iz okoljskih spremenljivk', zato AI uporabi najpogostejši (in pogosto negotov) vzorec. Poleg tega AI nima zavesti o 'modelu groženj', ne preverja vhodnega filtriranja ali minimalnosti dovoljenj, saj ga zanima le izvedba funkcije. Povzetek:
- Ranljivosti za injekcije: AI privzeto uporablja sestavljanje nizov za konstruiranje SQL/ukazov, ker je to najpogostejše v preprostih vajah.
- Trdo kodiranje občutljivih informacij: Primeri v učnih podatkih pogosto trdo kodirajo API ključe, AI bo posnemal ta vzorec.
- Prekomerna dovoljenja: Zaradi udobja AI pogosto uporablja
sudoali načinw+za odpiranje datotek, ne da bi upošteval minimalno potrebna dovoljenja.
4. Pasti razvoja zahtev
Vibe Coding nima jasnih mej. Ko uporabnik reče 'dodaj še to funkcijo', se AI potrudi ugoditi, vendar ne ve, kaj je 'zunaj obsega'. AI nima pojma o prioritetah, lahko hkrati implementira tri dodatne funkcije, kar povzroči, da se osrednja funkcionalnost izgubi. Hkrati pri vsakem popravljanju nove napake AI ne pregleda starih funkcij, pogosto pride do regresije, ko popravi A, pokvari B. Povzetek:
- Širjenje obsega: Da bi 'zadovoljil uporabnika', AI aktivno dodaja navidezno povezane, a nepotrebne funkcije (npr. kalkulator doda zgodovino).
- Funkcionalna regresija: Ko AI popravlja določeno napako, zaradi nepoznavanja celotne logike spremeni eno javno funkcijo, kar povzroči nepravilno delovanje drugih funkcij, ki so od nje odvisne.
5. Pasti timskega sodelovanja
Proces dialoga Vibe Codinga je zasebna interakcija posameznika z AI, ne pušča prenosljive dokumentacije specifikacij ali zapisov o oblikovnih odločitvah. Različni člani ekipe se ločeno pogovarjajo z AI, dobijo kodo v svojem slogu, pri združevanju pa prihaja do številnih konfliktov. Poleg tega AI samodejno ne generira sporočil commit ali dnevnika sprememb, razlogi za razvoj kode se izgubijo, poznejši vzdrževalci pa lahko samo ugibajo. Povzetek:
- Neponovljive gradnje: Različni ljudje ob različnih časih z istim pozivom dobijo različne implementacije (zaradi naključnosti vzorčenja).
- Pomanjkanje sledljivosti sprememb: Brez oblikovne dokumentacije, brez sporočil commit, ki pojasnjujejo 'zakaj je bila ta sprememba narejena', koda postane črna škatla.
评论
暂无已展示的评论。
发表评论(匿名)