← 返回列表

AI interviju sērija 15: Kādas ir izplatītās Vibe Coding lamatas?

Vibe Coding "sajūtu/atmosfēras" vadīts režīms, lai gan ātros prototipos un radošajā izpētē ir foršs, bet, ja to nekontrolē, tas viegli iekrīt vairākos tipiskos slazdos. Zemāk ir apkopojums no pieciem aspektiem: koda kvalitāte, uzturējamība, drošība, prasību evolūcija, komandas sadarbība.

1. Koda kvalitātes lamatas

Tā kā Vibe Coding balstās uz dialoga veidotu iterāciju, kad lietotājs katru reizi izsaka neskaidras modifikācijas prasības (piemēram, "padari šo pogu tehnoloģiskāku"), AI mēdz pievienot jaunu kodu, nevis pārstrukturēt esošo loģiku. Tas nezina, kuri vecie kodi jau ir novecojuši, un neuzdrošinās tos dzēst, tāpēc uzkrājas lieks un mirušais kods. Turklāt AI nav vienotas "koda stila atmiņas", katrā ģenerācijā tas var sekot dažādiem nosaukšanas paradumiem (atkarībā no apmācības datu nejaušības), un lietotājs reti nosaka skaidrus normas ierobežojumus, tāpēc galu galā kods kļūst haotisks un grūti prognozējams. Ieskaitot:

  1. Redundance un mirušais kods: Pēc vairākiem labojumiem AI atstāj vecās implementācijas, komentētus koda blokus, neizmantotus importus, jo dzēšana ir riskanta, tāpēc tās tiek saglabātas.
  2. Nekonsekventa nosaukšana un stils: AI katrā kārtā nejauši izvēlas stilu no apmācības datiem, un, ja lietotājs neuzspiež normas, tiek jaukti CamelCase, apakšsvītras, atstarpes.
  3. Slēptas loģikas kļūdas: AI mēdz ģenerēt kodu, kas ir pareizs "parastajās" situācijās, bet robežnosacījumi (tukšas vērtības, galējās vērtības, vienlaicība) bieži tiek ignorēti, jo apmācības datos šādu piemēru ir maz.

2. Uzturējamības lamatas

Vibe Coding iterācijas ātrums ir ļoti liels, un gan lietotājs, gan AI koncentrējas uz to, "vai pašreizējā funkcija ir izmantojama", gandrīz nav laika rakstīt dokumentāciju, komentārus vai pārstrukturēt. AI trūkst ilgtermiņa atmiņas, tas nepievieno docstring funkcijām un neņem vērā nākamo izstrādātāju. Turklāt AI mēdz "atrisināt tūlītēju vajadzību", vai nu pārmērīgi dizainējot vispārēju ietvaru (domājot, ka lietotājam vajadzēs vēlāk), vai arī kopējot un ielīmējot ātru realizāciju, tādējādi abstrakcijas līmenis kļūst juceklīgs. Ieskaitot:

  1. Dokumentācijas un komentāru trūkums: AI pēc noklusējuma ģenerē "pašizskaidrojošu" kodu, bet faktiski sarežģītus regex vai algoritmus ir grūti saprast; ja lietotājs neprasa, tas neraksta dokumentāciju.
  2. Pārmērīga abstrakcija vai nepietiekama abstrakcija: AI dažreiz izmanto izplatītas dizaina shēmas (piemēram, rūpnīcu, stratēģiju), pat ja problēma ir vienkārša; citreiz tā kā slinkums izvilkt kopīgu funkciju, vienkārši kopē koda bloku.

3. Drošības lamatas

AI apmācības dati satur daudz atvērtā pirmkoda, kurā ir vēsturiskas ievainojamības (piemēram, SQL savienošana, iecietēti atslēgas). Vibe Coding lietotājs reti prasa "izmantot parametrizētus vaicājumus" vai "lasīt atslēgas no vides mainīgajiem", tāpēc AI izmanto visizplatītāko (un bieži vien nedrošu) modeli. Turklāt AI nav "draudu modeļa" apziņas, tas nepārbauda ievades filtrēšanu, minimālu atļauju piešķiršanu, jo koncentrējas tikai uz funkcionalitāti. Ieskaitot:

  1. Injekcijas ievainojamības: AI pēc noklusējuma izmanto virkņu savienošanu SQL/komandu veidošanai, jo šī metode ir visizplatītākā vienkāršās pamācībās.
  2. Sensitīvas informācijas iecietēšana: Apmācības paraugos bieži ir iecietētas API atslēgas, AI atdarina šo modeli.
  3. Pārmērīgas atļaujas: Ērtības labad AI bieži izmanto sudo vai w+ režīmu, atverot failus, neņemot vērā minimālo nepieciešamo atļauju.

4. Prasību evolūcijas lamatas

Vibe Coding nav skaidru robežu. Lietotājs saka "pievieno vēl vienu funkciju", un AI cenšas to izpildīt, bet tas nezina, kas ir "ārpus tvēruma". AI nav arī prioritāšu jēdziena, tas var vienlaikus realizēt trīs papildu funkcijas, tādējādi apglabājot pamatfunkcionalitāti. Turklāt, labojot jaunu kļūdu, AI nepārskata vecās funkcijas, bieži rodas regresijas problēmas, kad tiek salabots A, bet sabojāts B. Ieskaitot:

  1. Tvēruma izplešanās: Lai "apmierinātu lietotāju", AI aktīvi pievieno šķietami saistītas, bet nevajadzīgas funkcijas (piemēram, kalkulatoram pievieno vēsturi).
  2. Funkcionalitātes regresija: Labojot kādu kļūdu, AI, nezinot kopējo loģiku, izmaina kopīgu funkciju, kas izraisa citu no tās atkarīgo funkciju darbības traucējumus.

5. Komandas sadarbības lamatas

Vibe Coding sarunu process ir personīgā mijiedarbība starp indivīdu un AI, neatstājot nododamas specifikācijas dokumentus vai lēmumu pieņemšanas pierakstus. Dažādi komandas locekļi atsevišķi sarunājas ar AI, iegūstot dažāda stila kodus, kas apvienojot rada daudz konfliktu. Turklāt AI automātiski neģenerē commit ziņojumus vai izmaiņu žurnālus, tāpēc koda evolūcijas iemesli tiek zaudēti, un vēlākie uzturētāji var tikai minēt. Ieskaitot:

  1. Neatkārtojami būvējumi: Dažādi cilvēki, dažādos laikos izmantojot vienu un to pašu promptu, AI izvada dažādas realizācijas (izlases nejaušības dēļ).
  2. Izmaiņu izsekošanas trūkums: Nav dizaina dokumentu, nav commit ziņojumu, kas izskaidrotu "kāpēc šādi mainīts", kods kļūst par melno kasti.

评论

暂无已展示的评论。

发表评论(匿名)