Největší zajímavosti ve zdrojovém kódu Claude Code

Claude Code je terminálový AI asistent od společnosti Anthropic — nástroj, který programátorům umožňuje psát, upravovat a ladit kód přímo z příkazové řádky v dialogu s jazykovým modelem Claude. Na první pohled vypadá jako elegantní CLI utilita. Pod kapotou se ale skrývá jeden z nejsofistikovanějších open-source projektů v oblasti AI-assisted development, jaký dnes existuje.

Měl jsem možnost projít jeho kompletní zdrojový kód a výsledek mě upřímně překvapil. Nejde jen o „wrapper nad API“ — je to plnohodnotná aplikace s vlastním bezpečnostním modelem, sedmi nezávislými strategiemi komprese kontextu, hlasovým vstupem s multi-platform fallbacky a terminálovou UI postavenou na Reactu. Celý projekt běží na Bun runtime a čítá desítky tisíc řádků TypeScriptu.

V tomto článku vybírám 10 nejzajímavějších architektonických a implementačních detailů, které jsem v kódu našel — od 800KB monolitického souboru přes komentáře psané ve stylu Harryho Pottera až po bezpečnostní modul, jehož dokumentace připomíná akademický paper.


1. main.tsx – 4 684 radku a 803 KB v jednom souboru

Kazdy projekt ma svuj vstupni bod – misto, kde vsechno zacina. U Claude Code je to soubor main.tsx, a kdyz ho otevrete, mozna vas napadne, jestli nekdo omylem spojil cely projekt do jednoho souboru. S 803 KB a temer peti tisici radku je to jeden z nejdelsich single-file vstupnich bodu, na jaky jsem kdy narazil. A pritom dava smysl – je to monströznni soubor, ktery dela uplne vsechno:

  • 200+ importů ze všech koutů aplikace
  • Parsování CLI argumentů (Commander.js)
  • Early-load side-effects: startup profiling, MDM prefetch, keychain prefetch
  • Detekce debuggeru (a okamžitý process.exit(1) pokud běží v inspekčním módu!)
  • Celý migrační systém s 11 verzemi migrací (přejmenování modelů, nastavení, oprávnění)
  • SSH remote sessions, Direct Connect (cc:// protokol), Assistant mode (KAIROS)
  • Teleport (resume session na jiném počítači)

Zajimavym detailem je ochrana proti reverse engineeringu – pokud kod detekuje, ze bezi v debugovacim rezimu a nejde o interni (Anthropic) build, okamzite ukonci proces. Jednoduche, ale ucinne.

Upozorneni

Soubor 803 KB v jednom .tsx je extrémně neobvyklý. Většina projektů by toto rozdělila na desítky modulů. To naznačuje buď historický růst, nebo záměrný design pro bundling (Bun).


2. bashSecurity.ts – 102 KB bezpecnostnich validatoru

Kdyz AI asistent muze spoustet prikazy v terminalu, stojite pred zasadnim problemem: jak zabranit tomu, aby nekdo (nebo sam model) spustil neco nebezpecneho? Odpoved tvorcu Claude Code je impozantni – napsali 102 KB cistech bezpecnostnich validaci. Kazdy prikaz, ktery model navrhne, projde desitkami kontrol, nez se vubec dostane k shellu.

Je to jednoznacne nejpozoruhodnejsi bezpecnostni modul, jaky jsem kde videl. Soubor ma 2 593 radku cistych bezpecnostnich kontrol pro Bash prikazy.

Co všechno hlídá?

Check ID Čeho se týká
1 Neúplné příkazy (začínají tabulátorem, -, &&)
2 jq system() — jq může spouštět shell příkazy
3 Obfuskované flagy
5 Shell metaznaky (;, \|, &) v argumentech
6 Nebezpečné proměnné prostředí
8 $() command substitution
9-10 Vstupní/výstupní přesměrování
11 IFS injection
14 Malformed token injection
17 Kontrolní znaky Unicode
20 Zsh-specifické nebezpečné příkazy

Zsh: cely extra attack surface

Krome standardniho Bashe system hlida i prikazy specificke pro Zsh – napriklad zmodload (brana k nebezpecnym modulem jako zsh/system ci zsh/zpty), emulate (ktery s parametrem -c funguje jako eval), ztcp (TCP spojeni pro exfiltraci dat) nebo vestavene alternativy systemovych prikazu jako zf_rm ci zf_chmod. Celkem je blokovano pres 20 Zsh-specifickych prikazu.

Heredoc parser v ramci security checku

Cela funkce isSafeHeredoc() (priblizne 200 radku) implementuje line-based matching presne replikujici chovani Bashe pro uzavirani heredocu. Autori vysvetluji, ze regex pristup by mohl preskocit pres delimiter a skryt injektovane prikazy – proto namisto regularnich vyrazu zpracovavaji vstup radek po radku, presne tak, jak to dela sam Bash.

Dulezite

Komentáře v tomto souboru jsou bezpečnostní dokumentace na úrovni akademického paperu. Každý regex má vysvětlení, proč je napsán právě tak, a jaký útočný vektor blokuje. To je extrémně vzácné v produkčním kódu.


3. Query Loop – query.ts s auto-kompakci, snip a reactive compact

Kazdá konverzace s AI modelem ma svuj limit – kontextove okno. Cim dele si povidate, tim vic tokenu spotrebujete, az narazite na strop. Vetsina nastroju v tu chvili proste rekne „konverzace je prilis dlouha“. Claude Code to resi uplne jinak: ma propracovany system, ktery konverzaci prubezne zhustuje, zkracuje a optimalizuje, aniz byste si toho vsimli.

Soubor query.ts (1 730 radku, 68 KB) implementuje hlavni dotazovaci smycku, ktera je srdcem cele aplikace:

graph LR
    A[User Input] --> B[processUserInput]
    B --> C[applyToolResultBudget]
    C --> D[snipCompactIfNeeded]
    D --> E[microcompact]
    E --> F[contextCollapse]
    F --> G[autocompact]
    G --> H[callModel API]
    H --> I[StreamingToolExecutor]
    I --> J{tool_use?}
    J -->|Ano| K[runTools]
    K --> A
    J -->|Ne| L[result]

Klíčové featury:

  • Streaming Tool Execution — paralelní spouštění nástrojů během streamování
  • Auto-compact — automatická komprese historie, když kontext překročí limit
  • Snip compact — odříznutí starých zpráv
  • Micro-compact — jemná komprese jednotlivých bloků
  • Reactive compact — komprese jako reakce na „prompt too long“ chybu
  • Context collapse — kolaps kontextu pro úsporu tokenů
  • Task budget tracking — sledování rozpočtu na celý agentní turn
  • Max output tokens recovery — až 3 pokusy o obnovení z truncated output

„Pravidla mysleni“ – komentar jako z Harryho Pottera

Nad klicovm blokem kodu najdete komentar psany archaickou anglictinou ve stylu fantasy romanU. Autor v nem varuje budouci vyvojare, ze pravidla pro zpracovani thinking bloku jsou slozita a vyzaduji „hlubokou meditaci“. A konci vyhruzkou: „Pokud tato pravidla nedodrzis, budes potrestam celym dnem debugovani a trhani vlasu.“ Vtipne, ale pravdive – implementace thinking bloku je skutecne jedna z nejnarocnejsich casti kodu.


4. Tool System – Tool.ts a 40+ nastroju

AI model sam o sobe jen generuje text. Aby mohl skutecne neco udelat – precist soubor, spustit prikaz, upravit kod – potrebuje nastroje. Claude Code jich ma pres 40 a kazdy z nich prochazi sofistikovanym systemem opravneni, validace a bezpecnostnich kontrol. Neni to proste volani funkce; je to cely framework.

Abstrakce nastroje (Tool.ts, 793 radku) definuje jeden z nejpropracovanejsich tool interface, jaky existuje:

Hlavní vlastnosti Tool interface:

Metoda Účel
call() Spuštění nástroje
checkPermissions() Kontrola oprávnění
validateInput() Validace vstupu před spuštěním
isConcurrencySafe() Bezpečnost pro paralelní spuštění
isReadOnly() Pouze čtení?
isDestructive() Destruktivní operace?
interruptBehavior() 'cancel' vs 'block' při přerušení uživatelem
isSearchOrReadCommand() Pro UI: condensovaný výstup
toAutoClassifierInput() Vstup pro auto-mode bezpečnostní klasifikátor
preparePermissionMatcher() Příprava matcheru pro hook if conditions
backfillObservableInput() Zpětné doplnění legacy/derived polí
maxResultSizeChars Max velikost výsledku před persistencí na disk

buildTool() – factory pattern

Vsech 40+ nastroju prochazi jednim factory, ktery ke kazde definici doplni vychozi chovani (defaults). Je to elegantni vzor – vyvojar definuje jen to, co je specificke pro jeho nastroj, a zbytek dostane automaticky. Dulezity je fail-closed design: napriklad isConcurrencySafe vychozne vraci false, takze kazdy nastroj je implicitne povazovan za nebezpecny pro paralelni beh, dokud autor explicitne nerekne jinak.

Seznam nástrojů (40+ adresářů):

AgentTool, BashTool, FileEditTool, FileReadTool, FileWriteTool,
GlobTool, GrepTool, MCPTool, NotebookEditTool, PowerShellTool,
REPLTool, SkillTool, WebSearchTool, WebFetchTool, TodoWriteTool,
TaskCreateTool, TaskStopTool, SleepTool, LSPTool, ...
Tip

Existence PowerShellTool vedle BashTool potvrzuje first-class Windows support — ne jen „bash přes WSL“.


5. Voice Service – Multi-platform audio s fallback chain

Mluvit s AI asistentem misto psani zni jednoduze, ale implementacne je to nocni mura. Kazdy operacni system (macOS, Linux, Windows) zpristupnuje mikrofon jinym zpusobem, a nekdy ho nezpristupnuje vubec (treba ve WSL). Autori Claude Code se s tim vyporadali elegantnim retezcem fallbacku – kdyz selze jedna metoda, automaticky zkusi dalsi.

Soubor voice.ts (526 radku) implementuje hlasovy vstup s pozoruhodnou fallback logikou:

Native NAPI (cpal) → arecord (ALSA) → SoX (rec)

Architektonické perličky:

  1. Lazy-load dlopen – nativni audio modul se nacita az pri prvnim stisku klavesy pro hlasovy vstup. Duvod je pragmaticky: na macOS muze nacteni nativni knihovny blokovat hlavni vlakno az 8 sekund po studenem startu (kdyz se coreaudiod teprve probouzi). Nacteni pri startu aplikace by vyvolalo neprijemne zamrznutui.

  2. WSL detection — rozlišuje WSL1 (žádné audio), WSL2 bez WSLg a WSL2+WSLg (PulseAudio přes RDP pipes)

  3. probeArecord() — skutečně spustí arecord na 150ms a ověří, zda se podařilo otevřít zařízení. hasCommand('arecord') nestačí — binárka může existovat, ale /proc/asound/cards je prázdný.

  4. Linux ALSA card detection čte přímo /proc/asound/cards a hledá string 'no soundcards'.


6. Cost Tracker – precizni sledovani nakladu

Kazde zavolani AI modelu neco stoji – a pri intenzivni praci s kodem se naklady rychle nasbiraji. Claude Code proto obsahuje detailni sledovani spotreby, ktere uzivateli ukazuje presne, kolik tokenu spotreboval, na jakem modelu a za kolik dolaru. System je natolik dukladny, ze si pamatuje naklady i mezi restarty.

cost-tracker.ts (324 radku) sleduje naklady na API volani v realnem case s granularitou na model:

  • Sleduje input/output/cache_read/cache_creation tokeny
  • Per-model rozúčtování
  • Web search requests
  • OpenTelemetry metriky (getCostCounter()?.add(cost, attrs))
  • Persistentní session costs — ukládá do project configu a obnovuje při --resume
  • Advisor model tracking — extra tokeny z „poradního“ modelu

7. QueryEngine – lifecycle management s AsyncGenerator pattern

QueryEngine je mozek cele operace – trida, ktera drzi pohromade konverzaci, historii zprav a orchestraci nastroju. Zajimave je, jak vyuziva TypeScriptove asynchronni generatory k tomu, aby odpovedi od modelu proudily k uzivateli v realnem case, zatimco na pozadi bezi persisting a normalizace dat.

QueryEngine.ts (1 296 radku) vyuziva TypeScriptove asynchronni generatory (async function*) k tomu, aby zpravy od modelu proudily k uzivateli v realnem case. Metoda submitMessage postupne generuje (yield) normalizovane zpravy, zatimco na pozadi probiha jejich ukladani a zpracovani.

Zajimavy detail: transcript persistence je race-condition-aware. Uzivatelske zpravy se ukladaji na disk PRED odeslanim na API. Duvod? Pokud uzivatel proces ukonci (napr. klikne Stop) behem cekani na odpoved, konverzace zustane obnovitelna pres --resume prave diky tomu, ze vstupni zprava uz byla ulozena.


8. Compact System – 7 vrstev komprese kontextu

Uz jsem zminil, ze Claude Code resi problem prilis dlouhych konverzaci. Co jsem nerekl, je rozsah toho reseni. V adresari services/compact/ se skryva cely kompresni pipeline se sedmi (!) nezavislymi strategiemi. Kazda reaguji na jiny typ situace a dohromady tvoří system, ktery jsem v zadnem jinem projektu nevidel.

Adresar services/compact/ obsahuje cely kompresni pipeline:

Soubor Velikost Účel
compact.ts 60 KB Hlavní kompresní logika
sessionMemoryCompact.ts 21 KB Komprese session paměti
microCompact.ts 19 KB Jemná komprese bloků
prompt.ts 16 KB Prompt pro kompresní model
autoCompact.ts 13 KB Automatická komprese s prahovými hodnotami

To je 7 nezávislých kompresních mechanismů (autoCompact, microCompact, snipCompact, reactiveCompact, contextCollapse, sessionMemoryCompact, apiMicrocompact) — každý s jiným triggrem a strategií. Tento stupeň sofistikace je extrémně neobvyklý.


9. Feature Flags a Dead Code Elimination

Anthopic vytvari z jednoho zdrojoveho kodu vice verzí produktu – interní build pro zamestnance a externi build pro verejnost. Misto dvou oddelených vetvi pouzivaji elegantni system feature flagu, ktery pri buildovani fyzicky odstrani kod funkci, ktere v dane verzi nemaji byt.

Kod vyuziva funkci feature() z bun:bundle pro compile-time rozhodovani. Princip je jednoduchy: pri buildovani se na zaklade konfigurace rozhodne, ktere funkce budou v dane verzi zahrnuty. Bundler pak fyzicky odstrani nerelevantni vetev kodu – nejen ze se nespusti, ona v binarce vubec neexistuje.

To znamena, ze externi build (pro verejnost) fyzicky neobsahuje kod funkci jako KAIROS (assistant mode), COORDINATOR_MODE, SSH_REMOTE, TRANSCRIPT_CLASSIFIER a dalsich internich featur.


10. Startup Optimization – paralelismus na millisekund

Kdyz spustite Claude Code, cekate mozna sekundu, nez se objevi prompt. Za tu sekundu se ale deje neuveritelne mnozstvi prace – a autori se snazi kazdy start zrychlit na uroven milisekund. Prvnich 20 radku kodu ukazuje, jak daleko jsou ochotni pro ty usetrane milisekundy zajit.

Jeste nez se nacte jediny modul, spusti se dva paralelni procesy: cteni MDM konfigurace a prefetch klicu z keychainu (coz setri priblizne 65 ms). Teprve pak nasleduje 200+ importu, jejichz evaluace trva zhruba 135 ms. Subprocess spawny z prvnich radku bezi paralelne s timto nacitanim, takze se jejich latence efektivne „skryje“.


Souhrnny prehled codebase

Metrika Hodnota
Největší soubor main.tsx803 KB
Bezpečnostní modul bashSecurity.ts102 KB
Bash oprávnění bashPermissions.ts98 KB
BashTool samotný BashTool.tsx160 KB
Počet nástrojů 40+
Kompresní strategie 7 nezávislých
Feature flags COORDINATOR_MODE, KAIROS, SSH_REMOTE, HISTORY_SNIP, REACTIVE_COMPACT, CONTEXT_COLLAPSE, BG_SESSIONS, TOKEN_BUDGET, …
Runtime Bun (bundled) s Node.js kompatibilitou
UI framework React + Ink (terminal UI)
Dulezite

Tento kód reprezentuje jeden z nejpropracovanějších AI CLI nástrojů na světě. Kombinace security-first designu (přes 200 KB bezpečnostních kontrol jen pro Bash), sofistikované správy kontextu (7 kompresních mechanismů), a hlubokého multi-platform supportu (voice se 3 backend fallbacky, WSL detekce) dělá z tohoto projektu fascinující studijní materiál pro pokročilé softwarové inženýry.