Oryginalny tytuł: "Zrozumienie kodu źródłowego Claude Code od Anthropic w jednym artykule: dlaczego jest po prostu lepszy od innych?"
Oryginalny autor: Yuker, badacz AI
31 marca 2026 roku badacz bezpieczeństwa Chaofan Shou odkrył, że w wydaniu pakietu Claude Code od Anthropic w npm, plik mapy źródłowej (source map) nie został usunięty.
Oznacza to, że pełny kod źródłowy TypeScript Claude Code, liczący 512 000 linii i 1903 pliki, został ujawniony w publicznym internecie.
Oczywiście nie byłem w stanie przeczytać tak ogromnej ilości kodu w zaledwie kilka godzin, więc podszedłem do tego kodu źródłowego z trzema pytaniami:
1. Jaka jest fundamentalna różnica między Claude Code a innymi narzędziami programistycznymi AI?
2. Dlaczego pisanie kodu przez to narzędzie "wydaje się" lepsze niż w przypadku innych?
3. Co dokładnie kryje się w 510 000 linii kodu?
Po przeczytaniu tego, moja pierwsza reakcja brzmiała: to nie jest tylko asystent programistyczny AI; to system operacyjny.
Wyobraź sobie, że zatrudniłeś programistę zdalnego i dałeś mu zdalny dostęp do swojego komputera.
Jak byś do tego podszedł?
Gdybyś był Cursor: kazałbyś mu usiąść obok siebie i za każdym razem, gdy musi wpisać polecenie, zerkałbyś i klikał "zezwól". Jest to proste, ale musisz mieć go cały czas na oku.
Gdybyś był GitHub Copilot Agent: dałbyś mu zupełnie nową maszynę wirtualną do zabawy. Po zakończeniu pracy przesyła kod, ty go przeglądasz, a następnie scalasz. Jest to bezpieczne, ale nie widzi on twojego lokalnego środowiska.
Gdybyś był Claude Code:
Pozwoliłbyś mu korzystać z komputera bezpośrednio — ale wyposażyłbyś go w niezwykle wyrafinowany system bezpieczeństwa. Co może robić, czego nie może, które działania wymagają twojej zgody, które może wykonać samodzielnie, a nawet jeśli chce użyć rm -rf, musi to przejść przez 9 poziomów weryfikacji przed wykonaniem.
Oto trzy zupełnie różne filozofie bezpieczeństwa:

Dlaczego Anthropic wybrało najtrudniejszą ścieżkę?
Ponieważ tylko w ten sposób AI może pracować z twoim terminalem, środowiskiem i konfiguracją — to właśnie oznacza "prawdziwe pomaganie w kodowaniu", zamiast "pisania kodu w sterylnym środowisku i kopiowania go".
Ale jaki jest koszt? Napisali do tego 510 000 linii kodu.
Większość ludzi myśli, że narzędzia programistyczne AI działają tak:
Wejście użytkownika → Wywołanie API LLM → Uzyskanie wyniku → Pokazanie użytkownikowi
Rzeczywisty Claude Code działa tak:
Wejście użytkownika
→ Dynamiczne złożenie 7 warstw promptów systemowych
→ Wstrzyknięcie stanu Git, konwencji projektu, pamięci historycznej
→ 42 narzędzia, każde z instrukcją obsługi
→ LLM decyduje, którego narzędzia użyć
→ 9 warstw weryfikacji bezpieczeństwa (parsowanie AST, klasyfikatory ML, sprawdzanie sandboxa...)
→ Rozwiązywanie wyścigu uprawnień (lokalna klawiatura/IDE/hook/klasyfikator AI rywalizują jednocześnie)
→ 200ms opóźnienie anty-zmęczeniowe
→ Wykonanie narzędzia
→ Zwrócenie wyników w sposób strumieniowy
→ Czy kontekst zbliża się do limitu? → Trzystopniowa kompresja (mikro-kompresja → auto-kompresja → pełna kompresja)
→ Potrzebujesz równoległości? → Wygenerowanie roju pod-agentów
→ Pętla do momentu zakończenia zadania
Wierzę, że wszyscy są bardzo ciekawi powyższego, ale nie martw się, rozpakujmy je jeden po drugim.
Otwórz src/constants/prompts.ts, a zobaczysz tę funkcję:

Zauważyłeś to SYSTEM_PROMPT_DYNAMIC_BOUNDARY?
To ogranicznik pamięci podręcznej. Treść powyżej ogranicznika jest statyczna i może być buforowana przez API Claude, aby zaoszczędzić na kosztach tokenów. Treść poniżej ogranicznika jest dynamiczna — twoja obecna gałąź Git, konfiguracja projektu CLAUDE.md, twoje wcześniej podane preferencje... każda interakcja jest unikalna.
Co to oznacza?
Anthropic traktuje słowa kluczowe jak wyjście kompilatora w celu optymalizacji. Część statyczna to "skompilowany plik binarny", a część dynamiczna to "parametry wykonawcze". Korzyści z tego podejścia to:
1. Oszczędność kosztów: Część statyczna jest buforowana, unikając zbędnych opłat
2. Szybkość: Trafienia w pamięć podręczną bezpośrednio pomijają przetwarzanie tych tokenów
3. Elastyczność: Część dynamiczna pozwala każdej interakcji być świadomą obecnego środowiska
Każde narzędzie ma własną "Instrukcję obsługi"
Co jest jeszcze bardziej zdumiewające, to fakt, że każdy katalog narzędzia zawiera plik prompt.ts — to instrukcja obsługi specjalnie dostosowana dla LLM.
Spójrz na BashTool (src/tools/BashTool/prompt.ts, około 370 linii):

To nie jest dokument dla ludzi, to kodeks postępowania dla zachowania AI. Za każdym razem, gdy Claude Code startuje, te zasady są wstrzykiwane do promptów systemowych.
Dlatego Claude Code nigdy samowolnie nie wykonuje git push --force, podczas gdy niektóre narzędzia mogą to robić — to nie dlatego, że model jest mądrzejszy, ale dlatego, że wskazówki już jasno określiły zasady.
Dodatkowo, wewnętrzna wersja Anthropic różni się od tej, której używasz
Kod ma liczne gałęzie takie jak ta:

ant odnosi się do wewnętrznego personelu Anthropic. Ich wersja posiada bardziej szczegółowe wytyczne dotyczące stylu kodu ("Nie pisz komentarzy, chyba że DLACZEGO nie jest oczywiste"), bardziej agresywną strategię wyjściową ("Pisanie w odwróconej piramidzie") oraz niektóre eksperymentalne funkcje wciąż w fazie testów A/B (Agent weryfikacji, Agent eksploracji i planowania).
To pokazuje, że Anthropic jest największym użytkownikiem Claude Code. Używają własnego produktu do rozwijania własnego produktu.
Otwórz src/tools.ts, a zobaczysz rejestr narzędzi:

42 narzędzia, ale większości z nich nigdy bezpośrednio nie widziałeś. Dzieje się tak, ponieważ wiele narzędzi jest ładowanych leniwie — tylko wtedy, gdy LLM ich potrzebuje, są wstrzykiwane na żądanie przez ToolSearchTool.
Dlaczego tak się dzieje?
Ponieważ dla każdego dodatkowego narzędzia prompt systemowy potrzebuje dodatkowego opisu, a token kosztuje więcej pieniędzy. Jeśli chcesz tylko, aby Claude Code pomógł ci zmienić jedną linię kodu, nie musi ładować 'Harmonogramu zadań Cron' i 'Menedżera współpracy zespołowej'.
Istnieje jeszcze bardziej inteligentny projekt:

Ustaw CLAUDE_CODE_SIMPLE=true, a Claude Code pozostanie z tylko trzema narzędziami: Bash, Odczyt pliku, Modyfikacja pliku. To tylna furtka dla minimalistów.

Zwróć uwagę na te wartości domyślne: isConcurrencySafe domyślnie false, isReadOnly domyślnie false.
To się nazywa projektowanie fail-closed — jeśli autor narzędzia zapomni zadeklarować atrybuty bezpieczeństwa, system założy, że jest ono 'niebezpieczne i zapisywalne'. Lepiej być nadmiernie ostrożnym niż przegapić choćby jedno ryzyko.

FileEditTool sprawdzi, czy już przeczytałeś ten plik za pomocą FileReadTool. Jeśli nie, bezpośrednio wyrzuci błąd i nie pozwoli na modyfikację.
Dlatego Claude Code nie będzie "magicznie pisał fragmentu kodu, aby nadpisać twój plik", jak niektóre narzędzia — **wymagane jest najpierw zrozumienie przed modyfikacją**.
Każdy, kto używał Claude Code, ma wrażenie: on naprawdę wydaje się ciebie znać.
Mówisz mu "nie mockuj bazy danych w testach", a on nie będzie mockował przy następnej interakcji. Mówisz mu "jestem inżynierem backendu, nowicjuszem w React", a on wyjaśni kod front-endowy używając analogii backendowych.
Za tym stoi kompletny system pamięci.

Claude Code używa innego AI (Claude Sonnet), aby określić, "które wspomnienia są istotne dla obecnej rozmowy"
Nie dopasowywanie słów kluczowych, nie wyszukiwanie wektorowe — pozwala małemu modelowi szybko przeskanować wszystkie tytuły i opisy plików pamięci, wybierając do 5 najbardziej istotnych, a następnie wstrzykując ich pełną treść do obecnego kontekstu rozmowy.
Strategia to "precyzja ponad przypominanie" — lepiej przegapić potencjalnie przydatne wspomnienie, niż wstrzyknąć nieistotne, zanieczyszczając kontekst.
Tryb KAIROS: Nocne "Śnienie"
To dla mnie najbardziej sci-fi część.
W kodzie znajduje się flaga funkcji o nazwie KAIROS. W tym trybie wspomnienia z długich rozmów nie są przechowywane w ustrukturyzowanych plikach, ale we wpisach przypominających logi z datami. Następnie istnieje umiejętność /dream, która działa w "nocy" (niska aktywność), destylując te surowe logi do ustrukturyzowanych plików tematycznych.

AI organizuje wspomnienia podczas "snu". To już nie jest inżynieria; to bionika.
Kiedy zlecasz Claude Code wykonanie złożonego zadania, może on po cichu zrobić to:

Generuje pod-agenta.
A pod-agent ma ścisłe wstrzyknięcie "samoświadomości", aby zapobiec rekurencyjnemu generowaniu kolejnych pod-agentów:

Ten kawałek kodu mówi: "Jesteś pracownikiem, nie menedżerem. Nie myśl o zatrudnianiu większej liczby osób, wykonaj pracę sam."
Wzorzec koordynatora: Wzorzec menedżera
We wzorcu koordynatora Claude Code staje się czystym orkiestratorem zadań, nie wykonując pracy samemu, tylko delegując:

Podstawowe zasady zapisane w komentarzach kodu:
"Równoległość to twoja supermoc" dla zadań badawczych tylko do odczytu: uruchamiaj równolegle. Dla zadań zapisu plików: uruchamiaj szeregowo na grupę plików (unikając konfliktów).
Optymalizacja pamięci podręcznej promptów do ekstremum
Aby zmaksymalizować wskaźnik trafień w pamięć podręczną pod-agentów, wszystkie wyniki narzędzi rozwidlonych pod-agentów używają tego samego tekstu zastępczego:
"Fork rozpoczęty — przetwarzanie w tle"
Dlaczego? Ponieważ pamięć podręczna promptów API Claude opiera się na dopasowywaniu prefiksów na poziomie bajtów. Jeśli bajty prefiksu 10 pod-agentów są identyczne, to tylko pierwszy potrzebuje "zimnego startu", pozostałe 9 bezpośrednio trafia w pamięć podręczną.
To optymalizacja, która oszczędza kilka centów na wywołanie, ale na dużą skalę może zaoszczędzić znaczną ilość kosztów.
Wszystkie LLM mają limit okna kontekstowego. Im dłuższa rozmowa, tym więcej wiadomości historycznych, w końcu przekroczy limit.
Claude Code zaprojektował do tego trójwarstwową kompresję:

Mikro-kompresja dotyka tylko starych wyników wywołań narzędzi — zastępując "Treść 500-liniowego pliku odczytanego 10 minut temu" przez [Treść wyniku starego narzędzia wyczyszczona].
Słowa promptu i wątek dialogu są w pełni zachowane.
Gdy zużycie tokenów zbliża się do 87% okna kontekstowego (rozmiar okna - 13 000 bufora), uruchamia się automatycznie. Istnieje bezpiecznik: zatrzymaj próby po 3 kolejnych awariach kompresji, aby uniknąć pętli.
Zleć AI wygenerowanie podsumowania całej rozmowy, a następnie zastąp wszystkie wiadomości historyczne podsumowaniem. Podczas generowania podsumowania obowiązuje ścisła zasada:

Dlaczego tak rygorystycznie? Ponieważ jeśli AI wykona dodatkowe wywołania narzędzi podczas procesu podsumowywania, spowodowałoby to większe zużycie tokenów, co byłoby przeciwskuteczne. Ten prompt w zasadzie mówi: "Twoim zadaniem jest podsumowanie, nie rób nic więcej."
Budżet skompresowanych tokenów:
· Odzyskiwanie plików: 50 000 tokenów
· Limit na plik: 5 000 tokenów
· Treść umiejętności: 25 000 tokenów
Te liczby nie są przypadkowe — reprezentują punkt równowagi między "zachowaniem wystarczającego kontekstu do dalszej pracy" a "zwolnieniem wystarczającej ilości miejsca na otrzymanie nowych wiadomości."
W 510 000 linii kodu, część faktycznie wywołująca API LLM prawdopodobnie stanowi mniej niż 5%. Co z pozostałymi 95%?
· Kontrole bezpieczeństwa (18 plików tylko dla jednego BashTool)
· System uprawnień (decyzja kwadratowa zezwalaj/odmów/pytaj/przepuść)
· Zarządzanie kontekstem (trójwarstwowa kompresja + odzyskiwanie pamięci AI)
· Odzyskiwanie po błędach (bezpiecznik, wykładnicze wycofywanie, trwałość transkrypcji)
· Koordynacja wielu agentów (orkiestracja roju + komunikacja przez skrzynkę odbiorczą)
· Interakcja UI (140 komponentów React + most IDE)
· Optymalizacja wydajności (stabilność pamięci podręcznej promptów + równoległe pobieranie przy starcie)
Jeśli budujesz produkt AI Agent, to są prawdziwe problemy, które musisz rozwiązać. Nie chodzi o to, jak mądry jest twój model; chodzi o to, jak solidne jest twoje rusztowanie.
Nie chodzi tylko o stworzenie ładnego promptu. Prompty Claude Code obejmują:
· 7-warstwowe dynamiczne złożenie
· Każde narzędzie posiada samodzielną instrukcję obsługi
· Granice pamięci podręcznej są precyzyjnie wyznaczone
· Wersje wewnętrzne i zewnętrzne mają różne zestawy instrukcji
· Kolejność narzędzi jest stała, aby utrzymać stabilność pamięci podręcznej
To jest inżynieryjne zarządzanie promptami, a nie rzemiosło.
Każda zewnętrzna zależność ma odpowiednią politykę awarii:

42 narzędzia = System wywołań systemowych System uprawnień = Zarządzanie uprawnieniami użytkownika System umiejętności = App Store Protokół MCP Protocol = Sterownik urządzenia Rój agentów = Zarządzanie procesami Kompresja kontekstu = Zarządzanie pamięcią Trwałość transkrypcji = System plików
To nie jest "chatbot plus kilka narzędzi"; to system operacyjny z LLM w swoim rdzeniu.
510 000 linii kodu. 1903 pliki. 18 bezpiecznych plików tylko dla jednego narzędzia Bash.
9 warstw kontroli tylko po to, aby bezpiecznie mieć AI, która pomaga ci wpisać polecenie.
To odpowiedź Anthropic: Aby uczynić AI naprawdę użyteczną, nie możesz zamknąć jej w klatce ani pozwolić jej działać bez kontroli. Musisz zbudować wokół niej kompletne ramy zaufania.
A kosztem tego systemu zaufania jest 510 000 linii kodu.
Niniejsza treść ma charakter wyłącznie informacyjny i nie stanowi porady finansowej, inwestycyjnej, prawnej ani podatkowej. Wszelkie wydarzenia, nagrody, promocje online lub powiązane informacje, o których tu mowa, nie powinny być traktowane jako rekomendacja, zachęta ani zaproszenie do kupna, sprzedaży, wymiany lub innego rodzaju obrotu aktywami kryptograficznymi. Aktywa kryptograficzne charakteryzują się dużą zmiennością i mogą prowadzić do strat. Dostępność usług, produktów i powiązanych wydarzeń WEEX może się różnić w zależności od regionu. Użytkownik jest odpowiedzialny za upewnienie się, że jego udział jest zgodny z obowiązującymi lokalnymi przepisami i regulacjami.





























