SSD Nodes Learn Hosting plans →
Przewodniki Matt ConnorAutor: Matt Connor · Zaktualizowano 2026-08-28

Claude Code: jak dodać pamięć sesji na serwerze VPS

Wtyczka Recall zapisuje historię sesji Claude Code w plikach markdown. Dowiedz się, jak skonfigurować to lokalne narzędzie na VPS, aby uniknąć ponownego indeksowania kodu.

Verified Every command ran end-to-end on a fresh Ubuntu 24.04 server, July 30, 2026.

Działanie funkcji 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 w formacie markdown w folderze .recall/ wewnątrz projektu: dziennik zdarzeń z możliwością dopisywania oraz krótkie podsumowanie stanu prac. Oba pliki są generowane na używanej maszynie przez lokalny skrypt w języku Python, dzięki czemu sama pamięć nie zużywa 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ę Claude Code nie posiada żadnych informacji o wtorkowych działaniach. 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 generują koszty tokenów, przy czym drugie z nich jest znacznie bardziej kosztowne.

Wersja 0.4.0 narzędzia Recall jest aktualna na lipiec 2026 roku, 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 -V

Ubuntu 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 python3

NumPy 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@recall

Druga 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 i kiedy zapisują hooki

Recall rejestruje trzy hooki Claude Code. Każdy z nich uruchamia skrypt Python z katalogu wtyczek.

  • SessionStart uruchamia się przy starcie, wznowieniu i wyczyszczeniu sesji. Wyświetla context.md, dzięki czemu sesja otwiera się z widocznym podsumowaniem.
  • Stop uruchamia się za każdym razem, gdy Claude zakończy odpowiedź. Dopisuje tę turę konwersacji do dziennika.
  • SessionEnd uruchamia się przy zamykaniu sesji i może wygenerować podsumowanie ponownie.

W efekcie powstają dwa pliki, oba wewnątrz .recall/.

  • history.md to rejestr typu append-only: prompty, odpowiedzi, zmodyfikowane pliki oraz wykonane polecenia.
  • context.md to wygenerowany skrót: cel, podsumowanie, kolejne kroki, zmodyfikowane pliki, wykonane polecenia oraz kontekst git.

Po zakończeniu jednej rzeczywistej sesji sprawdź zawartość katalogu.

ls -la .recall/

Powinieneś zobaczyć history.md z zawartością. Możliwe, że context.md w ogóle nie istnieje; jest to zachowanie domyślne, a nie błąd. auto_save_context jest off, dopóki nie skonfigurujesz tego inaczej, więc podsumowanie jest zapisywane tylko na żądanie:

/recall:save

To polecenie uruchamia lokalny mechanizm podsumowujący dla history.md i nadpisuje context.md. Algorytm opiera się na punktacji TF-IDF (term frequency, inverse document frequency), która zasila szeregowanie zdań metodą TextRank. Jest to proces deterministyczny i ekstraktywny, co oznacza, że wybiera on zdania już istniejące w dzienniku. Nie jest wywoływany żaden model, więc operacja jest bezpłatna 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 dostarczone ustawienia domyślne:

{
  "output_dir": ".recall",
  "capture_history": true,
  "summary_sentences": 8,
  "redact": true,
  "include_git": true,
  "max_input_chars": 200000
}
  • output_dir określa lokalizację obu plików. Należy przechowywać je wewnątrz projektu.
  • capture_history włącza lub wyłącza dziennik history.md.
  • auto_save_context przyjmuje wartości off lub on_end, a wartością domyślną jest off.
  • summary_sentences określa liczbę zdań zachowywanych w context.md. Zwiększenie tej wartości skutkuje dłuższym podsumowaniem i nieco większym obciążeniem przy uruchamianiu sesji.
  • redact usuwa typowe wzorce haseł i kluczy przed zapisem danych na dysku.
  • include_git dodaje bieżący diff oraz ostatnie commity do podsumowania.
  • max_input_chars ogranicza ilość danych z history.md, które analizator odczytuje w jednym przebiegu.

W przypadku projektu na VPS przydatną zmianą jest automatyczne zapisywanie, ponieważ sesja na serwerze często kończy się wraz z zamknięciem terminala, a nie w momencie świadomego zakończenia pracy.

{
  "auto_save_context": "on_end",
  "summary_sentences": 12
}

Aby tymczasowo zatrzymać przechwytywanie bez modyfikowania konfiguracji, należy utworzyć znacznik wstrzymania. Usunięcie go spowoduje wznowienie przechwytywania.

touch .recall/.capture-paused

Należy to zrobić przed sesją, w której operuje się na danych produkcyjnych, ponieważ redakcja jest filtrem, a nie gwarancją bezpieczeństwa. To samo rozumowanie stoi za utrzymywaniem sekretów poza agentami AI w ogólności: 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, bywa kosztowne, ponieważ model nieposiadający pamięci o projekcie musi ponownie go analizować poprzez odczyt plików.

ChartTypical cost of resuming work, per session
The data behind this chart
[
  {
    "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"
  }
]

Są to typowe wartości dla średniej wielkości projektu, a nie pomiar konkretnego przypadku. Podsumowanie Recall wczytuje 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 sesji. Ponowne odtworzenie pełnej poprzedniej transkrypcji ładuje całą konwersację, co wynosi około 85,000 tokenów. Pozwolenie modelowi na ponowne odkrywanie 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 jako punkt odniesienia: jest tańszy, ponieważ jest krótki i statyczny, a przekazuje modelowi stałe zasady, zamiast szczegółów poprzedniej sesji.

Należy dokonać 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 podsumowanie jest przekazywane do lokalnego modelu na tym samym VPS, należy sprawdzić rozmiar okna kontekstowego przed zaufaniem wznowieniu, ponieważ Ollama ucina długie prompty przy małej domyślnej długości kontekstu, zamiast informować o odrzuceniu końcowej części danych.

wc -c .recall/context.md .recall/history.md
echo $(( $(wc -c < .recall/context.md) / 4 ))

Wewnątrz sesji /context pokazuje, co jest aktualnie wczytane do okna kontekstowego, a /cost raportuje łączne zużycie dla sesji. Należy uruchomić jedną sesję „na zimno”, kolejną z wczytanym podsumowaniem i porównać wyniki. Aby uzyskać pełny obraz tego, na co faktycznie zużywane są tokeny w sesji, warto zapoznać się z szczegółowym zestawieniem zużycia tokenów przez Claude Code.

Jedno zastrzeżenie pozwala zachować rzetelność tego twierdzenia. Podsumowanie jest wczytywane przy każdym starcie sesji, więc podsumowanie, z którego się nie korzysta, stanowi niewielki koszt, a nie oszczędność. Warto utrzymywać summary_sentences blisko wartości domyślnej, chyba że 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, który musi zostać przetworzony 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 --help

Dane 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/api

Narzę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. Skrypty typu hook nie zostały uruchomione. Wpisz /recall:show, aby potwierdzić załadowanie wtyczki, a następnie uruchom python3 -V. Polecenie hook próbuje najpierw python3, a następnie python, więc środowisko, w którym nie ma żadnego z nich, nie zapisuje niczego i nie zgłasza błędów.

history.md rośnie, ale context.md nie zmienia się. 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ęć. Uruchamiaj sesję z głównego katalogu projektu i użyj ls -la .recall/, aby sprawdzić, gdzie faktycznie trafiły pliki.

Przechwytywanie zostało zatrzymane bez ostrzeżenia. Sprawdź obecność znacznika 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 dla mechanizmu podsumowującego do 200000 znaków, więc bardzo długi dziennik jest przycinany. Należy go rotować.

mv .recall/history.md .recall/history-2026-07-30.md

Uruchom po tym jedną krótką sesję i sprawdź ponownie ls -la .recall/, aby potwierdzić, że pojawił się nowy plik history.md.

Gdzie kończą się możliwości Recall

Recall to dziennik oraz narzędzie do podsumowań. Należy jasno określić, czego to rozwiązanie nie obejmuje.

Moduł podsumowujący działa w sposób ekstraktywny. Algorytm TextRank wybiera zdania, które już znajdują się w history.md, dlatego nigdy nie ocenia, czy podjęta decyzja była słuszna. Błędny krok zarejestrowany we wtorek wygląda w zapisie dokładnie tak samo, jak trafna decyzja w środę. Gdy stawka jest wysoka, należy przeczytać context.md i ręcznie wprowadzić poprawki. Jest to plik w formacie markdown, więc nic nie stoi na przeszkodzie, aby go edytować.

Funkcja wyszukiwania nie istnieje. Dla każdego projektu generowane jest jedno bieżące podsumowanie oraz jeden powiększający się dziennik; nie ma możliwości przeszukiwania pamięci między projektami. Jeśli pytanie dotyczy decyzji podjętej trzy tygodnie temu w sprawie bazy danych, należy użyć polecenia grep na plikach history.md. System nie wymienia również informacji między sesjami: dwie sesje otwarte jednocześnie na tym samym VPS nie widzą swoich dzienników. 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 kontekstowego w trakcie sesji to odrębny problem, który wymaga innych rozwiązań, a zarządzanie oknem kontekstowym w ramach jednej sesji stanowi uzupełnienie tego przewodnika.

Podsumowanie jest z założenia traktowane jako dane wejściowe niezaufane. Zawartość context.md jest wstrzykiwana w blokach z oznaczeniami, a Claude pyta o potwierdzenie przed podjęciem działań na jej podstawie. Taki projekt wynika z faktu, że zatwierdzony katalog .recall/ to miejsce, w którym każda osoba z uprawnieniami do commitowania może zapisać tekst, który odczyta agent. Stopień, w jakim agent wstrzymuje się z działaniem, aby zapytać o odczytane treści, zależy od trybu uprawnień, w jakim uruchamiana jest sesja, a tryb auto stanie się domyślnym w Claude Code od 14 sierpnia 2026. 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 commitować i poddawać przeglądowi jak każdy inny wkład. Jeśli agent działa bez nadzoru, kwestie szerszych zabezpieczeń omawia bezpieczne uruchamianie Claude Code na VPS.

Redakcja danych jest realizowana w miarę możliwości. Mechanizm wykrywa typowe wzorce, takie jak klucze API, tokeny, bloki PEM oraz przypisania .env. Przed zatwierdzeniem zmian należy przejrzeć .recall/.

Numer wersji odzwierciedla stan dojrzałości oprogramowania. W wersji 0.4.0 z lipca 2026 klucze konfiguracyjne oraz układ plików mogą jeszcze ulegać zmianom między wydaniami, dlatego przed aktualizacją środowiska produkcyjnego należy zapoznać się z listą zmian.

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 Twojej maszynie. Wtyczka nie przechowuje żadnego klucza API i nie wykonuje żadnych połączeń sieciowych. Podsumowywanie wykorzystuje algorytmy TF-IDF oraz TextRank zamiast modelu językowego, dzięki czemu operacja nie generuje kosztów i działa w trybie offline. Ceną tego rozwiązania jest ekstraktywny charakter podsumowań: 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, dlatego podsumowanie jest generowane ponownie tylko po uruchomieniu /recall:save. Ustaw "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, oznacza to, że haki nie działają: sprawdź, czy wtyczka jest załadowana za pomocą /recall:show, a następnie zweryfikuj, 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 dla modelu, który musi ponownie odczytać repozytorium, aby ustalić stan prac. Są to wartości orientacyjne. Dokonaj własnych pomiarów 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, które zapisujesz celowo: stałe reguły oraz polecenia budowania. context.md jest generowany na podstawie rzeczywistych zdarzeń z ostatniej sesji, więc przechowuje informacje o niedokończonej migracji, o której mógłbyś zapomnieć. Utrzymuj 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ń. Uruchamiaj Claude Code zawsze z poziomu katalogu głównego projektu, ponieważ pliki są powiązane z bieżącym katalogiem roboczym, a nie z kontem użytkownika.