Jako osoba zainteresowana AI i nowymi narzędziami nie mogłem nie spróbować nowego IDE napakowanego funkcjami AI – czyli Antigravity. Edytor od Google jest tak naprawdę forkiem VS Code i zawiera takie opcje jak np. generowanie opisu commitu na podstawie zmian z użyciem AI oraz kilka innych, w tym oczywiście czat do rozmowy z LLM-em, autocomplete itp. Najbardziej cieszy mnie to, że nie trzeba mieć subskrypcji, aby korzystać (doraźnie, hobbystycznie, oczywiście z limitami) z najnowszych modeli (m.in. Gemini 3 Pro, Claude Sonnet 4.5). Płatna wersja (Business) kosztuje obecnie 455,29 zł (promocja 50%), więc póki co zostanę przy darmowej wersji :)
Po instalacji postanowiłem trochę zrefaktoryzować kod źródłowy tego bloga, zwłaszcza warstwę frontendu (template Jinja2). Wpisałem więc prompt z prośbą o refaktor. Efekt był bardzo zadowalający – powtarzający się kod został wyciągnięty do osobnych templatek. Zbudowane, pobieżnie przejrzane – kod wyglądał super. Jako że w projektach hobbystycznych lubię iść na żywioł (bo w pracy nie bardzo mogę sobie na to pozwolić), puściłem deploy. Strona się uruchomiła, posty działały, panel admina też. Wszystko było w porządku, więc następnego dnia wróciłem na stronę i… niespodzianka – zniknęło kilka postów.
Troubleshooting
- Najpierw zajrzałem w logi – strona z postem była dostępna wczoraj po południu, a wieczorem bot, który odwiedzał stronę, już jej nie znalazł. Co dziwne – brak w logach requesta
DELETE. Czary. Dziwną rzeczą było też to, że zniknęły tylko ostatnie posty. - Kolejna wskazówka: dostałem niedawno maila od hostingu, że wkrótce będą przenosić bazy danych na nowsze serwery. Nauczony doświadczeniem wpadłem więc na pomysł, że ktoś mógł przy przenoszeniu danych wgrać starą wersję z backupu (tak samo, jak ja kiedyś zrobiłem to dla klienta 😉). Skontaktowałem się z hostingiem i dostałem odpowiedź, że żadne prace nie były prowadzone.
- Ponieważ nie miałem zbyt dużo czasu na szukanie problemu, zapytałem Codexa i Antigravity. Codex zrzucał winę na Antigravity (a konkretnie na model Gemini 2.5), sugerując, że mógł on usunąć dane, wykonując jakieś zapytania na bazie. Przejrzałem logi i wszystkie polecenia z konsoli – nic na to nie wskazywało.
- Winny jest kod? Zmiany w kodzie nie wskazywały na zbyt wiele, ale jednak doszło do serii niefortunnych zdarzeń.
Rozwiązanie
Problemem okazały się zmiany w kodzie dokonane przez Antigravity oraz fakt, że korzystam z biblioteki Barba.js. Po zmianach wprowadzonych przez LLM-a każde odwiedziny posta jako administrator uruchamiały prefetch usunięcia, które nie było wywoływane requestem DELETE, tylko GET-em (nie wiem, czemu kiedyś tak to zrobiłem – chyba korzystałem z jakiegoś tutoriala ze strony Django). Zabrakło też okienka z potwierdzeniem usunięcia – po kliknięciu „DELETE” następowało fizyczne usunięcie posta z bazy. Zmiany całkowicie wycofałem, a posty przywróciłem częściowo z Archive.org. Dodałem też okienko z potwierdzeniem usunięcia posta, żeby taka sytuacja nie wydarzyła się w przyszłości.
Na bazie tego doświadczenia oraz codziennych doświadczeń w pracy jako tester (testując rozwiązania, które powstały również przy pomocy LLM-ów) oraz rozmów z programistami wyciągam poniższe wnioski: - LLM-y to dobre narzędzie, ale głównie w rękach doświadczonych specjalistów, którzy szybko wyłapią problemy. - LLM-y, gdy nie nakarmimy ich konkretnymi, bardzo szczegółowymi instrukcjami wraz z przykładami, zaczynają mocno komplikować kod i stosować dziwne rozwiązania, niespójne z podejściem w projekcie. - Wraz z rewolucją AI jeszcze bardziej wzrasta zapotrzebowanie na dobrych testerów, gdyż AI nadal generuje sporo bugów, a człowiek ma skłonność do bycia leniwym i jedynie pobieżnego sprawdzania kodu wygenerowanego przez LLM-y.
Trzeba pamiętać, że ostatecznie to czynnik ludzi zawinił - czyli ja, który jedynie pobieżnie przejrzał kod i zmerdżował do maina. Czy stałoby się tak jednak, gdybym to ja pisał cały kod? Intuicja podpowiada, że nie.
PS. Poprawki do posta wprowadzał sam ChatGPT.
