← 返回列表

Série AI rozhovorů 15: Jaké jsou běžné nástrahy Vibe Códování?

Model Vibe Coding, který je řízen pocitem/atmosférou, je sice skvělý pro rychlé prototypování a kreativní objevování, ale pokud není kontrolován, snadno se dostanete do několika typických pastí. Níže shrnuto z pěti dimenzí: kvalita kódu, udržovatelnost, bezpečnost, evoluce požadavků, týmová spolupráce.


1. Pasti kvality kódu

Vzhledem k tomu, že Vibe Coding spoléhá na iterativní dialogy, když uživatel pokaždé vznese vágní požadavek na úpravu (např. „udělej toto tlačítko více technologickým“), AI má tendenci přidávat nový kód místo refaktorování stávající logiky. Neví, který starý kód je již nefunkční, a neodvažuje se jej snadno smazat, což vede k hromadění nadbytečného a mrtvého kódu. Současně AI nemá jednotnou „paměť stylu kódu“, každá generace se může řídit jinými konvencemi pojmenování (v závislosti na náhodnosti trénovacích dat) a uživatelé jen zřídka dávají jasná omezení, takže výsledný kód je chaotický a těžko předvídatelný. Shrnutí:

  1. Nadbytečný a mrtvý kód: Po mnoha opravách AI zanechává staré implementace, zakomentované bloky kódu a nepoužité importy, protože riziko smazání je vysoké a rozhodne se je ponechat.
  2. Nejednotné pojmenování a styl: AI v různých kolech náhodně čerpá styly z trénovacích dat, a pokud uživatel nedefinuje pravidla, míchá camelCase, podtržítka a mezery.
  3. Skryté logické chyby: AI má tendenci generovat kód, který je správný pro „běžné cesty“, ale okrajové podmínky (null hodnoty, extrémní hodnoty, souběžnost) jsou často opomíjeny, protože trénovací data obsahují málo takových příkladů.

2. Pasti udržovatelnosti

Iterační rychlost Vibe Códování je extrémně vysoká, uživatel i AI se soustředí na to, zda je aktuální funkce použitelná, a není čas psát dokumentaci, komentáře nebo refaktorovat. AI postrádá dlouhodobou paměť, aktivně nepřidává docstringy k funkcím a nezohledňuje dalšího vývojáře, který kód převezme. Dále AI tenduje k „řešení okamžitých potřeb“ – buď předimenzuje univerzální framework (myslí si, že ho uživatel později bude potřebovat), nebo zkopíruje a vloží rychlou implementaci, což vede k chaotické úrovni abstrakce. Shrnutí:

  1. Nedostatek dokumentace a komentářů: AI standardně vytváří kód, který by měl být „samovysvětlující“, ale komplexní regulární výrazy nebo algoritmy jsou ve skutečnosti těžko srozumitelné; pokud to uživatel nevyžaduje, AI dokumentaci nepíše.
  2. Přílišná abstrakce nebo nedostatek abstrakce: AI někdy aplikuje běžné návrhové vzory (např. továrna, strategie), i když je problém jednoduchý; jindy z lenosti nevyčlení společné funkce a rovnou kopíruje bloky kódu.

3. Bezpečnostní pasti

Trénovací data AI obsahují mnoho open-source kódu, který není bez historických zranitelností (např. SQL injection, hardcodované klíče). V Vibe Códování uživatelé jen zřídka vyžadují „používej parametrizované dotazy“ nebo „načti klíče z proměnných prostředí“, takže AI použije nejběžnější (a často nebezpečný) vzor. Navíc AI nemá povědomí o „hrozbovém modelu“, aktivně nekontroluje filtrování vstupů ani minimalizaci oprávnění, protože se zaměřuje pouze na implementaci funkcí. Shrnutí:

  1. Injekční zranitelnosti: AI standardně konstruuje SQL/příkazy pomocí řetězcových spojení, protože tento způsob je nejběžnější v jednoduchých tutoriálech.
  2. Hardcodování citlivých informací: Ukázky v trénovacích datech často obsahují pevně zapsané API klíče, a AI tento vzor napodobuje.
  3. Nadměrná oprávnění: AI kvůli pohodlí často používá režim sudo nebo w+ pro otevírání souborů, aniž by zvážila minimální potřebná oprávnění.

4. Pasti evoluce požadavků

Vibe Códování nemá jasné hranice. Když uživatel řekne „přidej další funkci“, AI se bude snažit vyhovět, ale neví, co je „mimo rozsah“. AI také nemá koncept priorit, může současně implementovat tři přídavné funkce, což přehluší základní funkce. Současně při opravě nové chyby AI nezkontroluje staré funkce, což vede k regresím – opraví A, ale rozbije B. Shrnutí:

  1. Rozšiřování rozsahu: Aby AI „potěšila uživatele“, aktivně přidává zdánlivě související, ale nepotřebné funkce (např. kalkulačka s historií).
  2. Degradace funkcí: Při opravě chyby AI, protože nezná globální logiku, změní veřejnou funkci, což způsobí poruchy u jiných funkcí, které na ni závisí.

5. Pasti týmové spolupráce

Proces konverzace ve Vibe Códování je soukromá interakce jednotlivce s AI, která nezanechává přenosné specifikační dokumenty ani záznamy o designových rozhodnutích. Různí členové týmu konverzují s AI odděleně a získávají kód v různých stylech, což při slučování vede k četným konfliktům. Kromě toho AI automaticky negeneruje commit zprávy ani changelogy, takže důvody vývoje kódu se ztrácejí a pozdější údržbáři musí hádat. Shrnutí:

  1. Nereprodukovatelné sestavení: Různí lidé v různých časech se stejným promptem obdrží od AI různé implementace (kvůli náhodnosti vzorkování).
  2. Nedostatečné sledování změn: Neexistují designové dokumenty, commit zprávy nevysvětlují „proč byla tato změna provedena“, a kód se stává černou skříňkou.

评论

暂无已展示的评论。

发表评论(匿名)