Naprawianie błędów w Claude Code: cofanie, reset i wychodzenie z impasu
Claude Code cofa nieudaną turę za pomocą checkpointów: /rewind albo dwukrotne Esc przy pustym polu promptu przywraca kod, rozmowę lub oba do dowolnego wcześniejszego promptu w sesji. Checkpointy śledzą tylko narzędzia edycji plików, więc polecenia powłoki, edycje subagentów i skutki zewnętrzne wymagają gita i reguł uprawnień. Naprawa kończy się, gdy testy i kontrola typów znów przechodzą.
Ta strona jest dla programistów w pierwszych tygodniach pracy z Claude Code. Sytuacja: Claude zrefaktorował moduł uwierzytelniania w sześciu plikach, a kontrola typów (tsc) zgłasza teraz 23 błędy. Poprawka Claude’a dodała trzy nowe awarie, a kolejna zepsuła zestaw testów, który wcześniej był zielony. Od dwóch iteracji kręcisz się w pętli „poprawka poprawki”, a kod jest w gorszym stanie niż na początku.
Co wyniesiesz z tej strony o naprawianiu błędów
Dział zatytułowany „Co wyniesiesz z tej strony o naprawianiu błędów”- Dokładne opcje
/rewind: co każda przywraca i czego checkpointy nie przywracają nigdy. - Pięciokrokową procedurę na pętlę poprawek z promptem, który zatrzymuje edycje i szuka przyczyny źródłowej.
- Prompt na kaskadowe awarie testów: naprawia jedną przyczynę naraz i dowodzi każdej poprawki przebiegiem testów.
- Kiedy użyć
/compact,/clear,/branch, a kiedy nowej sesji, oraz prompt, który odbudowuje kontekst po resecie. - Zabezpieczenia, dzięki którym naprawa rzadko jest potrzebna: bramki weryfikacji, checkpointy w gicie i reguły uprawnień dla nieodwracalnych poleceń.
Wszystko poniżej sprawdziliśmy 2026-09-26 na Claude Code 2.1.283 (claude --help) i w oficjalnej dokumentacji checkpointów, sesji i poleceń.
Jak działają checkpointy w Claude Code?
Dział zatytułowany „Jak działają checkpointy w Claude Code?”Claude Code zapisuje stan kodu przed każdym promptem, który rozpoczyna turę. Przechowuje migawki plików dla 100 ostatnich checkpointów w sesji i zapisuje je razem z rozmową, więc /rewind działa także po wznowieniu przez claude --continue lub claude --resume.
Menu cofania otworzysz poleceniem /rewind (aliasy /undo i /checkpoint) albo dwukrotnym Esc, gdy pole promptu jest puste. Jeśli w polu jest tekst, podwójne Esc go czyści; strzałka w górę (Up) przywróci potem szkic.
Menu pokazuje każdy prompt wysłany w sesji. Wybierz jeden, a potem akcję:
| Akcja | Kod na dysku | Rozmowa | Kiedy jej użyć |
|---|---|---|---|
| Restore code and conversation | Cofnięty | Cofnięta | Całe podejście było złe i chcesz ponowić prompt od tego miejsca |
| Restore conversation | Bez zmian | Cofnięta | Kod jest w porządku, ale rozmowa weszła w ślepą uliczkę |
| Restore code | Cofnięty | Bez zmian | Chcesz cofnąć edycje, a Claude ma pamiętać, co zawiodło |
| Summarize from here | Bez zmian | Późniejsze wiadomości streszczone | Długa dygresja przy debugowaniu zapycha kontekst |
| Summarize up to here | Bez zmian | Wcześniejsze wiadomości streszczone | Wczesne rozpoznanie to szum, liczy się ostatnia praca |
| Never mind | Bez zmian | Bez zmian | Menu otworzyło się przypadkiem |
Obie opcje przywracania kodu pojawiają się tylko wtedy, gdy checkpoint ma śledzone zmiany w plikach. Po przywróceniu rozmowy lub wybraniu Summarize from here twój pierwotny prompt wraca do pola wprowadzania, więc możesz go poprawić i wysłać ponownie. Aby pokierować streszczeniem, zaznacz strzałkami opcję Summarize i w wierszu add context (optional) wpisz, co ma zostać zachowane, a potem naciśnij Enter.
Restore code to opcja niedoceniana. Claude zachowuje pamięć o nieudanej próbie, więc w kolejnym prompcie wystarczy napisać „to podejście zepsuło testy sesji; spróbuj drugiego” bez ponownego tłumaczenia zadania.
Czego checkpointy nigdy nie przywracają
Dział zatytułowany „Czego checkpointy nigdy nie przywracają”Checkpointy śledzą tylko edycje wykonane narzędziami Claude’a do edycji plików. Cofanie nie odwróci:
- Poleceń powłoki.
rm,mv,cp, generatorów kodu, formaterów i operacjigituruchomionych przez Bash. - Większości edycji subagentów. Subagent w tle, w tym
/code-review --fixuruchomiony w tle, edytuje poza twoimi checkpointami. Te zmiany cofniesz gitem. - Skutków zewnętrznych. Usuniętej tabeli, wypchniętej gałęzi, wysłanego maila czy wdrożonego Workera.
- Plików podpiętych dowiązaniami symbolicznymi lub twardymi. Przywracanie je pomija i zgłasza
Restored the code, but skipped N files. - Twoich własnych edycji poza Claude Code ani edycji z innej, równoległej sesji, chyba że dotyczą tych samych plików co bieżąca sesja.
Migawki usuwa okresowe czyszczenie, domyślnie po około 30 dniach od ostatniego zapisu w sesji. Cofnięcie do wygasłego checkpointu może skończyć się komunikatem No files were restored. Aby przechowywać je dłużej, ustaw cleanupPeriodDays w ustawieniach. Checkpointy to cofanie na poziomie sesji, a nie kontrola wersji: commituj wszystko, co chcesz zachować.
Jak przerwać pętlę „poprawka poprawki”?
Dział zatytułowany „Jak przerwać pętlę „poprawka poprawki”?”Pętla poprawek to częsta awaria: każda naprawa wprowadza nowy błąd, a Claude oscyluje między dwiema stronami tego samego konfliktu. Kolejne „napraw to” tylko ją wydłużają. Postępuj w tej kolejności.
-
Przerwij. Naciśnij raz
Esc, aby zatrzymać bieżącą turę. Claude zachowuje dotychczasową rozmowę. -
Oceń szkody bez czytania każdej linii. Uruchom
/diff, aby zobaczyć niezacommitowane zmiany i diffy poszczególnych tur, czyli pliki, których dotknęła pętla, a sprawdzenia uruchom sam, na przykładnpx tsc --noEmitinpm test, w drugim terminalu lub z prefiksem!. -
Zdiagnozuj bez edycji. Wklej poniższy prompt. Wymusza szukanie przyczyny źródłowej zamiast łatania objawów.
-
Zdecyduj: naprawa czy cofnięcie. Jeśli diagnoza wskazuje jedną przyczynę z małą poprawką, zatwierdź ją. Jeśli przyczyn jest kilka albo diff dotyka plików spoza zadania, cofnij się opcją Restore code do promptu sprzed zmiany.
-
Spróbuj ponownie w węższym zakresie. Wyślij prompt z mniejszym zakresem i wskaż, która strona konfliktu jest wiążąca.
Ostatnia linia ma znaczenie. Wprost pozwala Claude’owi zarekomendować wyrzucenie pracy, czego agent poproszony o naprawę rzadko proponuje sam z siebie.
Przy ponownej próbie nazwij wprost stronę wiążącą. Bez tego Claude ma skłonność do naprzemiennego zmieniania interfejsu i jego wywołań:
Zakaz edycji testów jest celowy. Agent, który może zmieniać testy, potrafi zazielenić zestaw, osłabiając asercje, a wtedy zielony wynik niczego nie dowodzi. Jak zamienić tę zasadę z prośby w mechanizm, opisuje ochrona wyroczni.
Jak wyjść z kaskadowych awarii testów?
Dział zatytułowany „Jak wyjść z kaskadowych awarii testów?”Po refaktorze czerwone testy często mają kilka wspólnych przyczyn. Naprawianie ich test po teście daje niespójne łatki w wielu plikach. Naprawiaj przyczyny po kolei: najpierw błędy typów, potem plik testów najbliższy zmianie, na końcu cały zestaw.
Krok z przewidywaniem to właśnie weryfikacja. Gdy Claude zapowiada, że poprawka naprawi 12 testów, a zestaw pokazuje o 12 awarii mniej, masz dowód trafnej diagnozy bez czytania łatki. Rozbieżność oznacza, że model przyczyny jest błędny, i to jest moment, żeby się zatrzymać. Pełną pętlę od hipotezy do testu regresji opisuje debugowanie z Claude Code.
Kiedy użyć /compact, /clear, a kiedy nowej sesji?
Dział zatytułowany „Kiedy użyć /compact, /clear, a kiedy nowej sesji?”Długie sesje gromadzą odczyty plików, wyniki poleceń i porzucone próby. Gdy Claude zaczyna zapominać konwencje projektu albo powtarza poprawiony już błąd, przydatny kontekst jest zakopany. Wybierz najlżejsze narzędzie, które rozwiązuje problem:
| Objaw | Narzędzie | Co się dzieje |
|---|---|---|
| Jedna długa dygresja zapycha kontekst | /rewind → Summarize from here | Streszcza tylko ten fragment; wcześniejsze instrukcje zostają nietknięte |
| Sesja jest długa, ale wciąż na temat | /compact focus on the auth refactor and the two failing tests | Streszcza rozmowę; tekst po poleceniu mówi Claude’owi, co zachować |
| Claude wraca do odrzuconego podejścia | /clear | Zaczyna pustą rozmowę w tym samym procesie |
| Chcesz spróbować alternatywy i zachować obecną ścieżkę | /branch try-token-rotation lub claude --continue --fork-session | Kopiuje rozmowę do nowej sesji; oryginał zostaje bez zmian |
| Zadanie skończone, następne niezwiązane | Wyjdź i uruchom claude | Nowa sesja bez żadnego bagażu |
Dwa szczegóły sprawiają, że /clear jest bezpieczniejsze, niż się wydaje. /clear auth-attempt-1 nadaje starej rozmowie etykietę w oknie wyboru sesji /resume. A w tym samym procesie menu cofania pokazuje na górze wpis /resume <session-id> (previous session), więc pomyłkowe /clear da się odwrócić. Zanim zdecydujesz, uruchom /context, aby zobaczyć zapełnienie okna.
Po /clear albo w nowej sesji odbudowuj kontekst z plików, a nie z pamięci:
To wskazanie odrzuconego podejścia chroni nową sesję przed wejściem w tę samą ślepą uliczkę. Jeśli jakiś fakt ma przetrwać każdy reset, na przykład „eksportowane typy auth są zamrożone”, zapisz go w CLAUDE.md; zobacz system pamięci.
Jak wrócić do wcześniejszej sesji?
Dział zatytułowany „Jak wrócić do wcześniejszej sesji?”| Polecenie | Gdzie | Co robi |
|---|---|---|
claude --continue (-c) | Terminal | Otwiera ostatnią rozmowę w bieżącym katalogu razem z jej checkpointami |
claude --resume (-r) | Terminal | Otwiera wybór sesji |
claude --resume auth-refactor | Terminal | Wznawia nazwaną sesję bezpośrednio |
/resume | W sesji | Przełącza na inną rozmowę |
claude -n auth-refactor lub /rename auth-refactor | Terminal lub sesja | Nadaje sesji nazwę, aby łatwo ją potem znaleźć |
W oknie wyboru sesji Ctrl+B zawęża listę do sesji z bieżącej gałęzi gita, Ctrl+W rozszerza ją na wszystkie worktree repozytorium, Ctrl+A na wszystkie projekty, a Space pokazuje podgląd sesji. Sesje uruchomione przez claude -p nie pojawiają się w oknie wyboru ani w --continue; wznowisz je przez claude --resume <session-id>.
Przy wznawianiu podaj ponownie flagi startowe, takie jak --mcp-config, --settings, --plugin-dir, --fallback-model czy --add-dir. Claude Code ich nie przywraca, a sesja, która straciła swój serwer MCP, zawodzi w mylący sposób.
Jak zapobiec następnej naprawie?
Dział zatytułowany „Jak zapobiec następnej naprawie?”Naprawa jest tania, gdy awarię wyłapiesz jedną edycję po jej wystąpieniu. Te nawyki to zapewniają.
Weryfikacja ma działać automatycznie, a nie na prośbę. Prompt „uruchamiaj testy po każdej zmianie” działa do pierwszej kompakcji kontekstu. Hook PostToolUse, który uruchamia sprawdzanie typów (tsc) po każdej edycji, albo hook Stop, który uruchamia testy, zanim Claude zgłosi zakończenie pracy, działa dalej. Zobacz automatyzację hookami. O poprawności zmiany mówi ci bramka, a nie twoja lektura kodu: zatwierdzasz zieloną kontrolę typów i testy oraz /diff, który nie wychodzi poza pliki zadania, a nie lekturę linia po linii.
Zrób checkpoint w gicie przed ryzykowną pracą. Checkpointy obejmują edycje Claude’a; git obejmuje resztę, w tym twoje zmiany i efekty poleceń powłoki. Przed szerokim refaktorem zrób commit sam albo poproś o to Claude’a. Jeśli próba się nie uda, git restore --staged --worktree . odrzuca zmiany w śledzonych plikach, a git clean -n wypisuje nowe, nieśledzone pliki utworzone przez Claude’a (git clean -f je usuwa). Oba polecenia kasują pracę, więc najpierw uruchom git status. Zobacz kontrolę wersji z Claude Code.
Planuj przed zmianą w wielu plikach. Przejdź do trybu planowania klawiszem Shift+Tab albo poleceniem /plan i zatwierdź plan plik po pliku przed jakąkolwiek edycją. Odrzucenie złego planu kosztuje jedną wiadomość; wycofanie złej implementacji kosztuje cofnięcie i ponowną próbę.
Zawężaj zakres. „Zmień tylko logikę wygasania sesji w auth.ts” dotyka jednego pliku i psuje się w jednym miejscu. „Zrefaktoruj uwierzytelnianie” dotyka wszystkiego i psuje się wszędzie.
Co się psuje, gdy próbujesz naprawić błędy?
Dział zatytułowany „Co się psuje, gdy próbujesz naprawić błędy?”Menu cofania nie pokazuje potrzebnego checkpointu. Najpewniej jesteś w innej sesji. Menu pokazuje tylko prompty bieżącej sesji. Wznów oryginał przez claude --resume i tam otwórz /rewind. Wiadomość dodana do kolejki, gdy Claude pracował, dołącza do tej tury i nie dostaje własnego checkpointu; cofnij się do promptu, który zaczął turę.
Cofanie zgłasza No files were restored. Kopie zapasowe dla tego checkpointu zniknęły (okresowe czyszczenie usuwa je po około 30 dniach od ostatniego zapisu w sesji) albo Claude Code nie mógł zapisać lub usunąć plików. Cofnij zmiany gitem i zwiększ cleanupPeriodDays, jeśli często wracasz do starych sesji.
Po Restore code pliki wciąż są złe. Claude zmienił je przez Bash, formater, generator kodu lub subagenta w tle, a checkpointy nie śledzą takich edycji. Znajdź je przez git status i przywróć przez git restore. Plik podpięty dowiązaniem symbolicznym lub twardym zostaje pominięty z komunikatem Restored the code, but skipped N files; poproś Claude’a o odwrócenie tej edycji albo popraw plik sam.
Claude powtarza cofnięte podejście. Restore code and conversation usuwa także pamięć o tym, dlaczego podejście zawiodło. Użyj Restore code albo wskaż odrzucone podejście w kolejnym prompcie.
/compact zgubił potrzebny szczegół. Uruchom /compact z tekstem, który nazywa pliki, błędy i decyzje do zachowania. To, co musi przetrwać każdą kompakcję, należy do CLAUDE.md.
Testy przechodzą, ale podejrzewasz subtelny błąd. Zielony zestaw dowodzi tylko tego, co sprawdzają asercje. Uruchom /code-review na zmianie, a potem poproś Claude’a, żeby przed poprawką napisał test, który nie przechodzi dla podejrzanego przypadku brzegowego. Zobacz testowanie z Claude Code.
Sesja jest zbyt zdegradowana, by nią sterować. Nie walcz z nią. Wyjdź, uruchom claude i użyj promptu odbudowującego kontekst. Świeżą sesją z trzema plikami i dwuzdaniowym podsumowaniem łatwiej sterować niż długą sesją pełną porzuconych prób.
Dokąd dalej po naprawianiu błędów
Dział zatytułowany „Dokąd dalej po naprawianiu błędów”Ta strona zamyka szybki start Claude Code. Jeśli sesja utknęła przez instalację, uwierzytelnianie lub sieć, a nie przez złe edycje, zajrzyj do rozwiązywania problemów z Claude Code. W innych narzędziach naprawa działa inaczej: zobacz naprawianie błędów w Codeksie i obsługę błędów w Cursorze.