← 返回列表

AI interviu serija 15: Kokie yra dažni Vibe Coding spąstai?

Nors Vibe Coding „jausmo/atmosferos varomas“ režimas yra labai naudingas greitam prototipavimui ir kūrybiniams tyrinėjimams, be kontrolės lengva įkristi į keletą tipinių spąstų. Toliau apibendrinama pagal kodo kokybę, priežiūrą, saugumą, poreikių evoliuciją, komandinį darbą.


1. Kodo kokybės spąstai

Kadangi Vibe Coding priklauso nuo pokalbiais paremtos iteracijos, vartotojui kiekvieną kartą pateikus neaiškų pakeitimo poreikį (pvz., „padaryk šį mygtuką labiau technologinį“), AI linkęs pridėti naują kodą, o ne pertvarkyti esamą logiką. Jis nežino, kuris senasis kodas jau neveikia, ir nedrįsta jo lengvai ištrinti, todėl kaupiasi perteklius ir miręs kodas. Be to, AI neturi vieningo „kodo stiliaus atminties“, kiekvieną kartą gali generuoti skirtingus įvardijimo įpročius (priklausomai nuo treniruočių duomenų atsitiktinumo), o vartotojai retai nustato aiškius standartus, todėl galutinis kodas tampa netvarkingas ir sunkiai nuspėjamas. Apibendrinant:

  1. Perteklius ir miręs kodas: Po daugkartinių pataisymų AI palieka senus įgyvendinimus, užkomentuotus kodo blokus, nenaudojamus importus, nes ištrynimas yra rizikingas.
  2. Nenuoseklus įvardijimas ir stilius: AI atsitiktinai iš treniruočių duomenų ima stilių skirtingais etapais, o vartotojui neprimestant standartų, maišomos „camelCase“, „snake_case“ ir tarpai.
  3. Paslėptos loginės klaidos: AI linkęs generuoti kodą, kuris veikia „įprastais keliais“, bet dažnai ignoruoja ribines sąlygas (tuščias reikšmes, ekstremalias vertes, konkurenciją), nes treniruočių duomenyse tokių pavyzdžių mažai.

2. Priežiūros spąstai

Vibe Coding iteracijos greitis yra labai didelis, tiek vartotojas, tiek AI susikoncentruoja į „ar dabartinė funkcija veikia“, beveik neskiriant laiko dokumentacijai, komentarams ar pertvarkymui. AI neturi ilgalaikės atminties, neinicijuoja funkcijų docstring, neatsižvelgia į kitą kūrėją, kuris perims darbą. Be to, AI linkęs „išspręsti dabartinį poreikį“: arba per daug suprojektuoja bendrą sistemą (manydamas, kad vartotojui vėliau prireiks), arba kopijuoja ir įklijuoja greitam įgyvendinimui, sukeliant abstrakcijos lygių sumaištį. Apibendrinant:

  1. Trūksta dokumentacijos ir komentarų: AI pagal nutylėjimą pateikia „savaime aiškų“ kodą, bet sudėtingas regex ar algoritmus sunku suprasti; vartotojas neprašo, todėl AI nerašo dokumentacijos.
  2. Per didelė abstrakcija arba per maža: AI kartais taiko įprastus projektavimo šablonus (pvz., gamyklos, strategijos), net kai problema paprasta; kartais dėl tingumo neišskiria bendrų funkcijų, o tiesiog kopijuoja kodo blokus.

3. Saugumo spąstai

AI treniruočių duomenyse yra daug atviro kodo, kuriame netrūksta istorinių pažeidžiamumų (pvz., SQL sujungimai, kietai užkoduoti raktai). Vibe Coding metu vartotojas retai prašo „naudoti parametrizuotas užklausas“ ar „skaityti raktus iš aplinkos kintamųjų“, todėl AI naudoja dažniausią (ir dažnai nesaugų) modelį. Be to, AI neturi „grėsmių modelio“ supratimo, nepatikrina įvesties filtravimo, minimalių teisių, nes jam rūpi tik funkcijų įgyvendinimas. Apibendrinant:

  1. Injekcijos pažeidžiamumai: AI pagal nutylėjimą naudoja eilučių sujungimą SQL/komandoms kurti, nes šis būdas dažniausiai sutinkamas paprastose pamokose.
  2. Jautrios informacijos kietas kodavimas: Treniruočių pavyzdžiuose dažnai būna įrašyti API raktai, AI mėgdžioja šį modelį.
  3. Per didelės teisės: AI patogumui dažnai naudoja sudo arba w+ režimą failams atidaryti, neatsižvelgdamas į minimalias būtinas teises.

4. Poreikių evoliucijos spąstai

Vibe Coding neturi aiškių ribų. Vartotojui pasakius „pridėk dar vieną funkciją“, AI stengiasi įvykdyti, bet nežino, kas yra „už ribų“. AI neturi prioritetų sąvokos, gali vienu metu įgyvendinti tris papildomas savybes, todėl pagrindinė funkcija nukenčia. Be to, kaskart taisant naują klaidą, AI neperžiūri senų funkcijų, dažnai pasitaiko regresijos problemų – pataisius A, sugenda B. Apibendrinant:

  1. Apimties išplėtimas: Kad „patenkintų vartotoją“, AI aktyviai prideda iš pažiūros susijusias, bet nebūtinas funkcijas (pvz., skaičiuotuvui prideda istoriją).
  2. Funkcijų degradacija: Taisydamas klaidą, AI, nesuprasdamas visos logikos, pakeičia viešą funkciją, dėl ko sugenda kitos nuo jos priklausomos funkcijos.

5. Komandinio darbo spąstai

Vibe Coding pokalbio procesas yra asmeninė sąveika su AI, nepaliekanti perduodamų specifikacijų dokumentų ar sprendimų priėmimo įrašų. Skirtingi komandos nariai atskirai bendrauja su AI, gauna skirtingo stiliaus kodą, o sujungiant kyla daugybė konfliktų. Be to, AI automatiškai negeneruoja commit pranešimų ar pakeitimų žurnalų, prarandamos kodo evoliucijos priežastys, vėliau prižiūrintiems darbuotojams tenka tik spėlioti. Apibendrinant:

  1. Nepakartojami kūrimai: Skirtingi žmonės, skirtingu laiku naudodami tą patį promptą, gauna skirtingus įgyvendinimus (dėl pavyzdžio atsitiktinumo).
  2. Trūksta pakeitimų sekimo: Nėra projektavimo dokumentų, nėra commit pranešimų, paaiškinančių „kodėl taip pakeista“, kodas tampa juodąja dėže.

评论

暂无已展示的评论。

发表评论(匿名)