Wzorce · 12 / 15
Debugowanie z AI
Jak szukać błędów z AI szybciej, nie tracąc rozumienia kodu.
Stan na: 7.11.2026
Pętla debugowania
Ta sama pętla, której używa człowiek, tylko z AI na każdym kroku. AI nie zastępuje rozumienia kodu, ale mocno je przyspiesza.
1. Odtwórz błąd
Opisz go dokładnie. Ogólny opis daje ogólną odpowiedź.
Słabo: „Aplikacja czasem się wywala”.
Dobrze: „POST /api/faktury zwraca 500, gdy tablica pozycje ma ponad 50
elementów. Przy mniejszej liczbie działa.
Błąd: PayloadTooLargeError: request entity too large”.
2. Daj kontekst
Wklej cały błąd ze stosem wywołań, nie samą wiadomość.
Error: Cannot read properties of undefined (reading 'id')
at pobierzUzytkownika (src/lib/auth.ts:42:18)
at handler (src/routes/uzytkownicy.ts:15:24)
Dołącz: czego się spodziewałeś, co się stało, co wywołało błąd i jakie jest środowisko (wersja Node, system, przeglądarka). Agent z dostępem do terminala może sam uruchomić polecenie i przeczytać wynik.
3. Hipotezy przed poprawką
Najpierw pytaj o przyczyny, nie o poprawkę.
Na podstawie tego błędu i stosu wywołań podaj trzy najbardziej
prawdopodobne przyczyny. Jeszcze nic nie poprawiaj.
Skok prosto do poprawki często leczy objaw zamiast przyczyny.
4. Poprawka
Gdy zgadzacie się co do przyczyny, poproś o poprawkę.
pobierzUzytkownika() dostaje null, gdy ciasteczko sesji wygasło.
Obsłuż ten przypadek i zwróć 401 zamiast wywracać proces.
5. Sprawdzenie
Uruchom testy i sprawdź, czy coś się zepsuło.
Dopisz test na wygasłą sesję.
Szablony zgłoszeń dla AI
Błąd w działaniu:
Dostaję ten błąd, gdy [działanie]:
[pełny błąd i stos]
Pliki: src/routes/faktury.ts (handler), src/lib/baza.ts (zapytanie)
Oczekiwane: [co ma się stać]
Jest: [co się dzieje]
Test, który nie przechodzi:
Ten test nie przechodzi: [nazwa i ścieżka]
Wynik: [pełny wynik z asercją]
Kod: src/services/rozliczenia.ts
Test przechodził przed [commit albo zmiana].
Błąd tylko w CI:
Lokalnie testy przechodzą, w CI nie.
Log CI: [fragment]
Lokalnie: Node 22, macOS. CI: Node 22, Ubuntu.
Zmiany od ostatniego zielonego przebiegu: [diff albo link]
Częste pytania do AI
- Konkretny błąd: „W src/lib/api.ts:23 dostaję »TypeError: fetch failed«. W przeglądarce działa, w komponencie serwerowym nie. Co się dzieje?”
- Regresja: „Działało przed commitem abc123. Oto diff. Która zmiana zepsuła liczenie faktury?”
- Niestabilny test: „Ten test przechodzi w 80% przypadków. Co tu jest niedeterministyczne?”
- Wydajność: „Endpoint trwa 3 sekundy, zapytanie do bazy 50 ms. Co jeszcze tu zwalnia?”
W czym AI jest dobre
- Rozpoznaje wzorce. Widziało ogromne ilości komunikatów błędów i od razu kojarzy typowe przyczyny.
- Czyta dużo kodu naraz. Przejdzie łańcuch wywołań przez dziesięć plików bez zgubienia wątku.
- Daje kilka hipotez. Człowiek przywiązuje się do pierwszej. AI poda pięć i uszereguje je.
- Zna kaprysy frameworków. Różnice między komponentami serwerowymi i klienckimi, konfiguracje, wersje.
Gdzie AI się myli
- Nie widzi stanu w działaniu, jeśli mu go nie pokażesz: wartości zmiennych, danych w bazie, czasu.
- Zmyśla przyczyny przy nietypowych błędach. Sprawdzaj każdą hipotezę.
- Rzadko mówi „nie wiem”. Uważaj na pewne siebie wyjaśnienia, które nie pasują do dowodów.
Triki
Logi przed pytaniem
console.log('uzytkownik:', JSON.stringify(uzytkownik));
console.log('wejscie:', JSON.stringify(req.body));
Wartości z działania plus kod dają szybszą diagnozę.
Metoda diffu
Błąd pojawił się po scaleniu tego pull requesta: [git diff main..galaz]
Która zmiana najpewniej go wprowadziła?
Najpierw obserwowalność
Zanim poprawisz błąd, poproś o porządne logowanie w tym miejscu. Następny podobny błąd złapiesz szybciej.
Wyszukiwanie binarne w Git
git bisect start
git bisect bad # bieżący commit ma błąd
git bisect good abc123 # ten działał
# git podaje kolejne commity do sprawdzenia
Wynik pokaż AI: „Błąd wszedł w commicie xyz789, oto jego zmiany”.
Gumowa kaczka
Samo ułożenie problemu w jasne polecenie często podsuwa odpowiedź, zanim AI zdąży odpisać. Pisz pełne polecenie mimo to. Jeśli nie rozwiążesz sam, AI dostanie dobrze postawione pytanie.