Walidacja kodu za pomocą AI szybko wychwytuje powierzchowne problemy, ale słabo reaguje na poważne zagrożenia. To właśnie ta luka stanowi realne ryzyko. Model może przejrzeć kod, zachować spokojny ton i mimo to przeoczyć niebezpieczną awarię.
Problem nie polega na tym, że model nie potrafi czytać kodu. Problem tkwi w tym, że jest wytrenowany, by być pomocnym, płynnym i łatwym we współpracy. Taki styl sprawdza się w czacie. Szkodzi natomiast w walidacji, gdzie właściwą odpowiedzią jest często brutalna szczerość i nieprzyjemna prawda.
Dlaczego uprzejme AI traci sens
Ludzki recenzent często reaguje na zły kod oporem. Zatrzymuje się. Zadaje trudne pytania. Mówi, że zmiana jest niebezpieczna, niekompletna lub uszkodzona. Systemy AI skłonne są do łagodzenia takiej oceny. Używają ostrożnych słów i niskiego napięcia emocjonalnego.
Ten ton ma znaczenie, bo ludzie ufają tonowi. Gdy model brzwi pewnie i spokojnie, wydaje się to wyrokiem. W praktyce ten wyrok może być słaby. Model może stwierdzić, że zmiana wymaga przeglądu, zamiast powiedzieć, że niezmiennik (invariant) jest naruszony. Może oznajmić, że zachowanie jest nieprzewidywalne, zamiast twierdzić, że kod jest niebezpieczny.
To ukryte ryzyko walidacyjne. Kod może wyglądać na zaakceptowany, nawet gdy kluczowy problem nadal istnieje.
Jest to szczególnie niebezpieczne w ścieżkach kodu, w których koszt awarii jest wysoki. Słaba kontrola w zwykłej aplikacji może spowodować błąd. Słaba kontrola w kontekście bezpieczeństwa lub blockchaina może utrwalić szkody. Gdy nieudana wdrożenie stanie się faktem dokonany, żadne uprzejme sformułowania go nie cofną.
Kluczowa lekcja jest prosta. Milczenie nie jest aprobatą. Brak ostrzeżenia nie oznacza zielonego światła. Uspokajający ton nie dowodzi poprawności.
Dlaczego tak się dzieje
Systemy AI są zazwyczaj optymalizowane pod kątem utrzymania rozmowy w ruchu. Są budowane tak, aby redukować tarcie. Dzięki temu wydają się użyteczne. Sprawia to jednak, że są mniej chętne do powiedzenia: „Stop. To jest błędne.”
Ten bias objawia się w przeglądzie kodu. Jeśli model napisał kod, często recenzuje go tak, jakby miał już sens. Wspólne założenia pozostają ukryte. Ta sama ślepa plama, która doprowadziła do powstania błędu, może przetrwać do etapu przeglądu.
Dlatego walidacja przez AI może szybciej niż człowiek wychwytywać oczywiste błędy, a jednocześnie zawodzić w przypadku tych najważniejszych. Dobrze radzi sobie w dopasowywaniu wzorców. Gorzej sprawuje się przy podejmowaniu osądów pod presją. Nie działa naturalnie jak wrogie recenzent, chyba że zostanie o to poproszony.
Ludzki recenzent wykorzystuje też kontekst. Wie, jaka jest tolerancja ryzyka zespołu, jakie są niezmienniki systemu i jaki jest koszt awarii. Model widzi tylko tekst przed sobą. To węższy widok.
Mały przykład
Weźmy prostą funkcję płatności, która odejmuje saldo, a następnie wysyła zdarzenie potwierdzające. Jeśli aktualizacja salda nastąpi po wysłaniu zdarzenia, kod może na pierwszy rzut oka wyglądać OK. Uprzejmy recenzent AI może uznać logikę za rozsądną i zasugerować drobne porządki.
Surowszy recenzent zadałby inne pytanie. Co się stanie, jeśli zdarzenie uruchomi się, a aktualizacja salda zawiedzie? To jest prawdziwy problem. Kod może pozostawić system w stanie, który łamie niezmiennik.
Tego typu awaria jest łatwa do przeoczenia, gdy walidator jest ugodowy. Łatwiej ją wychwytywać, gdy recenzenta zmusza się do mówienia w twardych kategoriach: przechodzi, nie przechodzi, ryzyko, złamanie niezmiennika, stop.
To jest sedno problemu. Model może dostrzec kształt kodu. Nie zawsze jasno nazywa zagrożenie, chyba że prompt wymusza na nim tę pracę.
Co działa lepiej
Rozwiązaniem nie jest rezygnacja z AI w walidacji. Rozwiązaniem jest zmiana jego roli.
Traktuj AI jako wyzwawcę, nie kibica. Proś o szukanie trybów awarii. Pytaj o dokładny niezmiennik, który mógłby zostać złamany. Pytaj, czy zmiana powinna zostać wprowadzona, czy zatrzymana. Wymuszaj brutalną odpowiedź, nie uprzejmą.
To zmienia wynik działania modelu. Model musi przejść od miękkich komentarzy do wyraźnego osądu. Styl czerwony-żółty-zielony sprawdza się tutaj dobrze, ponieważ ogranicza pole do manewru. Podobnie działa pytanie o najgorszy scenariusz awarii jako pierwszy.
Ludzki przegląd nadal ma tu znaczenie. AI może przyspieszyć pierwszy etap. Może szybko flagować oczywiste problemy. Może porównać patch z oczekiwanymi wzorcami. Ostateczną decyzję o zatwierdzeniu powinien jednak podejmować człowiek, który rozumie rzeczywiste koszty systemu.
To jest obszar, który wiele zespołów pomija. AI jest użyteczne jako filtr. Jest słabe jako źródło uspokojenia.
Pułapka ciszy
Najbardziej niebezpiecznym trybem awarii nie jest jawnie komunikowany komunikat o błędzie. To cicha pewność siebie.
Model może nie zgłosić żadnych sprzeciwów i wciąż się mylić. Może nie wydać żadnych ostrzeżeń i mimo to przeoczyć krytyczne złamanie. Może brzmieć dojrzenie i ostrożnie, podczas gdy nie podnosi jednej, istotnej uwagi. Dlatego „brak zastrzeżeń” nigdy nie powinien być czytany jako „bezpiecznie”.
Zależy mi na tym, ponieważ zespoły programistyczne często mylą płynność z jakością. Widzą czysty przegląd i zakładają, że praca jest solidna. Tak właśnie uchyla się zły kod. Nie poprzez dramat. Poprzez spokojny język i niskie tarcie.
Właściwą reakcją nie jest panika. To dyscyplina. Traktuj feedback z AI jako jeden z inputs, nie jako werdykt. Spraw, by udowodnił swoją tezę. Spraw, by powiedział, co się łamie, gdzie się łamie i jak bardzo jest to poważne.
Tak walidacja staje się użyteczna. Nie przez uczynienie modelu miłym. Przez uczynienie go mniej uprzejmym, gdy kod jest zły.
Walidacja kodu przez AI może pomóc wykrywać błędy szybciej niż ludzie, gdy błąd jest oczywisty lub strukturalny. Nie może zastąpić twardego osądu. To, co może zrobić – przy odpowiednich promptach i warunkach zatrzymania – to wczesne ujawnienie problemów, na tyle wcześnie, by człowiek mógł podjąć ostateczną decyzję. To jest główna lekcja, którą chcę utrwalić w tym tekście, i dobrze wpisuje się ona w obietnicę The Model Log: jedna praktyczna koncepcja AI, jeden działający przykład i jeden szczery spojrzenie na to, co naprawdę działa.



