Claude Code: jak dodać pamięć sesji przez Recall
Dowiedz się jak skonfigurować wtyczkę Recall na serwerze VPS, aby zachować kontekst pracy w Claude Code. Zredukuj zużycie tokenów dzięki lokalnym podsumowaniom sesji.
Funkcja Recall w pamięci Claude Code
Recall to wtyczka do Claude Code, która zapewnia każdemu projektowi pamięć między sesjami. Zapisuje ona dwa pliki markdown w folderze .recall/ wewnątrz projektu: dziennik zdarzeń typu append-only oraz krótkie podsumowanie stanu prac. Oba pliki są generowane na lokalnej maszynie przez lokalny skrypt w języku Python, więc sama pamięć nie zużywa żadnych tokenów API.
Luka, którą wypełnia to narzędzie, jest niewielka i stała. Sesja na VPS zostaje zamknięta we wtorek. W środę nowa sesja nie wczytuje automatycznie konwersacji z wtorku, mimo że wbudowana pamięć automatyczna Claude Code potrafi zachowywać notatki między sesjami. Jeśli te notatki nie obejmują miejsca, w którym przerwano pracę, użytkownik musi ręcznie wyjaśnić stan projektu lub pozwolić modelowi na ponowne odczytanie połowy repozytorium w celu ustalenia kontekstu. Oba rozwiązania kosztują tokeny, przy czym drugie z nich generuje wysokie zużycie.
Wersja Recall 0.4.0, wydana 18 lipca 2026, pozostaje najnowszym wydaniem na październik 2026, a projekt jest udostępniony na licencji MIT. Jest to wtyczka. Żaden jej element nie wykonuje połączeń sieciowych.
Wymagania na serwerze VPS
Hooki przechwytujące Recall to skrypty Python, które są dostarczane wraz z wtyczką. Brak jest zależności zewnętrznych, więc jedynym rzeczywistym wymaganiem jest interpreter.
python3 -VUbuntu 24.04 odpowiada Python 3.12.3. Recall obsługuje Python 3.9 i nowsze wersje. Minimalne obrazy kontenerów czasami nie zawierają interpretera, w takim przypadku powłoka odpowiada python3: command not found. Należy go zainstalować przed przejściem dalej.
sudo apt update && sudo apt install -y python3NumPy jest opcjonalnym akceleratorem dla jednego z etapów działania podsumowującego (summarizer). Nie jest on wymagany.
python3 -c "import numpy"ModuleNotFoundError: No module named 'numpy' jest tutaj akceptowalną odpowiedzią. Podsumowujący posiada ścieżkę wykonania opartą wyłącznie na Pythonie, a zestaw testowy projektu weryfikuje, czy obie ścieżki wybierają te same zdania.
Pamięć sesji ma większe znaczenie na serwerze niż na laptopie, ponieważ praca na serwerze odbywa się w krótkich interwałach rozłożonych na wiele dni. Jeśli Claude Code działa już w tmux na VPS, Recall jest komponentem, który przenosi sesję z wczoraj do dnia dzisiejszego.
Instalacja wtyczki Recall z marketplace
Dwie komendy wpisane w sesji Claude Code:
/plugin marketplace add raiyanyahya/recall
/plugin install recall@recallDruga komenda to plugin@marketplace. Obie nazwy to w tym miejscu recall, co wygląda na błąd kopiowania, ale nim nie jest.
Sprawdź instalację, uruchamiając jedną z komend wtyczki:
/recall:show/recall:show wyświetla bieżące podsumowanie. W nowym projekcie nie ma jeszcze nic do wyświetlenia, więc weryfikujesz jedynie, czy komenda w ogóle istnieje. Jeśli Claude Code nie rozpoznaje /recall:show, wtyczka nie została załadowana i żaden hook nie zostanie wywołany.
Aby uruchomić wtyczkę z lokalnej kopii, sklonuj repozytorium i najpierw je zweryfikuj:
git clone https://github.com/raiyanyahya/recall ~/recall
cd ~/recall && claude plugin validate .claude plugin validate . odczytuje manifest w .claude-plugin/ i zgłasza, czy wtyczka jest poprawnie sformatowana. Następnie uruchom Claude Code z katalogu projektu za pomocą claude --plugin-dir ~/recall.
Co zapisują hooki i kiedy
Recall rejestruje trzy hooki Claude Code. Każdy z nich uruchamia skrypt Python z katalogu wtyczki.
SessionStarturuchamia się przy starcie, wznowieniu i wyczyszczeniu. Wyświetlacontext.md, dzięki czemu sesja otwiera się z widocznym podsumowaniem.Stopuruchamia się za każdym razem, gdy Claude zakończy odpowiedź. Dopisuje tę turę do dziennika.SessionEnduruchamia się przy zamykaniu sesji i może wygenerować podsumowanie ponownie.
Powstają z tego dwa pliki, oba wewnątrz .recall/.
history.mdto rejestr typu append-only: prompty, odpowiedzi, zmodyfikowane pliki oraz wykonane polecenia.context.mdto wygenerowany skrót: cel, podsumowanie, kolejne kroki, zmodyfikowane pliki, wykonane polecenia oraz kontekst git.
Po jednej rzeczywistej sesji sprawdź zawartość katalogu.
ls -la .recall/Przy włączonym przechwytywaniu, braku znacznika pauzy i dostępnej transkrypcji, powinieneś zobaczyć history.md z zawartością. Możesz w ogóle nie zobaczyć context.md i jest to zachowanie domyślne, a nie błąd. auto_save_context jest off, dopóki go nie ustawisz, więc podsumowanie jest zapisywane tylko wtedy, gdy o to poprosisz:
/recall:saveTo polecenie uruchamia lokalny generator podsumowań na history.md i nadpisuje context.md. Algorytm wykorzystuje punktację TF-IDF (term frequency, inverse document frequency) zasilającą ranking zdań TextRank. Jest on deterministyczny i ekstraktywny, co oznacza, że wybiera zdania, które już istnieją w dzienniku. Nie jest wywoływany żaden model, więc krok ten jest bezpłatny i działa w trybie offline.
Konfiguracja Recall dla pojedynczego projektu
Konfiguracja znajduje się w pliku recall.config.json w katalogu głównym projektu. Oto domyślne ustawienia dostarczone z oprogramowaniem:
{
"output_dir": ".recall",
"capture_history": true,
"summary_sentences": 8,
"redact": true,
"include_git": true,
"max_input_chars": 200000
}output_dirokreśla lokalizację obu plików. Należy przechowywać je wewnątrz projektu.capture_historywłącza lub wyłącza dziennikhistory.md.auto_save_contextprzyjmuje wartościofflubon_end, a wartością domyślną jestoff.summary_sentencesokreśla, ile zdań jest zachowywanych wcontext.md. Zwiększenie tej wartości skutkuje dłuższym podsumowaniem i nieco większym obciążeniem przy uruchamianiu sesji.redactusuwa typowe wzorce haseł i kluczy przed zapisem jakichkolwiek danych na dysku.include_gitdodaje do podsumowania bieżące statystyki diff oraz ostatnie commity.max_input_charsogranicza ilość danych zhistory.md, które podsumowujący odczytuje w jednym przebiegu.
W przypadku projektu na VPS przydatną zmianą jest automatyczne zapisywanie, ponieważ sesja na serwerze często kończy się w momencie zamknięcia terminala, a nie w momencie, gdy użytkownik zdecyduje się ją zakończyć.
{
"auto_save_context": "on_end",
"summary_sentences": 12
}Aby tymczasowo zatrzymać przechwytywanie bez modyfikowania konfiguracji, należy utworzyć znacznik wstrzymania. Aby wznowić przechwytywanie, należy go usunąć.
touch .recall/.capture-pausedNależy to wykonać przed sesją, w której przetwarzane są poświadczenia produkcyjne, ponieważ redakcja jest filtrem, a nie gwarancją bezpieczeństwa. Ta sama logika przyświeca utrzymywaniu sekretów z dala od agentów AI w ujęciu ogólnym: bezpieczny sekret to taki, którego agent nigdy nie widzi.
Ile tokenów pozwala zaoszczędzić Recall?
Zależy to od przyjętej alternatywy. Wczytanie podsumowania na początku sesji jest tanie. To, co zastępuje, może być kosztowne, ponieważ model pozbawiony pamięci o projekcie musi go ponownie odkrywać poprzez odczyt plików.
Dane, na których opiera się ten wykres
[
{
"label": "Recall context.md",
"char_count": "4,800",
"est_tokens": "1,200"
},
{
"label": "Hand-written CLAUDE.md",
"char_count": "3,200",
"est_tokens": "800"
},
{
"label": "Re-reading the repo",
"char_count": "120,000",
"est_tokens": "30,000"
},
{
"label": "Full transcript replay",
"char_count": "340,000",
"est_tokens": "85,000"
}
]Poniższe wartości są typowe dla projektu średniej wielkości i nie stanowią pomiaru dla Twojego przypadku. Podsumowanie Recall wczytuje się przy około 1,200 tokenów, co jest zgodne z deklarowaną przez twórców projektu wartością od jednego do dwóch tysięcy tokenów dla wznowienia. Odtworzenie pełnej poprzedniej transkrypcji ładuje całą konwersację, co wynosi około 85,000 tokenów. Pozwolenie modelowi na ponowne odkrycie projektu poprzez odczyt plików plasuje się pomiędzy tymi wartościami, w okolicach 30,000 tokenów, a liczba ta rośnie wraz z rozmiarem repozytorium. Wiersz CLAUDE.md służy do porównania skali: jest tańszy, ponieważ jest krótki i statyczny, a przekazuje modelowi stałe zasady, zamiast szczegółów z poprzedniej sesji.
Dokonaj własnych pomiarów. Jeden token to w przybliżeniu cztery znaki tekstu w języku angielskim, a nieco mniej w przypadku kodu. Jeśli przesyłasz podsumowanie do lokalnego modelu na tym samym VPS, sprawdź okno kontekstowe, w którym jest ono umieszczane, zanim zaufasz wznowieniu, ponieważ domyślna długość kontekstu Ollama zależy od dostępnej pamięci VRAM.
wc -c .recall/context.md .recall/history.md
echo $(( $(wc -c < .recall/context.md) / 4 ))Wewnątrz sesji /context pokazuje, co jest aktualnie załadowane do okna kontekstowego, a /cost raportuje sumy dla sesji. Uruchom jedną sesję „na zimno”, kolejną z aktywnym podsumowaniem i porównaj wyniki. Aby uzyskać pełny obraz tego, na co faktycznie zużywane są tokeny w sesji, zapoznaj się z sposobem, w jaki Claude Code zużywa tokeny, gdzie znajduje się szczegółowe zestawienie.
Jedno zastrzeżenie pozwala zachować rzetelność tego twierdzenia. Podsumowanie jest wczytywane przy każdym starcie sesji, więc podsumowanie, z którego nigdy nie korzystasz, stanowi niewielki koszt, a nie oszczędność. Utrzymuj summary_sentences blisko wartości domyślnej, chyba że Twoje sesje są długotrwałe. Spokojniejsza sesja pomaga po drugiej stronie bilansu, ponieważ agent dążący do najmniejszej działającej zmiany pozostawia krótszy dziennik do przetworzenia przez mechanizm podsumowujący.
Odtworzenie podsumowania bez aktywnej sesji
Jeśli repozytorium zostało sklonowane, narzędzie do podsumowywania posiada własny punkt wejścia w wierszu poleceń. Jest to przydatne na serwerze VPS, gdy sesja została przerwana wraz z zamknięciem terminala, a użytkownik nadal chce wygenerować podsumowanie.
python3 ~/recall/scripts/make_context.py --helpDane wyjściowe pomocy wyświetlają obsługiwane flagi: --cwd dla katalogu głównego projektu, --transcript dla wskazania konkretnego pliku transkrypcji, --quiet w celu wyciszenia komunikatów oraz --harness do wyboru między claude a opencode. Należy wskazać ścieżkę do projektu:
python3 ~/recall/scripts/make_context.py --cwd /srv/projects/apiNarzędzie odczytuje transkrypcję sesji oraz history.md, a następnie zapisuje context.md w przekazanym katalogu. W przypadku instalacji za pośrednictwem marketplace, wtyczka znajduje się w katalogu zarządzanym przez Claude Code, a /recall:save stanowi wspieraną metodę wykonania tego samego zadania.
Dlaczego nic nie jest zapisywane
Brak katalogu .recall/ po pełnej sesji. Sprawdź, czy przechwytywanie nie jest wyłączone, czy katalog wyjściowy nie został skonfigurowany w innym miejscu lub czy nie znaleziono transkrypcji przed stwierdzeniem, że hooki nie zostały uruchomione. Wpisz /recall:show, aby potwierdzić załadowanie wtyczki, a następnie uruchom python3 -V. Polecenie hooka próbuje najpierw python3, a następnie python, więc środowisko, w którym nie ma żadnego z nich, kończy się błędem stderr i statusem wyjścia 127. Claude Code wyświetla nieblokujący komunikat o błędzie hooka zawierający pierwszą linię stderr.
history.md rośnie, ale context.md nigdy się nie zmienia. auto_save_context jest domyślnie ustawione na off. Uruchom /recall:save lub ustaw klucz na on_end i pozwól, aby zrobił to hook SessionEnd.
Pliki pojawiają się w niewłaściwym projekcie. Recall zapisuje dane względem katalogu, w którym uruchomiono Claude Code, więc rozpoczęcie sesji z katalogu domowego umieszcza tam pamięć. Uruchom sesję z katalogu głównego projektu i użyj ls -la .recall/, aby sprawdzić, gdzie faktycznie trafiły pliki.
Przechwytywanie zostało zatrzymane bez ostrzeżenia. Sprawdź znacznik wstrzymania za pomocą ls -a .recall/. Plik .capture-paused utworzony w zeszłym tygodniu nadal wykonuje swoje zadanie.
Podsumowanie jest zbyt krótkie po długiej sesji. max_input_chars ogranicza dane wejściowe podsumowujące do 200000 znaków, więc bardzo długi dziennik jest przycinany. Wykonaj rotację.
mv .recall/history.md .recall/history-2026-07-30.mdUruchom po tym jedną krótką sesję i sprawdź ponownie ls -la .recall/, aby potwierdzić, że pojawił się nowy history.md.
Gdzie kończy się działanie Recall
Recall to dziennik oraz narzędzie do tworzenia podsumowań. Warto jasno określić, czego to narzędzie nie obejmuje.
Mechanizm podsumowujący działa w sposób ekstraktywny. TextRank wybiera zdania, które już znajdują się w history.md, więc nie ocenia on poprawności podjętych decyzji. Błędny krok zarejestrowany we wtorek wygląda w zapisie dokładnie tak samo, jak słuszna decyzja w środę. Gdy stawka jest wysoka, należy przeczytać context.md i ręcznie wprowadzić poprawki. Jest to plik markdown, więc nic nie stoi na przeszkodzie, aby go edytować.
Narzędzie nie posiada funkcji wyszukiwania. Dla każdego projektu otrzymuje się jedno bieżące podsumowanie i jeden powiększający się dziennik, a nie pamięć przeszukiwalną między projektami. Jeśli pytanie dotyczy decyzji podjętej trzy tygodnie temu w sprawie bazy danych, należy użyć polecenia grep na history.md. Narzędzie nie zapewnia koordynacji w czasie rzeczywistym: dwie sesje w tym samym projekcie współdzielą plik dziennika, ale Recall nie przesyła nowych wpisów do kontekstu drugiej sesji. Gdy jedna sesja musi wiedzieć, co robi druga, sesje mogą bezpośrednio przekazywać sobie tekst w trakcie działania.
Narzędzie nie pomaga wewnątrz sesji. Wypełnianie się okna kontekstu w trakcie sesji to odrębny problem wymagający innych rozwiązań, a zarządzanie oknem kontekstu wewnątrz jednej sesji stanowi uzupełnienie tego przewodnika.
Podsumowanie jest z założenia traktowane jako dane niezaufane. context.md jest wstrzykiwane w blokach i odpowiednio oznaczone, a Claude pyta przed podjęciem działań na jego podstawie. Taki projekt wynika z faktu, że zatwierdzony katalog .recall/ to miejsce, w którym każda osoba z dostępem do commitowania może zapisać tekst, który odczyta Twój agent. Stopień, w jakim agent wstrzymuje się przed działaniem, aby zapytać o odczytane treści, jest określony przez tryb uprawnień, w jakim uruchamiana jest sesja. W przypadku Claude Code w wersji 2.1.283 lub nowszej, tryb auto jest domyślnym trybem startowym dla sesji w terminalu interaktywnym oraz VS Code w każdym planie i u każdego dostawcy. Dzięki temu większość działań weryfikuje klasyfikator, a nie użytkownik. Organizacje korzystające z konfiguracji HIPAA nadal rozpoczynają pracę w trybie Manual. Należy raz zdecydować, czy .recall/ ma charakter osobisty, czy współdzielony: w przypadku pamięci osobistej należy dodać plik do .gitignore, w przeciwnym razie należy go zatwierdzić (commit) i poddać przeglądowi jak każdy inny wkład. Jeśli agent działa bez nadzoru, kwestię szerszych granic bezpieczeństwa omawia poradnik bezpiecznego uruchamiania Claude Code na VPS.
Redakcja danych odbywa się w miarę możliwości. Celuje ona w typowe wzorce, takie jak klucze API, tokeny, bloki PEM oraz przypisania .env. Przed zatwierdzeniem zmian należy przeczytać .recall/.
Numer wersji odzwierciedla stan dojrzałości oprogramowania. W wersji 0.4.0, która w październiku 2026 roku pozostaje najnowszym wydaniem, klucze konfiguracyjne oraz struktura plików mogą ulec zmianie między wydaniami. Z tego powodu przed aktualizacją środowiska, od którego zależy praca, należy zapoznać się z dziennikiem zmian (changelog).
FAQ
Czy Recall wysyła mój kod lub transkrypcje gdziekolwiek?
Nie. Haki przechwytujące oraz moduł podsumowujący to skrypty Python uruchamiane lokalnie na maszynie. Wtyczka nie przechowuje żadnego klucza API i nie wykonuje połączeń sieciowych. Podsumowanie wykorzystuje algorytmy TF-IDF oraz TextRank zamiast modelu językowego, dzięki czemu proces nie generuje kosztów i działa w trybie offline. Ceną tego rozwiązania jest ekstraktywny charakter podsumowania: narzędzie wybiera istniejące zdania z dziennika zamiast tworzyć nowe treści.
Dlaczego mój .recall/context.md jest nieobecny lub nieaktualny?
auto_save_context domyślnie przyjmuje wartość off, więc podsumowanie jest generowane ponownie tylko po uruchomieniu /recall:save. Należy ustawić "auto_save_context": "on_end" w recall.config.json, aby wymusić aktualizację po zakończeniu każdej sesji. Jeśli brakuje również history.md, należy sprawdzić capture_history, znacznik .capture-paused oraz dostępność transkrypcji sesji: w określonych przypadkach haki pomijają zapisywanie historii. Należy potwierdzić załadowanie wtyczki za pomocą /recall:show, a następnie sprawdzić, czy python3 -V odpowiada na danej maszynie, ponieważ haki są skryptami Python.
Ile Recall oszczędza na sesję?
Wczytanie podsumowania kosztuje około 1,200 tokenów, w porównaniu do typowych 30,000 tokenów w przypadku modelu, który musi ponownie odczytać repozytorium, aby ustalić stan prac. Są to wartości orientacyjne. Własne pomiary można wykonać za pomocą wc -c .recall/context.md oraz polecenia /context wewnątrz sesji, porównując zimny start z wznawianiem pracy na podstawie podsumowania.
Czy nadal potrzebuję pliku CLAUDE.md?
Tak, oba pliki pełnią odmienne funkcje. CLAUDE.md zawiera informacje zapisywane celowo: stałe reguły oraz polecenia budowania. context.md jest generowany na podstawie rzeczywistych zdarzeń z ostatniej sesji, dzięki czemu przechowuje informacje o niedokończonej migracji, o której użytkownik mógłby zapomnieć. Należy utrzymywać oba pliki.
Czy jeden VPS może przechowywać pamięć dla kilku projektów?
Tak. Recall przechowuje pamięć w .recall/ wewnątrz katalogu każdego projektu, więc dwa projekty na tym samym serwerze korzystają z oddzielnych dzienników i podsumowań. Należy uruchamiać Claude Code każdorazowo z poziomu katalogu głównego projektu, ponieważ pliki są powiązane z katalogiem roboczym, a nie z kontem użytkownika.