Blog
PLEN

Memory w Claude Code — co naprawdę pamięta i jak tym sterować

Memory to mechanizm w Claude Code który zapisuje fakty o Tobie, projekcie i preferencjach między sesjami. Pokazuję jak działa pod spodem, kiedy go używać, a kiedy CLAUDE.md jest lepszy.

·4 min read
Memory w Claude Code — co naprawdę pamięta i jak tym sterować

Claude Code wita Cię świeżą sesją za każdym razem. Bez memory zapominałby kim jesteś, jaki masz stack, dlaczego ostatnio prosiłeś go o coś specyficznego. Memory to system plików w ~/.claude/projects/{slug}/memory/ który zachowuje to między sesjami.

Po 4 miesiącach z aktywnym memory mam ~30 zapisanych faktów. Pokazuję jak to działa.

4 rodzaje memory

System rozróżnia 4 typy pamięci:

TypCo tam idziePrzykład
userKim jest user, jakie ma preferencje"kkaletka prefiers terse responses"
feedbackReguły i korekty od użytkownika"Always commit immediately, no asking"
projectStan projektu, decyzje, deadline'y"Auth refactor due 2026-04-15"
referencePointery do zewnętrznych zasobów"Linear project INGEST tracks pipeline bugs"

Każdy fakt to osobny plik markdown z frontmatterem. Plus MEMORY.md jako index.

Jak agent decyduje co zapisać

Reguła w systemie: zapisuj gdy fakt jest nieoczywisty z kodu. Czyli:

✅ Zapisz: "User prefers PR-per-feature, not bundled refactors"
✅ Zapisz: "Background agent jobs use Telegram chat 5094102576"
✅ Zapisz: "Bath thermostat reports temp ×10 (parse / 10)"

❌ Nie zapisuj: "Project uses Next.js 16", widać w package.json
❌ Nie zapisuj: "src/auth/ contains login flow", widać po grepu
❌ Nie zapisuj: "Last commit was about...", git log ma to

Kiedy memory > CLAUDE.md

CLAUDE.md to instrukcje globalne, ładowane do każdej sesji. Memory to fakty, dostępne na żądanie.

CLAUDE.md dla rzeczy ZAWSZE ważnych:

  • Tożsamość ("Jestem Claw, agent kkaletki")
  • Reguły bezpieczeństwa ("Nigdy nie wysyłaj maili bez potwierdzenia")
  • Globalne preferencje ("Odpowiadaj zwięźle, bez fluffu")

Memory dla rzeczy KONTEKSTOWYCH:

  • Stan konkretnego projektu
  • Reguły dla konkretnego workflow
  • Fakty o zewnętrznych systemach

Gdy CLAUDE.md zaczyna mieć 200+ linii, czas przenieść część do memory. Memory nie ładuje się "siłowo", agent czyta gdy potrzebuje.

Antipatterny

1. Zapisywanie streszczeń sesji. "Dzisiaj zrobiliśmy refactor X, dodaliśmy Y", to git log, nie memory. Memory to TRWAŁE fakty, nie kronika.

2. Duplikowanie z CLAUDE.md. Jeśli CLAUDE.md mówi "user prefers terse" i memory mówi to samo, masz dwa źródła prawdy. Aktualizujesz tylko jedno → drift.

3. Zapisywanie tymczasowego stanu. "User testuje feature flag X", to ephemeral, nie memory. Tasks albo plan.

4. Memory jako TODO list. Memory służy do "co już wiesz". TaskCreate służy do "co masz zrobić". Nie miksuj.

Mój workflow

Co zapisuję: fakty z kategorii "agent powinien o tym wiedzieć w przyszłej sesji". Po 4 miesiącach to:

  • 4 pliki user_*.md (kim jestem, telefon, email, preferencje stylu)
  • 7 plików feedback_*.md (commit policy, rebuild policy, jak parsuje termostat HA)
  • 15 plików project_*.md (stan każdego aktywnego projektu, devops gotchas)
  • 3 pliki reference_*.md (pointery do BetterUptime, Vikunja, Gmail attachments workaround)

Co usuwam: jak fakt staje się nieaktualny (projekt zamknięty, preferencja zmieniona), agent powinien wymazać memory. Mam regułę: jak agent mówi mi coś "z memory", a wiem że to nieaktualne, proszę go żeby zaktualizował.

Przykład: jak fakt staje się memory

Sesja:

> Claude, freaky-trade-alert.sh nie odpalił, sprawdź co jest
 
[agent debuguje]
 
Agent: Skrypt jest w /home/kkaletka/docker/scripts/freaky-trade-alert.sh.
       Lista profili w SQL i lokalnej tablicy ACTIVE musi się zgadzać.
       Dodanie nowego profilu wymaga update'u OBYDWU. Zapisać do memory?
 
> Tak, zapisz

Memory wpis (project_freaky_trade_alert.md):

---
name: Freakyprofit Report
description: Freaky trade alert pipeline na mini PC
type: project
---
 
`/home/kkaletka/docker/scripts/freaky-trade-alert.sh` na mini PC. Add new profiles to SQL + active list (obydwa miejsca, inaczej brak alertów).

Następna sesja, 2 tygodnie później: pytam o dodanie nowego profilu, agent od razu wie gdzie i jak.

Co warto wiedzieć

1. Memory jest projekt-specyficzne. Każdy projekt (folder roboczy) ma swój memory store. Cross-projekt nie działa, jeśli nie skopiujesz.

2. Może być duże. Index MEMORY.md jest ładowany do kontekstu zawsze. Pliki indywidualne, na żądanie. Nie boj się trzymać wielu, ale index niech ma jednolinijkowe pointery.

3. Wersjonuj. Memory to też kod. Trzymam ~/.claude/projects/ w git. Jak agent zapisze coś dziwnego, git diff pokazuje.


Memory to nie magia ani prawdziwa pamięć. To system plików z konwencją. Ale dobrze używane robi z agenta kogoś kto Cię realnie zna, a nie Stack Overflow z lepszym promptem.