Powrót do strony głównej

Źródła Claude Code: architektura CLI

Wyciek źródeł Claude Code ujawnił wieloreżimowy runtime na React/Ink z orkiestracją agentów, dynamicznymi importami i ścisłą bash-security. Analiza skupia się na architekturze dla terminal AI.

Wnętrze Claude Code z wycieku: React i agenci
Advertisement 728x90

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.

Google AdInline article slot

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.

Google AdInline article slot
  • 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:

Google AdInline article slot
  • 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_interrupted vs sibling_error vs streaming_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.tsx jako 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

Advertisement 728x90

Czytaj dalej