Anatomia Claude Code: co ujawniły źródła z wycieku
31 marca 2026 roku przez sourcemap w pakiecie npm wydostały się źródła Claude Code. To nie czysty git-checkout, a odtworzony snapshot kodu klienckiego z transformacjami i brakującymi plikami jak assistant/index.ts czy daemon/main.js. screens/REPL.tsx jest już przetworzony przez React Compiler, a main.tsx zachowuje ślady optymalizacji uruchamiania: profileCheckpoint, prefetch keychain, równoległy MDM-read.
Kod odzwierciedla ewolucję od prostego CLI do terminalowego systemu operacyjnego. Importy dynamiczne służą leniwemu ładowaniu, --version uruchamia się bez zależności. Ale złożoność rośnie: daemon, remote-control, tmux, serwery MCP.
CLI jako fasada wielomodalnego runtime'u
entrypoints/cli.tsx — dworzec tras: --version, system prompt, daemon, environment-runner, self-hosted-runner, ps/logs/attach/kill. Dynamiczne importy minimalizują evaluation: workers are lean. Szybkie ścieżki nie ciągną ciężkich modułów, redukując pamięć i ryzyko awarii.
Plus: optymalizacja startu. Minus: znajomość wszystkich trybów sprawia, że CLI przypomina lotnisko. Leniwie ładowanie ratuje, ale schemat przeraża.
// Przykład z cli.tsx
if (fastPath) {
// zero imports beyond this file
console.log(version);
process.exit(0);
}
main.tsx: centrum grawitacji systemu
main.tsx — punkt kolapsu: inicjalizacja, wybór trybu, tool pool, feature flags, KAIROS/Proactive, structured output, odzyskiwanie sesji. Plus: wszystkie rozgałęzienia w jednym miejscu. Minus: kompromisy jak proactive mode przed getTools() dla SleepTool.isEnabled().
Ewolucja widoczna: od CLI do systemu z flagami i kontrolami. Skala rodzi takie konstrukcje.
- Inicjalizacja i wybór trybu
- System prompt i tool pool
- Feature flags i sesje zdalne
- Uruchomienie UI i sesje
React w terminalu: Ink i frontend-kombajn
Claude Code — aplikacja React na Ink. screens/REPL.tsx zarządza powiadomieniami, modalami, integracją IDE, MCP, pluginami, trybem teammate, floating UI, Buddy.
Synchronizuje stan, filtruje tools, dodaje pluginy. Nie czat, a frontend w terminalu z nawykami przeglądarki.
Orkiestracja agentów jako infrastruktura
Nie jeden agent, a dyspozytornia. AgentTool obsługuje:
- Synchroniczne/asynchroniczne uruchamianie
- Background i izolację worktree
- Tryby zdalne i teammate
- Własny tool pool i permission mode
- Tożsamość cache prompt/tools
Agenty async z postępem, powiadomieniami. Worktree jako część trasy. Dojrzała agentura poza Promise.all.
Explore-agent ograniczony: read-only, bez write/delete/redirect/heredoc, skupienie na grep/read równolegle. Balans samodzielności i kagańca.
Tool execution: współbieżność i odporność na awarie
Narzędzia grupują: read-only równolegle, ryzykowne — szeregowo. Wykonawca strumieniowy z:
- Anulowaniem sąsiadów przy błędzie
user_interruptedvssibling_errorvsstreaming_fallback- Buforowaniem dla porządku
- Uwzględnieniem interrupt
Produkt przetrwa zablokowania i konflikty.
Bash bez samobójstwa: paranoja security
bashPermissions i bashSecurity blokują:
- Command/process substitution
- Heredoc/zsh equals
zmodload/ztcp/zpty- Obfuskowane flagi
env/sudo/nice/timeout- Whitespace/ekranowanie
Dojrzała warstwa przeciw realnym ugryzieniom shell od LLM.
Ludzki akcent: Buddy i animacje
buddy/ — ASCII-sprite'y, dymki mowy, animacje. Terminalny kompan dodaje życia CLI.
Co ważne:
- Dynamiczne importy dla szybkiego startu trybów
main.tsxjako centrum orkiestracji z kompromisami skali- Infrastruktura agentowa z izolacją i lifecycle
- Równoległe/szeregowe tool calls z error-handling
- Bash-security przeciw atakom shell
- React/Ink dla terminalnego UI z Buddy
— Editorial Team
Brak komentarzy.