Przejdź do głównej zawartości

System Pamięci Claude Code

Właśnie wdrożyłeś nowego developera. Skonfigurował Claude Code i natychmiast poprosił go o “dodanie nowego endpointu API”. Claude wygenerował trasę Express — ale Twój projekt używa Fastify. Stworzył plik JavaScript — ale Twój projekt używa wyłącznie TypeScript. Umieścił plik w src/routes/ — ale Twoja konwencja to src/api/v2/. Każde założenie było błędne, ponieważ Claude nie miał żadnego kontekstu o Twoim projekcie.

System pamięci to rozwiązuje. To sposób, w jaki uczysz Claude’a o architekturze, konwencjach i preferencjach Twojego projektu — trwale, między sesjami, współdzielone z Twoim zespołem.

  • Kompletna hierarchia pamięci: zarządzana, projektowa, użytkownika, lokalna i automatyczna pamięć
  • Techniki pisania efektywnych plików CLAUDE.md, które zmieniają zachowanie Claude’a
  • Reguły projektowe z dopasowaniem ścieżek dla dużych monorepozytoriów
  • Zarządzanie automatyczną pamięcią i limit 200 linii MEMORY.md
  • Wzorce importów dla modularnych, łatwych w utrzymaniu plików pamięci

Claude Code ładuje pamięć z sześciu lokalizacji, każda służy innemu celowi:

Typ PamięciLokalizacjaKto Ją WidziKiedy Jest Ładowana
Polityka zarządzanaPoziom systemowy (wdrażana przez IT)Wszyscy użytkownicyZawsze, najwyższy priorytet
Pamięć użytkownika~/.claude/CLAUDE.mdTylko Ty, wszystkie projektyZawsze
Pamięć projektu./CLAUDE.md lub ./.claude/CLAUDE.mdWszyscy członkowie zespołuZawsze
Reguły projektu./.claude/rules/*.mdWszyscy członkowie zespołuWarunkowo, na podstawie ścieżki
Pamięć lokalna./CLAUDE.local.mdTylko Ty, ten projektZawsze
Automatyczna pamięć~/.claude/projects/<projekt>/memory/Tylko Ty, dla każdego projektuPierwsze 200 linii

Bardziej specyficzna pamięć ma pierwszeństwo przed szerszą pamięcią. Jeśli Twój użytkowniczy CLAUDE.md mówi “używaj wcięć 2-spacjowych”, ale projektowy CLAUDE.md mówi “używaj wcięć 4-spacjowych”, reguła projektu wygrywa.

To najważniejszy plik, jaki napiszesz. Jest ładowany do każdej sesji Claude Code dla każdego członka zespołu pracującego nad tym projektem.

# Projekt: Payments API
## Architektura
- Framework: Fastify z TypeScript
- Baza danych: PostgreSQL przez Prisma ORM
- Autoryzacja: JWT z refresh tokenami w Redis
- Wersjonowanie API: bazujące na URL (/api/v2/)
## Kluczowe Komendy
- `npm run dev` -- Uruchom serwer deweloperski na porcie 3000
- `npm run test` -- Uruchom testy Jest
- `npm run test:watch` -- Jest w trybie obserwacji
- `npm run lint` -- ESLint z auto-naprawą
- `npm run db:migrate` -- Uruchom migracje Prisma
- `npm run db:seed` -- Wypełnij bazę danymi deweloperskimi
## Konwencje Kodu
- Wszystkie trasy API w src/api/v2/
- Używaj schematów Zod do walidacji requestów/response'ów
- Odpowiedzi błędów zgodne z RFC 7807 (Problem Details)
- Zapytania do bazy używają Prisma, nigdy surowego SQL
- Wszystkie eksportowane funkcje muszą mieć komentarze JSDoc
- Testy obok plików źródłowych: user.service.ts -> user.service.test.ts
## NIE RÓB
- Nie modyfikuj plików migracji po ich zacommitowaniu
- Nie używaj console.log -- używaj serwisu Logger z src/lib/logger.ts
- Nie dodawaj nowych zależności npm bez sprawdzenia wpływu na rozmiar bundle'a

Twój CLAUDE.md na poziomie użytkownika (~/.claude/CLAUDE.md) stosuje się do wszystkich projektów. Skup się na uniwersalnych preferencjach:

# Preferencje Osobiste
- Zawsze wyjaśniaj swoje rozumowanie przed wprowadzeniem zmian
- Gdy napotkasz punkt decyzyjny, przedstaw opcje i poproś mnie o wybór
- Używaj zwięzłych odpowiedzi -- pomijaj podsumowania tego, co właśnie zrobiłeś
- Podczas edycji plików pokaż krótkie podsumowanie diff zmian
- Preferuję wzorce programowania funkcyjnego nad OOP gdy to możliwe

CLAUDE.local.md jest automatycznie dodawany do gitignore. Używaj go dla szczegółów specyficznych dla maszyny:

# Rozwój Lokalny
- Moja baza deweloperska działa na localhost:5433 (nie domyślny 5432)
- Endpoint API testowego: https://staging.internal.company.com/api
- Używaj `npm run dev:local` zamiast `npm run dev` (niestandardowe zmienne env)

Dla dużych projektów pojedynczy CLAUDE.md staje się nieporęczny. Reguły projektu pozwalają podzielić instrukcje na modularne pliki specyficzne dla ścieżek.

Utwórz pliki w .claude/rules/:

.claude/rules/
testing.md # Konwencje testowania
api-design.md # Standardy projektowania API
database.md # Wzorce zapytań do bazy
security.md # Wymagania bezpieczeństwa

Każdy plik jest ładowany do kontekstu gdy jest istotny. Claude czyta je podczas pracy z plikami w pasujących ścieżkach.

Reguły mogą targetować konkretne katalogi lub wzorce plików używając frontmatter:

---
globs: src/api/**/*.ts
---
# Konwencje Tras API
Wszystkie trasy API muszą:
1. Używać Zod do walidacji wejścia
2. Zwracać typowane odpowiedzi używając ApiResponse<T>
3. Zawierać rate limiting przez dekorator @rateLimit
4. Logować wszystkie requesty używając middleware RequestLogger
---
globs: "*.test.ts,*.spec.ts"
---
# Standardy Testowania
- Używaj opisowych nazw testów: "should return 404 when user not found"
- Grupuj powiązane testy w blokach describe według metody/funkcji
- Mockuj zewnętrzne serwisy, nigdy nie wykonuj prawdziwych wywołań API w testach
- Każdy plik testowy powinien testować pojedynczy moduł

Automatyczna pamięć to miejsce, gdzie Claude pisze notatki dla siebie. W przeciwieństwie do CLAUDE.md (który Ty piszesz dla Claude’a), automatyczna pamięć zawiera rzeczy, które Claude odkrywa podczas sesji.

  • Wzorce projektu: działające komendy build, konwencje testów, kroki deploymentu
  • Spostrzeżenia debugowania: rozwiązania trudnych problemów, typowe przyczyny błędów
  • Notatki architektoniczne: kluczowe relacje plików, granice modułów
  • Twoje preferencje: styl komunikacji, nawyki workflow

Automatyczna pamięć jest przechowywana w ~/.claude/projects/<projekt>/memory/. Główny plik to MEMORY.md, a Claude może tworzyć pliki tematyczne obok niego.

~/.claude/projects/my-project/memory/
MEMORY.md # Główny indeks, pierwsze 200 linii ładowane przy starcie
debugging.md # Wzorce debugowania odkryte przez Claude'a
api-conventions.md # Wzorce API nauczane przez Claude'a z Twojego kodu

Użyj /memory aby otworzyć i edytować plik automatycznej pamięci. Usuń wpisy, które są nieaktualne lub niepoprawne.

Dla dużych projektów możesz podzielić swój CLAUDE.md na moduły i zaimportować je:

# Projekt: Duże Monorepo
@api-guidelines.md
@testing-standards.md
@deployment-checklist.md

Składnia @ścieżka importuje zawartość referencyjnego pliku. Ścieżki są relatywne do lokalizacji pliku CLAUDE.md.

Claude ignoruje instrukcje CLAUDE.md: Dzieje się to gdy okno kontekstu jest zbyt pełne i starsze instrukcje zostają skompaktowane. Trzymaj swój CLAUDE.md zwięzły (poniżej 200 linii dla głównego pliku) i umieszczaj najważniejsze reguły na początku.

Automatyczna pamięć zawiera niepoprawne informacje: Claude czasami zapisuje niedokładne wzorce. Użyj /memory aby przejrzeć i poprawić wpisy. Usuń wszystko co jest błędne — nieaktualna pamięć jest gorsza niż brak pamięci.

Reguły nie stosują się do właściwych plików: Sprawdź swoje wzorce glob. Frontmatter globs używa standardowej składni glob. Testuj z prostymi wzorcami najpierw (src/**/*.ts) przed użyciem złożonych.

Lokalne nadpisania nie działają: Upewnij się, że Twój plik nazywa się dokładnie CLAUDE.local.md (nie claude.local.md ani CLAUDE_local.md). Claude Code automatycznie dodaje ten plik do gitignore.

Członkowie zespołu mają różne zachowanie: Zazwyczaj oznacza to, że ktoś ma osobisty CLAUDE.md lub lokalne nadpisania konfliktujące z ustawieniami projektu. Pierwszeństwo to: zarządzana > lokalna > projektowa > użytkownika. Sprawdź wszystkie cztery poziomy.