Prosisz Claude o refaktoryzację przepływu uwierzytelniania w monorepo na 400 tys. linii, a on z pełnym przekonaniem edytuje niewłaściwy serwis: przestarzały pakiet legacy-auth zamiast tego żywego, bo nigdy nie wczytał właściwego kontekstu. W dużej bazie kodu ograniczeniem nie jest już “czy model potrafi napisać kod”, lecz “czy ma w kontekście właściwy wycinek repozytorium - i tylko ten wycinek”.
Te 15 wskazówek pokazuje, jak nawigować, rozumieć i bezpiecznie modyfikować bazy kodu na skalę przedsiębiorstwa z Claude Code, nie topiąc go w nieistotnym kontekście i nie pozwalając, by równoległe sesje nadpisywały się nawzajem.
Claude Code używa wyszukiwania agentowego, aby automatycznie zrozumieć strukturę twojego projektu. Zamiast wklejać pliki czy samodzielnie tłumaczyć układ, możesz zadać pytanie w stylu “Wyjaśnij, jak działa system uwierzytelniania”, a Claude wyszuka pliki związane z auth, zidentyfikuje kluczowe komponenty, prześledzi zależności, podąży za przepływem i da ci ugruntowane wyjaśnienie.
Możliwości wyszukiwania agentowego
Rozpoznawanie wzorców: Znajduje podobne wzorce kodu w plikach
Śledzenie zależności: Rozumie łańcuchy importów i relacje
Inteligentne filtrowanie: Skupia się na ważnych plikach, ignoruje szum
Odniesienia krzyżowe: Łączy powiązane funkcjonalności między modułami
Typowe pytanie wdrożeniowe na platformie danych wygląda tak:
Claude przeszukuje repozytorium, podąża za łańcuchami importów i wywołań i odpowiada, podając handlery endpointów, pipeline transformacji, relacje schematu i wzorce zapytań dashboardu, zamiast tego, byś spędził dzień na ręcznym czytaniu plików.
Claude Code doskonale radzi sobie tam, gdzie inne narzędzia zawodzą z masywnymi plikami:
Załóżmy, że masz przestarzały komponent React na 18 000 linii (taki, który narasta w każdej długo żyjącej aplikacji). Sztuczka polega na tym, by dać Claude precyzyjną kotwicę, zamiast prosić go o trzymanie całego pliku w głowie:
Zamiast samodzielnie grepować, pozwól Claude prześledzić strukturę za ciebie. To prompty, które wpisujesz do REPL-a Claude Code, a nie polecenia powłoki:
“Show me all places where we handle user permissions.”
“How do our microservices communicate?”
“Where is the email validation logic?”
“Find all React components that directly access localStorage.”
“Check if any frontend components import from backend modules.”
“Find all synchronous file operations in our async handlers.”
Dwa zapytania, które najbardziej się opłacają w dużej bazie kodu, to analiza wpływu zależności (przed ryzykowną zmianą) oraz przekrojowy audyt wydajności:
Optymalizuj wydajność Claude’a z ukierunkowanym kontekstem:
Okno terminala
# Mniej efektywne: Niejasna prośba
"Optimize our application"
# Bardziej efektywne: Skupiona prośba
"Optimize the database queries in the UserRepository class"
# Jeszcze lepiej: Konkretny kontekst
"The getUsersWithOrders method in UserRepository has N+1 query issues.
Optimize it using eager loading."
Prawdziwym ograniczeniem jest budżet kontekstu, a nie liczba linii. Aktualne modele (Claude Fable 5, Opus 4.8 i Sonnet 4.6) mają okno 1 mln tokenów, ale każdy wciągnięty plik o nie konkuruje, a jakość spada, gdy wypełniasz je nieistotnym kodem. Z grubsza, jako zasada kciuka:
Skupiony moduł lub kilka powiązanych plików: nazwij je i pozwól Claude wczytać całość.
Pakiet rozciągnięty na wiele plików: zawęź prompt do jednego zagadnienia (“warstwa zapytań”, “middleware uwierzytelniania”), aby wyszukiwanie wciągnęło tylko to, co istotne.
Całe monorepo: nigdy nie ładuj wszystkiego naraz. Skieruj Claude na jeden pakiet przez --add-dir, oprzyj się na hierarchicznych plikach CLAUDE.md i pracuj moduł po module.
Uruchom równoległe instancje Claude Code, każdą zawężoną do jednego obszaru repozytorium. Uruchom każdą w osobnym terminalu z odpowiednim katalogiem roboczym:
Okno terminala
# Terminal 1: Frontend
claude--add-dir./frontend
# Terminal 2: API backendu
claude--add-dir./backend
# Terminal 3: Migracje bazy danych
claude--add-dir./database
# Terminal 4: Testy
claude--add-dir./tests
Następnie steruj każdą sesją skupionym promptem, na przykład “Implement the new user dashboard” w instancji frontendowej i “Create REST endpoints for the dashboard data” w backendowej.
Korzyści z równoległych instancji:
Brak przełączania kontekstu: Każda instancja pozostaje skupiona
Symulacja zespołu: Pracuj jak zespół programistów
Szybszy rozwój: Wykonuj zadania jednocześnie
Lepsza organizacja: Wyraźny rozdział obowiązków
Wskazówka 42: Wykorzystuj system plików jako współdzielony workspace
Używaj systemu plików jako punktu przekazania między instancjami. Jedna generuje artefakty; pozostałe je konsumują:
Instancja 1: “Generate TypeScript interfaces from our API responses and write them to shared/types/api.types.ts.”
Instancja 2: “Create React Query hooks using the types in shared/types/api.types.ts.”
Instancja 3: “Document the types in shared/types/ with usage examples.”
Wzorce współdzielonego workspace
project/
├── .claude/
│ ├── generated/ # Kod wygenerowany przez AI
│ ├── templates/ # Implementacje referencyjne
│ └── workspace/ # Współdzielone pliki robocze
├── docs/
│ └── ai-sessions/ # Dokumentacja sesji
Badaj wzorce zewnętrzne bez kopiowania ich źródeł do swojego repozytorium (co ciągnie za sobą bagaż licencyjny). Pozwól Claude streścić podejście, a potem zaprojektuj własne:
Używaj Claude do znajdowania wzorców i niespójności:
Okno terminala
# Find inconsistent patterns
"Find all different error handling patterns in our codebase"
"Show me all the different ways we're validating email addresses"
"Identify inconsistent naming conventions"
# Locate duplicate code
"Find similar code patterns that could be refactored"
"Show me duplicate business logic across services"
# Architecture violations
"Find all places where the presentation layer directly accesses the database"
"Show me services calling other services synchronously"
# Performance patterns
"Find all N+1 query patterns"
"Locate all synchronous I/O in request handlers"
"Show me all uncached database queries"
Przegląd bezpieczeństwa to jedno z najbardziej dźwigniowych zastosowań rozpoznawania wzorców w dużej bazie kodu. Jeden prompt potrafi wydobyć naraz każdą ryzykowną konstrukcję zapytania:
Taki przegląd zazwyczaj wydobywa garstkę odrębnych stylów budowania zapytań i kieruje cię prosto do tych, które wstrzykują niezaufane dane, zamiast tego, byś ręcznie audytował tysiące miejsc wywołań.
Wskazówka 50: Zaimplementuj przepływy pracy eksploracji bazy kodu
Duże bazy kodu zawodzą w konkretny, rozpoznawalny sposób. Oto, na co uważać i jak się z tego wycofać.
Przepełnienie okna kontekstu na gigantycznym pliku. Prosisz Claude o edycję pliku na 20 tys. linii, a on gubi wątek, edytuje niewłaściwy blok lub ucina go. Wyjście: przestań ładować cały plik. Zakotwicz zmianę do nazwy funkcji i zakresu linii albo najpierw poproś o docelowy obszar (“show me just handleSubmit”), a potem w kolejnym kroku edytuj ten wycinek.
Wyszukiwanie agentowe pomija kod referencjonowany dynamicznie. Wyszukiwanie znajduje statyczne importy, ale nie handlery podłączone przez klucze tekstowe, refleksję czy rejestr budowany w czasie wykonania, więc przegląd typu “znajdź każde miejsce wywołania” wraca niekompletny. Wyjście: nazwij pośrednictwo wprost (“we register routes by string in router.config.ts; trace those too”) i zweryfikuj krzyżowo dosłownym grepem, zanim zaufasz liście przy ryzykownej refaktoryzacji.
Równoległe instancje nadpisują współdzielony plik. Dwie sesje edytują shared/types/api.types.ts, a druga po cichu nadpisuje pierwszą. Wyjście: nadaj każdej instancji nienakładający się zakres katalogów, commituj (lub rób stash) między przekazaniami, aby system plików był jedynym źródłem prawdy, i nigdy nie pozwól dwóm instancjom posiadać tego samego pliku jednocześnie.
Dryf nieaktualnego CLAUDE.md. Plik CLAUDE.md wciąż opisuje stare uwierzytelnianie oparte na sesji po tym, jak przeszedłeś na JWT, więc Claude podąża za instrukcjami, które nie pasują już do rzeczywistości. Wyjście: traktuj CLAUDE.md jak kod, przeglądaj go w PR-ach i okresowo proś Claude o jego pogodzenie (“compare the auth section of this CLAUDE.md against the actual auth/ package and flag anything out of date”).
Repozytorium jest zbyt duże, by w ogóle je ogarnąć. Nawet zawężone prompty błądzą, bo sam pakiet jest plątaniną. Wyjście: nie proś o zmianę, najpierw poproś o mapę (“produce a dependency diagram of this package and identify the three highest-coupling modules”), a potem refaktoryzuj względem tej mapy moduł po module.
Mając w ręku strategie dla dużych baz kodu, kolejną dźwignią jest twoja codzienna pętla pracy. Przejdź do Optymalizacji przepływu pracy, aby przekuć te jednorazowe techniki w powtarzalne nawyki, a następnie zobacz Zarządzanie wydajnością i kosztami, aby utrzymać wydatki na tokeny pod kontrolą przy skali.