Naprawianie błędów: Obsługa awarii i wychodzenie z impasu
Claude właśnie zrefaktorował twój moduł uwierzytelniania. Dotknął sześciu plików, zaktualizował testy, a potem — type checker pokazuje 23 błędy. Testy, które przechodziły pięć minut temu, teraz zawodzą w trzech zestawach testowych. Claude próbuje naprawić błędy, ale wprowadza nowe. Jesteś dwie iteracje w głąb spirali naprawa-naprawy i baza kodu jest gorsza niż na początku. Musisz wrócić do znanego dobrego stanu, zrozumieć, co poszło nie tak, i spróbować ponownie z lepszym podejściem.
Ten poradnik obejmuje każdy mechanizm odzyskiwania, jaki daje ci Claude Code: checkpointy do cofania edycji, zarządzanie sesjami do czystego restartu, strategie przerwania pętli błędów i workflow zapobiegające kaskadowym awariom w pierwszej kolejności.
Co wyniesiesz z tego poradnika
Dział zatytułowany „Co wyniesiesz z tego poradnika”- Przewijanie checkpointu Esc-Esc, które natychmiast cofa zmiany Claude
- Workflow odzyskiwania po kaskadowych awariach testów bez utraty postępu
- Strategie wyrwania Claude z pętli naprawa-naprawy
- Techniki zarządzania kontekstem, gdy sesje stają się zbyt długie
- Wzorce prewencyjne redukujące potrzebę odzyskiwania w pierwszej kolejności
System checkpointów
Dział zatytułowany „System checkpointów”Za każdym razem, gdy Claude edytuje plik, tworzy migawkę poprzedniej zawartości przed dokonaniem zmian. Te checkpointy są twoją siatką bezpieczeństwa.
Cofanie za pomocą Esc-Esc
Dział zatytułowany „Cofanie za pomocą Esc-Esc”Najszybsze odzyskiwanie: naciśnij Esc dwa razy. To otwiera interfejs przewijania checkpointu, pozwalając ci przewinąć przez edycje Claude i przywrócić dowolny poprzedni stan. Każdy checkpoint pokazuje, co się zmieniło, więc możesz wybrać dokładnie, do którego punktu cofnąć.
To jest oddzielne od git. Nie musisz niczego commitować. Checkpointy obejmują wszystkie edycje plików dokonane przez Claude podczas bieżącej sesji.
# Po naciśnięciu Esc dwa razy zobaczysz coś takiego:# [3] Edytowano src/lib/auth.ts - zrefaktorowano handler sesji# [2] Edytowano src/lib/auth.ts - dodano rate limiting# [1] Edytowano src/api/routes/login.ts - zaktualizowano handler logowania## Wybierz checkpoint, aby cofnąć do tego stanuProszenie Claude o cofnięcie
Dział zatytułowany „Proszenie Claude o cofnięcie”Jeśli wolisz zostać w rozmowie:
Cofnij ostatnią zmianę, którą dokonałeś w src/lib/auth.ts.Lub aby cofnąć wszystko od konkretnej akcji:
Cofnij wszystkie zmiany z refaktoryzacji uwierzytelniania.Przywróć każdy plik, którego dotknąłeś, do tego, jak było wcześniej.Wyrwanie się z pętli naprawa-naprawy
Dział zatytułowany „Wyrwanie się z pętli naprawa-naprawy”Najczęstszy tryb awarii: Claude wprowadza błąd, próbuje go naprawić, wprowadza nowy błąd, naprawia ten, a kod stopniowo się pogarsza z każdą iteracją. Oto jak się wyrwać.
Stop i ocena
Dział zatytułowany „Stop i ocena”W momencie, gdy zauważysz, że Claude chodzi w kółko, przerwij:
Stop. Nie rób więcej zmian. Ostatnie trzy próby pogorszyłysprawy. Pozwól mi ocenić, gdzie jesteśmy.Następnie poproś Claude o ocenę bieżącego stanu bez dokonywania edycji:
To zmusza Claude do rozumowania o problemie zamiast reaktywnego łatania objawów.
Cofnij i spróbuj ponownie
Dział zatytułowany „Cofnij i spróbuj ponownie”Czasami najczystszą ścieżką do przodu jest cofnięcie wszystkiego i start od nowa z innym podejściem:
Cofnij wszystkie zmiany z tej sesji. Następnie spróbujmy innegopodejścia do refaktoryzacji uwierzytelniania. Zamiast restrukturyzacjicałego modułu, zmień tylko logikę obsługi sesji izostaw resztę nietknięta.Świeża próba z węższym zakresem niemal zawsze daje lepsze wyniki niż próba uratowania zepsutej refaktoryzacji.
Daj Claude inny kierunek
Dział zatytułowany „Daj Claude inny kierunek”Jeśli Claude ciągle zawodzi tą samą strategią, przekieruj jawnie:
Przestań próbować naprawić błąd typu zmieniając interfejs.Zamiast tego zaktualizuj implementację w auth-service.ts, aby pasowałado istniejącego interfejsu. Interfejs jest poprawny;implementacja jest błędna.Claude często potrzebuje, abyś powiedział mu, która strona konfliktu jest autorytatywna. Bez kierunku może ciągle oscylować między zmianą interfejsu a zmianą implementacji.
Odzyskiwanie z awarii testów
Dział zatytułowany „Odzyskiwanie z awarii testów”Diagnozowanie kaskadowych awarii
Dział zatytułowany „Diagnozowanie kaskadowych awarii”Gdy wiele testów zawodzi po zmianie, awarie są zwykle połączone. Poproś Claude o znalezienie przyczyny źródłowej:
To zapobiega temu, aby Claude próbował naprawiać każdy test indywidualnie, co często prowadzi do niespójnych łatek w plikach testowych.
Wzorzec przyrostowego odzyskiwania
Dział zatytułowany „Wzorzec przyrostowego odzyskiwania”Gdy masz wiele awarii, odzyskuj przyrostowo:
-
Uruchom najpierw type checker — Błędy typu są najczęstszą przyczyną źródłową awarii testów po refaktoryzacji. Napraw te przed patrzeniem na wyniki testów.
-
Uruchamiaj jeden plik testowy na raz — Zacznij od pliku testowego najbliższego zmienionemu kodowi. Napraw ten przed przejściem do zależnych plików testowych.
-
Weryfikuj po każdej poprawce — Uruchom pełny zestaw po naprawieniu każdego pliku testowego, aby zobaczyć, czy poprawka rozwiązała awarie gdzie indziej też.
-
Zatrzymaj się, gdy zielono — Nie kontynuuj “naprawiania” testów, które już przechodzą.
Uruchom najpierw npx tsc --noEmit. Napraw wszystkie błędy typu. Następnie uruchomtesty tylko dla @src/lib/auth.test.ts. Napraw wszelkie awarie.Następnie uruchom pełny zestaw, aby zobaczyć, co jeszcze się wyjaśniło.Zarządzanie przeciążeniem kontekstu
Dział zatytułowany „Zarządzanie przeciążeniem kontekstu”Długie sesje gromadzą kontekst: odczyty plików, outputy komend, nieudane próby, wycofane podejścia. W końcu odpowiedzi Claude się pogarszają, ponieważ ważne informacje są zakopane pod szumem.
Użyj /compact do zwolnienia kontekstu
Dział zatytułowany „Użyj /compact do zwolnienia kontekstu”Gdy Claude zaczyna tracić ślad wzorców twojego projektu lub powtarzać wcześniejsze błędy:
/compact skup się na refaktoryzacji uwierzytelniania i bieżących awariach testówKomenda /compact podsumowuje rozmowę i zwalnia przestrzeń kontekstową. Argument focus mówi Claude, na czym priorytetyzować w podsumowaniu, więc ważny kontekst przetrwa kompakcję.
Zacznij na świeżo z /clear
Dział zatytułowany „Zacznij na świeżo z /clear”Jeśli kompakcja nie wystarczy, wyczyść całą rozmowę:
/clearNastępnie natychmiast przywróć kontekst:
Pracowałem nad refaktoryzacją modułu uwierzytelniania. Bieżącystan to:- Zmieniłem src/lib/auth.ts, aby używać asynchronicznej obsługi sesji- Type checker przechodzi- Dwa testy w auth.test.ts nadal zawodzą- Awarie są związane z setupem mocków dla nowych funkcji asynchronicznych
Przeczytaj zawodzące testy i napraw setup mocków.Dziel długie zadania na sesje
Dział zatytułowany „Dziel długie zadania na sesje”Jeśli zadanie zajmuje więcej niż 30-40 minut, podziel je na oddzielne sesje zamiast walczyć z degradacją kontekstu:
- Sesja 1: Schemat i migracja bazodanowa
- Sesja 2: Implementacja routy API
- Sesja 3: Testy i integracja
- Sesja 4: Review i PR
Rozpocznij każdą sesję na świeżo z claude, nie claude -c. Daj Claude krótkie podsumowanie tego, co zostało zrobione w poprzednich sesjach i jakie jest bieżące zadanie.
Odzyskiwanie sesji
Dział zatytułowany „Odzyskiwanie sesji”Kontynuacja po crashu
Dział zatytułowany „Kontynuacja po crashu”Jeśli Claude Code nieoczekiwanie się wyłączy, twoja historia rozmowy jest zachowana. Wznów za pomocą:
claude -cTo kontynuuje najnowszą rozmowę. Wszystkie poprzednie wiadomości i wyniki narzędzi są przywrócone.
Rozwidlanie sesji
Dział zatytułowany „Rozwidlanie sesji”Jeśli chcesz spróbować innego podejścia bez utraty bieżącej sesji:
claude --continue --fork-sessionTo tworzy nową sesję z tą samą historią rozmowy do tego punktu. Oryginalna sesja pozostaje niezmieniona. Możesz spróbować alternatywnego podejścia w rozwidleniu i wrócić do oryginału, jeśli nie zadziała.
Przełączanie na inną sesję
Dział zatytułowany „Przełączanie na inną sesję”Jeśli masz wiele sesji z różnych prób:
claude --resumeTo otwiera selektor sesji. Użyj B do filtrowania po bieżącym branchu, ułatwiając znalezienie sesji, której chcesz.
Wzorce prewencyjne
Dział zatytułowany „Wzorce prewencyjne”Najlepsze odzyskiwanie to brak potrzeby odzyskiwania. Te wzorce redukują awarie zanim się zdarzą.
Weryfikuj po każdej zmianie
Dział zatytułowany „Weryfikuj po każdej zmianie”Najbardziej efektywny nawyk:
Po dokonaniu każdej zmiany uruchom type checker i odpowiednie testy.Nie przechodź do następnego kroku, dopóki bieżący krok nie przejdzie. Jeślicoś zawodzi, napraw to przed kontynuowaniem.To wychwytuje błędy, gdy są małe i izolowane, nie po tym, jak rozlały się przez bazę kodu.
Używaj checkpointów Git
Dział zatytułowany „Używaj checkpointów Git”Przed ryzykownymi operacjami utwórz commit git:
Commitnij bieżący stan pracy z komunikatem typu"checkpoint: przed refaktoryzacją auth". Nie wypychaj tego commitu.Jeśli wszystko pójdzie nie tak, możesz git reset --soft HEAD~1, aby wrócić do tego punktu zachowując wszystkie zmiany w staged.
Zawęź zakres
Dział zatytułowany „Zawęź zakres”Zamiast “zrefaktoruj moduł uwierzytelniania”, spróbuj “zmień tylko logikę wygasania sesji w auth.ts, zachowując resztę modułu niezmienioną.” Węższy zakres oznacza mniej dotkniętych plików, mniej potencjalnych błędów i łatwiejsze odzyskiwanie.
Poproś Claude o wyjaśnienie przed edycją
Dział zatytułowany „Poproś Claude o wyjaśnienie przed edycją”Przed jakąkolwiek złożoną zmianą:
Przed dokonaniem zmian wyjaśnij dokładnie, co planujesz zmodyfikowaći dlaczego. Wymień każdy plik, którego dotkniesz, i jaka będzie zmianaw każdym pliku.Wychwycenie złego planu jest znacznie tańsze niż cofanie złej implementacji.
Kiedy to nie działa
Dział zatytułowany „Kiedy to nie działa”Esc-Esc nie pokazuje checkpointów — Checkpointy istnieją tylko dla bieżącej sesji. Jeśli rozpocząłeś nową sesję, checkpointy z poprzedniej sesji zniknęły. Użyj historii git do odzyskania zamiast tego: git diff, aby zobaczyć, co się zmieniło, git checkout -- <file>, aby cofnąć konkretne pliki.
Claude ciągle powtarza to samo nieudane podejście — Użyj /clear i zacznij na świeżo. Opisz problem od zera i jawnie wyklucz podejście, które nie działało: “Nie restrukturyzuj modułu. Zamiast tego dokonaj minimalnej zmiany potrzebnej do naprawy problemu z timeoutem.”
/compact traci ważny kontekst — Dodaj argument focus: /compact skup się na migracji bazodanowej i trzech pozostałych awariach testów. Bez focus kompakcja może upuścić szczegóły, których potrzebujesz. Dla krytycznego kontekstu dodaj go do swojego CLAUDE.md, aby przetrwał między sesjami.
Testy przechodzą lokalnie, ale Claude wprowadził subtelne błędy — Po każdej znaczącej zmianie poproś Claude o przejrzenie swojej własnej pracy: “Przejrzyj wszystkie zmiany, które dokonałeś w tej sesji. Sprawdź przypadki brzegowe, obsługę null i ścieżki błędów, które mogą brakować.” Ten autoreview wychwytuje problemy, które testy przegapiają.
Sesja staje się nieużyteczna z powodu rozdęcia kontekstu — Rozpocznij nową sesję z claude (nie claude -c). Daj Claude krótkie podsumowanie i konkretne pliki do przeczytania. Pięć minut przywracania kontekstu jest szybsze niż walka ze zdegradowaną sesją przez trzydzieści minut.
Co dalej
Dział zatytułowany „Co dalej”Właśnie ukończyłeś poradnik szybkiego startu Claude Code. Możesz zainstalować Claude Code, uwierzytelnić się, skonfigurować uprawnienia, skonfigurować swoje IDE, zainicjować projekt z CLAUDE.md, zaplanować funkcje z PRD, używać extended thinking dla trudnych problemów, podłączać serwery MCP, budować funkcje przyrostowo, zarządzać kontrolą wersji i odzyskiwać z awarii.