Przejdź do głównej zawartości

Workflow debugowania

Twój endpoint API zwraca błąd 500, ale tylko dla niektórych użytkowników. Wklejasz błąd do trybu Agent Cursora i mówisz “napraw to”. Agent zmienia trzy pliki, błąd znika dla twojego przypadku testowego, ale teraz inna grupa użytkowników dostaje błąd 403. Mówisz agentowi, żeby naprawił i to. Dwie kolejne zmiany plików. Teraz oryginalny błąd 500 wrócił. Od 20 minut kręcisz się w kółko i jesteś dalej od naprawy niż na początku.

Problem nie leży w Cursorze. Problem polega na traktowaniu debugowania jako “powiedz AI, żeby naprawiło i miej nadzieję”. Skuteczne debugowanie wspomagane AI to ustrukturyzowany proces: najpierw zbadaj, zrozum przyczynę źródłową, a potem zastosuj celowaną poprawkę.

  • Systematyczny workflow debugowania z użyciem trybów Ask, Debug i Agent w sekwencji
  • Gotowe prompty do skopiowania na każdy etap procesu debugowania
  • Techniki wykorzystywania logów, śladów błędów i danych runtime z AI
  • Wzorce zapobiegające pętli “napraw-zepsuj-napraw”

Zanim dotkniesz jakiegokolwiek kodu, zrozum co się dzieje:

To daje ci model mentalny problemu, zanim zaczniesz cokolwiek zmieniać.

Faza 2: Zbierz dowody (tryb Debug lub ręczne logowanie)

Dział zatytułowany „Faza 2: Zbierz dowody (tryb Debug lub ręczne logowanie)”

Gdy masz hipotezy, zbierz dowody z runtime, aby je potwierdzić lub wykluczyć.

Opcja A: Użyj trybu Debug

Przełącz na tryb Debug i opisz błąd. Agent:

  1. Wygeneruje hipotezy o przyczynach źródłowych
  2. Doda strategiczne instrukcje logowania do kodu
  3. Poprosi cię o odtworzenie błędu
  4. Przeanalizuje przechwycone logi
  5. Zidentyfikuje przyczynę źródłową na podstawie dowodów

Opcja B: Ręczne logowanie i analiza

Jeśli tryb Debug nie jest dostępny lub wolisz ręczną kontrolę:

Po odtworzeniu błędu wklej logi z powrotem do Cursora:

Dopiero po zrozumieniu przyczyny źródłowej przełącz się na tryb Agent, aby naprawić:

Po każdej poprawce zweryfikuj, że faktycznie działa, dodając test, który wyłapałby ten błąd:

Add a regression test for the bug we just fixed.
The test should:
1. Set up the exact conditions that caused the failure (user with [specific condition])
2. Call the endpoint with the same request that was failing
3. Assert that it succeeds with the correct response
4. Also test the edge case where [related condition]
Put the test in @src/routes/__tests__/orders.test.ts following existing patterns.
Run the test to confirm it passes.

Jeśli test nie przechodzi, wiesz, że poprawka jest niekompletna. Jeśli przechodzi, masz test regresji, który zapobiega powrotowi tego błędu.

TypeScript reports this error at build time:
[PASTE TSC ERROR]
Trace the types involved. Show me:
1. Where the type is defined
2. How it flows through the code to this point
3. Why the types are incompatible
4. The minimal fix that maintains type safety
Do not use `any` or type assertions to fix this. Find the real type issue.
This code has a race condition -- when two requests arrive simultaneously
for the same user, the second request overwrites the first one's data.
Relevant code: @src/services/user-service.ts
Analyze the concurrent execution paths and identify:
1. Which operation is not atomic
2. Where the race window exists
3. The best fix (optimistic locking, database transaction, or mutex)
Show me the fix with before/after code comparison.

Gdy masz wiele błędów budowania, nie naprawiaj ich po jednym:

To workflow w stylu TDD, który spopularyzował Steve Sewell z Builder.io: pozwól agentowi uruchomić budowanie, zobaczyć błędy, naprawić je i iterować, aż wszystko przejdzie — wszystko automatycznie, gdy auto-run jest włączony.

Pętla “napraw-zepsuj-napraw”. Pomijasz fazę 1 (badanie). Wróć do trybu Ask, zrozum system, a potem dokonaj jednej celowanej zmiany.

Agent “naprawia” test zamiast kodu. Wyraźnie powiedz: “The test is correct. The implementation is wrong. Fix the implementation to make the test pass.”

Logi trybu Debug nie wyłapują problemu. Błąd może być w innej części łańcucha wywołań niż oczekiwano. Poproś agenta o dodanie logowania szerzej lub odtwórz błąd wielokrotnie, aby wyłapać przerywane zachowanie.

Zbyt wiele błędów do naprawienia naraz. Triażuj: najpierw napraw błędy kompilacji (blokują wszystko inne), potem błędy runtime, a na koniec błędy logiki. Użyj wzorca kaskady błędów budowania opisanego powyżej.