SSD Nodes Learn 🎉 VPS od $5.50/mies.
Przewodniki Matt ConnorAutor: Matt Connor

Claude Code: wznawianie sesji i historia rozmów

Sprawdź, jak wznowić sesję Claude Code przez nazwę, identyfikator lub picker oraz gdzie na dysku znajdują się tekstowe transkrypcje rozmów.

Jak wznowić sesję Claude Code

Aby wznowić sesję Claude Code, uruchom claude --continue w celu otwarcia najnowszej rozmowy w bieżącym katalogu albo claude --resume, aby wybrać starszą rozmowę z listy. W już uruchomionej sesji polecenie /resume przełącza do innej rozmowy bez kończenia bieżącej sesji. Skrócone formy to -c i -r.

claude --continue
claude --resume
claude --resume auth-refactor

Jeśli znana jest nazwa sesji lub jej identyfikator, należy przekazać go jako argument. Claude Code przejdzie bezpośrednio do tej sesji bez wyświetlania listy wyboru.

Wszystkie poniższe informacje odpowiadają oficjalnej dokumentacji sesji z sierpnia 2026. Claude Code jest często wydawany, a nazwy flag i skróty klawiaturowe zmieniają się między wersjami. Jeśli informacje tutaj różnią się od tego, co wyświetla terminal, źródłem rozstrzygającym jest claude --help oraz wskazana strona.

Czym właściwie jest sesja

Sesja to jeden zapisany przebieg rozmowy powiązany z katalogiem projektu. Zawiera całą historię wiadomości, w tym wywołania narzędzi wykonane przez Claude oraz wyniki zwrócone przez te wywołania. Claude Code zapisuje ją na dysku stale podczas pracy, a nie tylko na końcu. Dzięki temu rozmowa zostaje zachowana po zamknięciu terminala lub utracie połączenia SSH.

Wznowienie przywraca więcej niż sam tekst. Pełna historia rozmowy jest odtwarzana razem z modelem używanym przez sesję oraz subagentem, z którym ją uruchomiono, jeśli użyto --agent. Przywracany jest również tryb uprawnień, z wyjątkami wprowadzonymi ze względów bezpieczeństwa. Tryb planowania i tryb pomijania uprawnień nigdy nie są przywracane. Sesja działająca w jednym z tych trybów zostaje wznowiona w trybie, w którym zostałaby uruchomiona nowa sesja.

Niektóre elementy nie są przywracane, ponieważ były flagami przekazanymi podczas uruchamiania, a nie zapisanym stanem. Katalogi dodane za pomocą --add-dir oraz opcje takie jak --mcp-config, --settings i --plugin-dir trzeba przekazać ponownie przy wznawianiu. Pliki ustawień, takie jak settings.json, są ponownie odczytywane podczas uruchamiania. Nie trzeba więc ponownie podawać ustawień zapisanych w tych plikach.

Dlaczego historia sesji ma większe znaczenie na VPS

Oto fakt, który zaskakuje wiele osób. Transkrypcja jest zapisywana na maszynie, na której działa agent. Nie znajduje się na koncie użytkownika i nie jest synchronizowana z chmurą. Jest plikiem na dysku tego komputera.

Dlatego sesja pozostawiona w oknie tmux na VPS nie pojawia się na liście wyboru na laptopie, a sesja z laptopa nie pojawia się na VPS. Żadne dane nie są między nimi przenoszone. Jeśli praca przebiega w sposób typowy dla uruchamiania Claude Code w tmux na VPS, to właśnie na serwerze gromadzi się rzeczywista historia rozmów, natomiast lokalna lista wyboru zawiera inny i znacznie mniejszy zestaw sesji.

Ten sam podział występuje między interfejsami. Aplikacja desktopowa i rozszerzenie VS Code przechowują własne historie sesji, a żadna z nich nie jest historią CLI. Claude Code w przeglądarce również przechowuje własną historię.

Na jednej maszynie wyszukiwanie obejmuje więcej lokalizacji, niż można oczekiwać. claude --resume <session-id> najpierw przeszukuje bieżący katalog projektu i jego git worktrees, a następnie wszystkie pozostałe projekty na tej maszynie. Należy zapamiętać wyrażenie „na tej maszynie”. Identyfikator sesji z innego hosta nie zostanie znaleziony, a Claude Code informuje o tym za pomocą No conversation found with session ID: <session-id>.

Gdzie Claude Code przechowuje historię sesji

Domyślnie transkrypcje są przechowywane w katalogu konfiguracji Claude Code, w ścieżce w postaci ~/.claude/projects/<project>/<session-id>.jsonl.

<project> to ścieżka katalogu roboczego, w której każdy znak niealfanumeryczny zastąpiono łącznikiem. Oznacza to, że sesja uruchomiona w /home/deploy/apps/api jest przechowywana w katalogu o nazwie -home-deploy-apps-api. Jeżeli tak przekształcona nazwa przekraczałaby 200 znaków, Claude Code skraca ją i dodaje skrót pełnej ścieżki. Dzięki temu nazwa katalogu mieści się w limitach systemu plików.

Plik używa formatu JSONL: każdy wiersz zawiera jeden obiekt JSON, czyli wiadomość, użycie narzędzia albo wpis metadanych. Jest to zwykły tekst, więc jego odczyt jest bezpieczny.

Nie należy jednak pisać parsera przeznaczonego do tego pliku. Format wpisów jest wewnętrznym formatem Claude Code i zmienia się między wersjami. Z tego powodu skrypt odczytujący te pliki bezpośrednio może przestać działać po dowolnej aktualizacji. Dokumentacja firmy Anthropic zaleca używanie /export albo udokumentowanych interfejsów skryptowych. Jest to właściwe rozwiązanie właśnie z tego powodu.

Dwa ustawienia zmieniają lokalizację i czas przechowywania danych. CLAUDE_CONFIG_DIR przenosi cały katalog konfiguracji, co pozwala umieścić transkrypcje na osobnym wolumenie albo na wolumenie zaszyfrowanym. cleanupPeriodDays w settings.json określa czas ich przechowywania. Wartość domyślna wynosi 30 dni, a minimalna 1 dzień.

Co znajduje się w tych plikach transkrypcji

Zapisywany jest wynik każdego narzędzia, dlatego transkrypcja zawiera treść plików odczytanych przez Claude oraz wyniki poleceń wykonanych przez Claude. Na stronie Anthropic dotyczącej wykorzystania danych zapisano to wprost: Claude Code przechowuje transkrypcje sesji lokalnie w postaci zwykłego tekstu w ~/.claude/projects/.

Należy uwzględnić skutki tego rozwiązania na serwerze. Jeśli Claude odczytał plik .env, aby ustalić, dlaczego usługa nie uruchamia się, treść tego pliku znajduje się teraz w pliku JSONL w katalogu domowym. Jeśli polecenie wyświetliło connection string, ten ciąg również się tam znajduje. Nie oznacza to wycieku. Transkrypcja rejestruje przebieg operacji, co jest jej podstawowym celem. Z tego powodu należy uwzględnić ją w modelu zagrożeń.

  • Kopie zapasowe: zwykła kopia /home lub /root skopiuje transkrypcje do lokalizacji używanej przez system kopii zapasowych. Należy dodać wykluczenie albo zaakceptować, że kopie promptów i treści plików będą przechowywane w magazynie kopii zapasowych.
  • Migawki i obrazy: migawka VPS wykonana z dowolnego powodu zawiera cały katalog. To samo dotyczy obrazu sklonowanego w celu utworzenia drugiego serwera.
  • Inne konta w systemie: należy samodzielnie sprawdzić tryby dostępu za pomocą ls -ld ~/.claude ~/.claude/projects, zamiast zakładać, że uprawnienia są restrykcyjne.
  • Zamierzone przesyłanie: polecenie /feedback celowo wysyła historię rozmowy do Anthropic, a /bug i /share przekazują dane tą samą ścieżką. Są to działania wykonywane na żądanie użytkownika, dlatego przed potwierdzeniem należy wiedzieć, na co wyrażana jest zgoda.

Jeśli transkrypcja nie ma być tworzona, CLAUDE_CODE_SKIP_PROMPT_HISTORY wyłącza zapisywanie transkrypcji, a --no-session-persistence wyłącza je dla pojedynczego nieinteraktywnego uruchomienia claude -p. Przed ustawieniem któregokolwiek z tych parametrów należy jasno ocenić kompromis. Mechanizm resume odczytuje dane z transkrypcji, dlatego brak transkrypcji oznacza brak możliwości wznowienia sesji.

Jak znaleźć starą sesję

Otwórz selektor za pomocą claude --resume albo za pomocą /resume w uruchomionej sesji. W każdym wierszu wyświetlana jest nazwa sesji, jeśli została ustawiona, albo wygenerowany tytuł, jeśli nazwy nie ustawiono, a także czas od ostatniej aktywności, gałąź git i rozmiar pliku.

Selektor obsługuje wyszukiwanie. Naciśnij / albo po prostu zacznij wpisywać tekst, aby filtrować listę. Warto zapamiętać skróty rozszerzające zakres wyszukiwania: Ctrl+A pokazuje sesje ze wszystkich projektów na tym komputerze, Ctrl+W pokazuje wszystkie worktree bieżącego repozytorium, a Ctrl+B ogranicza listę do bieżącej gałęzi git. Naciśnij Space, aby wyświetlić podgląd zawartości sesji przed jej wznowieniem, oraz Ctrl+R, aby zmienić nazwę zaznaczonej sesji.

Nadawanie nazw sesjom znacznie ułatwia zarządzanie nimi. Rozpocznij sesję za pomocą claude -n auth-refactor albo uruchom /rename auth-refactor w trakcie pracy, gdy okaże się, że rozmowa przekształciła się w konkretne zadanie. Nazwaną sesję można następnie wznowić po nazwie bezpośrednio z powłoki.

Nienazwana sesja również otrzymuje wygenerowany tytuł. Jest on tworzony przez żądanie wykonywane w tle do małego, szybkiego modelu, który podsumowuje pierwszy prompt. Tytuł ułatwia rozpoznanie wiersza w selektorze, ale nie służy do wznawiania sesji. claude --resume <name> dopasowuje wyłącznie nazwy ustawione samodzielnie.

Wyszukiwanie właściwej sesji w transkryptach

Czasami pamięta się tylko konkretne sformułowanie. Transkrypty są plikami tekstowymi, więc można je przeszukiwać.

grep -rl "nftables" ~/.claude/projects/

Polecenie wyświetla ścieżki pasujących transkryptów. Nazwa pliku bez rozszerzenia .jsonl jest identyfikatorem sesji, a claude --resume <session-id> go akceptuje. Za pomocą grep ustal, której sesji potrzebujesz, a następnie wznów ją lub wyeksportuj, aby odczytać jej zawartość.

Należy uwzględnić dwa ograniczenia. Zawartość jest kodowana zgodnie z formatem JSON, dlatego sformułowanie zawierające cudzysłowy lub podzielone między wierszami może nie zostać znalezione jako dosłowny ciąg. Dopasowanie w wyniku narzędzia oznacza, że Claude zobaczył ten tekst, a nie że został on wpisany przez użytkownika.

Odczytywanie i eksportowanie rozmowy

/export renderuje bieżącą rozmowę jako zwykły tekst. Wiadomości i dane wyjściowe narzędzi są zapisywane w czytelnej formie zamiast jako JSON. Bez argumentu otwierane jest menu z opcją skopiowania do schowka lub zapisania do pliku. Po podaniu nazwy pliku /export handover.txt zapisuje dane bezpośrednio w podanej ścieżce. Jest to właściwy sposób przenoszenia rozmowy z serwera na laptopa lub dołączania jej do zgłoszenia.

W automatyzacji należy używać interfejsów przeznaczonych do stabilnego użycia. Hooki i polecenia wiersza stanu otrzymują pole transcript_path jako dane wejściowe, dlatego hook SessionEnd może archiwizować transkrypt po zakończeniu sesji. Można również zadać pytanie zapisanej sesji bez jej otwierania:

claude -p --resume <session-id> --output-format json "summarize what we changed" | jq -r '.result'

Powoduje to wysłanie dodatkowego promptu do starej rozmowy i zwrócenie struktury JSON. Jest to znacznie lepsza podstawa niż parsowanie formatu JSONL, który może ulec zmianie w następnym wydaniu.

Kiedy rozpoczęcie od nowa jest lepsze niż wznowienie

Wznowienie przywraca całą historię, a to właśnie całą historię zawiera każde kolejne żądanie. Kontynuowanie dzisiaj rozmowy, która wczoraj trwała cztery godziny, jest kosztowne. Wyjaśnienie, jak zużycie tokenów narasta podczas długiej sesji, pokazuje, skąd faktycznie bierze się ten koszt.

Claude Code czasami oferuje rozwiązanie pośrednie. W planie Pro lub Max wznowienie sesji, która była bezczynna przez około godzinę i zawiera ponad 100,000 tokenów, otwiera okno dialogowe przed wysłaniem pierwszej wiadomości. W tym czasie pamięć podręczna promptu wygasła, dlatego kolejne żądanie ponownie przetwarza całą historię jeden raz, niezależnie od wybranej opcji.

  • Wznowienie z podsumowania natychmiast wykonuje kompakcję, dlatego kolejne żądania zawierają podsumowanie zamiast pełnej historii. Koszt pojedynczego żądania jest niższy, ale informacje pominięte w podsumowaniu nie są już dostępne.
  • Wznowienie pełnej sesji bez zmian ładuje rozmowę w niezmienionej postaci. Zachowywane są wszystkie szczegóły, a koszt każdego żądania rośnie wraz z rozmiarem rozmowy.

Trzecia opcja wznawia pełną sesję i wyłącza wyświetlanie tego okna dialogowego podczas kolejnych wznowień.

Decyzja jest prostsza, niż się wydaje. Wznów sesję, gdy to, co zamierzasz napisać, zależy od wcześniejszej rozmowy. Rozpocznij od nowa, gdy tak nie jest. Nieaktualny kontekst łatwo rozpoznać, gdy zwraca się na niego uwagę: Claude odwołuje się do pliku usuniętego godzinę wcześniej albo ponownie uzasadnia decyzję podjętą na początku sesji. Taki nieaktualny kontekst jednocześnie zwiększa zużycie tokenów i obniża dokładność.

Jeśli przydatną częścią starej rozmowy jest decyzja lub informacja, która będzie potrzebna ponownie, nie należy polegać na wznowieniu sesji. Należy zapisać ją w miejscu widocznym dla każdej sesji. Do tego służą pliki pamięci Claude Code.

Warto znać również /branch. Polecenie kopiuje rozmowę do bieżącego punktu i przełącza do utworzonej kopii, pozostawiając oryginał bez zmian i nadal dostępny w selektorze. Można go użyć do wypróbowania drugiego podejścia bez utraty pierwszego.

Czym wznowienie różni się od kompakcji i pamięci

Te mechanizmy są stale mylone, mimo że rozwiązują różne problemy.

Wznowienie służy do ponownego otwarcia rozmowy po jej zamknięciu, ponownym uruchomieniu systemu albo przejściu do innego zadania. Kompakcja dotyczy okna kontekstu w aktywnej rozmowie: /compact zastępuje kontekst przechowywany przez Claude'a podsumowaniem, dzięki czemu kolejne żądania przesyłają mniej tokenów. Jeśli problem polega na zapełnieniu okna kontekstu, należy użyć kompakcji. Szczegółowo opisano to w zarządzaniu oknem kontekstu Claude Code.

Pamięć działa jeszcze inaczej. Pliki CLAUDE.md i pamięć automatyczna zawierają instrukcje oraz fakty ładowane na początku każdej sesji, więc nie są rozmową, do której się wraca. Są zapisem informacji, dzięki któremu nie trzeba wracać do jednej konkretnej rozmowy.

Jeśli potrzebne są dwie rozmowy działające jednocześnie i koordynujące pracę, służy do tego odrębny mechanizm. Sesje Claude Code mogą wysyłać do siebie wiadomości, gdy obie są aktywne. Jest to inny problem niż przywrócenie wczorajszej sesji z dysku.

FAQ

Gdzie Claude Code przechowuje historię moich sesji?

Domyślnie w katalogu konfiguracji, w ~/.claude/projects/<project>/<session-id>.jsonl, gdzie <project> oznacza ścieżkę katalogu roboczego, w której znaki inne niż alfanumeryczne zastąpiono łącznikami. Każdy plik ma format JSONL: zawiera jeden obiekt JSON w każdym wierszu, odpowiednio dla wiadomości, użycia narzędzia lub wpisu metadanych. CLAUDE_CONFIG_DIR przenosi katalog konfiguracji w inne miejsce, a cleanupPeriodDays w settings.json określa, jak długo przechowywane są transkrypcje. Domyślnie jest to 30 dni, a minimalna wartość wynosi 1.

Dlaczego nie widzę sesji VPS na liście wyboru na laptopie?

Ponieważ transkrypcje są zapisywane na dysku komputera, na którym działał agent, i nie są synchronizowane między komputerami. Rozmowa przeprowadzona w tmux na VPS istnieje tylko na VPS. Należy wznowić ją tam przez SSH albo uruchomić w niej /export i skopiować plik tekstowy, jeśli potrzebna jest lokalna kopia.

Czy można wznowić sesję rozpoczętą w innym katalogu?

Tak, jeśli znany jest jej identyfikator. claude --resume <session-id> najpierw wyszukuje sesję w bieżącym katalogu projektu i jego drzewach roboczych git, a następnie we wszystkich pozostałych projektach na tym samym komputerze. Na liście wyboru Ctrl+A rozszerza listę na wszystkie projekty na komputerze, a Ctrl+W rozszerza ją na wszystkie drzewa robocze bieżącego repozytorium. Jeśli nic nie zostanie znalezione, Claude Code zgłasza No conversation found with session ID: <session-id>.

Czy należy wznowić starą sesję, czy rozpocząć nową?

Sesję należy wznowić, gdy następna wiadomość zależy od wcześniejszej treści tej rozmowy. Nową sesję należy rozpocząć, gdy takiej zależności nie ma, ponieważ wznowienie ładuje całą historię, a każde kolejne żądanie nadal ją przenosi. Należy zwracać uwagę na rozbieżności: jeśli sesja nadal odwołuje się do już usuniętych plików, zawiera nieaktualny kontekst, który przy każdej turze zwiększa zużycie tokenów i obniża dokładność.

Czy można uniemożliwić Claude Code zapisywanie transkrypcji na dysku?

Tak. CLAUDE_CODE_SKIP_PROMPT_HISTORY wyłącza zapisywanie transkrypcji, a --no-session-persistence wyłącza je dla pojedynczego nieinteraktywnego uruchomienia claude -p. Najpierw należy uwzględnić konsekwencje, ponieważ wznowienie odczytuje transkrypcje. Po ich wyłączeniu --continue i --resume nie będą miały czego załadować. Jeśli problemem jest lokalizacja plików, a nie samo ich istnienie, należy wskazać CLAUDE_CONFIG_DIR na zaszyfrowany wolumin i zmniejszyć wartość cleanupPeriodDays.