Przejdź do treści
Intum Dev

Wyciek kodu Claude Code - co się stało i czego się dowiedzieliśmy

Aktualizacja: 7 min czytania

Pod koniec marca 2026 do sieci wyciekł kod źródłowy Claude Code - narzędzia CLI Anthropic do kodowania z AI. Wyciek wywołał sporo dyskusji, ale przede wszystkim pozwolił zajrzeć pod maskę najlepszego agenta kodującego na rynku.

Jak doszło do wycieku

Ktoś z Anthropic chciał usunąć wersję pakietu z rejestru NPM, ale zamiast npm unpublish użył npm deprecate. Różnica jest kluczowa - unpublish usuwa pakiet, deprecate tylko oznacza go jako przestarzały, ale pliki zostają. W paczce znajdował się plik source map (.map), który zawierał pełny kod źródłowy.

Ironia losu - prawdopodobnie komendę wykonał agent AI, który wybrał bezpieczniejszą opcję (deprecate) zamiast destrukcyjnej (unpublish). Idealny przykład tego, jak AI czasem interpretuje polecenia po swojemu.

Skala projektu

Kod ujawnił projekt znacznie większy niż ktokolwiek zakładał:

  • Ponad 500 000 linii kodu TypeScript
  • 564 plików narzędziowych, 389 komponentów, 189 komend
  • 50+ narzędzi wbudowanych (tools)
  • 72 komendy slash
  • Dla porównania - OpenCode (open-source’owy odpowiednik) to ok. 113 000 linii

Agent loop - jak działa pod spodem

Każda wiadomość w Claude Code przechodzi przez 11-etapową pętlę:

  1. Użytkownik wpisuje tekst (komponent Ink/React do ANSI)
  2. Wiadomość jest formatowana z kontekstem
  3. Historia konwersacji jest ładowana i filtrowana
  4. System prompt jest składany (CLAUDE.md, reguły, pamięć)
  5. Request leci do API
  6. Tokeny są streamowane
  7. Model decyduje czy użyć narzędzia
  8. Jeśli tak - narzędzie się wykonuje i pętla wraca do kroku 5
  9. Odpowiedź jest renderowana (React -> ANSI, ~16ms frame budget jak w grze)
  10. Hooki się odpalają (pre/post tool call)
  11. Czeka na kolejny input

To bardziej przypomina mały silnik gry niż typowe CLI.

System narzędzi

Narzędzia podzielone na kategorie:

Operacje na plikach - FileRead, FileEdit, FileWrite, Glob, Grep, NotebookEdit
Wykonywanie kodu - Bash, PowerShell, REPL
Wyszukiwanie - WebFetch, WebSearch, ToolSearch
Agenci i zadania - Agent (subagenty), SendMessage, TaskCreate/Update/Stop, TeamCreate, ListPeers
Planowanie - EnterPlanMode, ExitPlanMode, EnterWorktree (izolowane git worktree), ExitWorktree
MCP - pełna obsługa Model Context Protocol
System - AskUserQuestion, TodoWrite, Skill, Config, RemoteTrigger, Cron

Kluczowa decyzja architektoniczna - narzędzia po stronie klienta są proste i generyczne. Cała inteligencja siedzi w system prompcie i po stronie serwera. Dzięki temu mogą dodawać nowe zachowania bez aktualizacji klienta.

Zarządzanie kontekstem

Jeden z najbardziej dopracowanych elementów. Trzy poziomy kompakcji:

  • Pełna kompakcja z podsumowaniem przez API (gdy kontekst się zapełnia)
  • Kompakcja pamięci sesji z wyciąganiem kluczowych informacji
  • Mikrokompakcja - czyści stare wyniki narzędzi po >1 godzinie bezczynności

Pełna historia jest zapisywana lokalnie w plikach JSONL (append-only), ale do API lecą tylko wiadomości po ostatniej kompakcji. Flagi na wiadomościach (isCompactSummary, isVisibleInTranscriptOnly, isMeta) kontrolują co widzi API, a co zostaje lokalne.

Nieujawnione funkcje

W kodzie znaleziono kilka niewyslanych ficzerów:

  • Kairos - tryb persystentny z konsolidacją pamięci między sesjami i autonomicznymi akcjami w tle
  • Buddy - wirtualny zwierzak w terminalu (tamagotchi). Gatunek i rzadkość zależą od ID konta
  • UltraPlan - długie sesje planowania na modelach klasy Opus, do 30 minut wykonania
  • Coordinator Mode - główny agent rozbija zadanie na części, odpala równoległych workerów w izolowanych git worktree, zbiera wyniki
  • Bridge - zdalne sterowanie Claude Code z telefonu lub przeglądarki, z zatwierdzaniem uprawnień
  • Daemon Mode - sesje w tle przez tmux (--bg)
  • Auto-Dream - między sesjami AI przegląda co się wydarzyło i organizuje wiedzę
  • Undercover Mode - ukrywa informacje o AI w commitach i PR-ach

Jakość kodu

Tu było sporo kontrowersji. Główny plik src/cli/print.ts ma jedną funkcję na 3167 linii obsługującą pętlę agenta, autentykację, rate limiting i zarządzanie pluginami. 12 poziomów zagnieżdżenia, cyklomatyczna złożoność ~486.

Część komentatorów twierdzi, że to efekt “vibe codingu” - kod generowany przez AI, który działa ale jest ciężki do utrzymania. Inni argumentują, że przy probabilistycznym LLM-ie trzeba mieć tony defensywnego kodu - regexy na frustrację, sanitizery kontekstu, pętle retry narzędzi, rollbacki stanu. Pragmatycy zwracają uwagę, że produkt działa i jest najlepszy na rynku, więc jakość kodu jest drugorzędna.

Czym Claude Code różni się od open-source’owych alternatyw

Po zobaczeniu kodu widać kilka kluczowych przewag:

Zarządzanie kontekstem jest o klasę lepsze. OpenCode czy Aider nie mają wielopoziomowej kompakcji ani inteligentnego filtrowania historii. Claude Code traktuje okno kontekstowe jak zasób do zarządzania, nie jako prostą kolejkę wiadomości.

System subagentów pozwala na równoległe wykonywanie zadań w izolowanych worktree. Open-source’owe narzędzia działają sekwencyjnie.

Hooki (pre/post tool call) dają użytkownikowi kontrolę bez modyfikacji kodu. W OpenCode trzeba forkować repo.

Orkiestracja narzędzi - 50+ narzędzi z granularnym systemem uprawnień, lazy loading schematów (ToolSearch), integracja z MCP. OpenCode ma ich kilkanaście.

UI jako silnik gry - rendering React do ANSI z 16ms budżetem na klatkę. Inne CLI-owe agenty używają prostego stdout.

Z drugiej strony, OpenCode ma 4.5x mniejszy codebase i jest łatwiejszy do zrozumienia i modyfikacji. Dla kogoś kto chce pełnej kontroli nad narzędziem, open-source nadal ma sens.

Reakcja Anthropic

Anthropic nie skomentował wycieku oficjalnie. Przedstawiciel firmy na HN potwierdził jedynie, że kontrowersyjny “undercover mode” można wyłączyć w ustawieniach i że istnieją uzasadnione powody jego istnienia (np. integracja Claude Code w własnych serwisach).

Claude Code vs OpenCode - porównanie funkcji

Po wycieku kodu widać dokładnie, co Claude Code ma pod maską i gdzie się różni od OpenCode (open-source’owa alternatywa w Go).

Dane ogólne

Claude Code OpenCode
Język TypeScript (500K LOC) Go (113K LOC)
UI React/Ink -> ANSI (~16ms frame budget) Bubble Tea TUI
Baza danych JSONL (append-only, lokalne pliki) SQLite
Licencja Proprietary MIT
Providery Tylko Anthropic OpenAI, Anthropic, Google, Groq, AWS Bedrock, Azure, GitHub Copilot
Status Aktywny rozwój Archiwum (kontynuacja jako Crush)

Funkcje - punkt po punkcie

Funkcja Claude Code OpenCode CC OC
Edycja plików FileEdit z diff-based patching, FileWrite, NotebookEdit Edycja plików przez narzędzia AI 9 6
Wyszukiwanie w kodzie Glob + Grep + ToolSearch (lazy loading schematów) Wyszukiwanie plików 9 5
Wykonywanie komend Bash + PowerShell + REPL, granularne uprawnienia Bash/shell z dialogiem uprawnień 8 6
Zarządzanie kontekstem 3 poziomy kompakcji (pełna, pamięć sesji, mikro). Flagi na wiadomościach, append-only JSONL Auto-kompakcja przy 95% okna kontekstowego 10 5
System subagentów Agent tool - równoległe zadania w izolowanych git worktree, SendMessage między agentami Brak subagentów 9 0
Planowanie EnterPlanMode, ExitPlanMode, worktree do izolacji, UltraPlan (do 30 min) Brak dedykowanego trybu planowania 9 0
MCP (Model Context Protocol) Pełna obsługa - narzędzia, zasoby, auth Obsługa serwerów stdio z env variables 8 5
LSP (Language Server) Eksperymentalne (flagowane) Wbudowane, konfigurowalne per język 4 7
Hooki (pre/post tool) Tak - definiowalne w ustawieniach, blokują lub modyfikują wywołania Brak 8 0
Pamięć między sesjami CLAUDE.md + memory system + Auto-Dream (niewyslany) SQLite z historią sesji 8 4
System uprawnień Granularny - per narzędzie, per wzorzec komendy, allowlist/denylist Dialog allow/deny per wywołanie 9 5
Komendy slash 72 komendy (/compact, /plan, /commit, /review, /voice…) Komendy przez Ctrl+K dialog 9 4
Tryb nieinteraktywny Tak (piped stdin) Tak (-p flag, JSON output) 7 7
Integracja z Git /commit, /diff, /pr_comments, /branch, izolowane worktree Brak natywnej integracji 9 0
Web fetch/search WebFetch + WebSearch wbudowane Brak (możliwe przez MCP) 7 2
Wybór modelu Ograniczony do Claude (Opus, Sonnet, Haiku) Dowolny provider, konfigurowalne per agent 3 9
Konfiguracja CLAUDE.md + settings.json + rules/ .opencode.json, wielopoziomowa (home/XDG/local) 7 7
Rendering UI React do ANSI z budżetem klatek, markdown w terminalu Bubble Tea z vim-like edytorem 8 7
Praca zdalna Bridge (telefon/przeglądarka), Daemon mode (tmux) Brak 7 0

Podsumowanie ocen

Claude Code OpenCode
Średnia ocena 7.8 / 10 3.8 / 10
Najsilniejsze strony Kontekst, subagenty, planowanie, git, hooki Multi-provider, LSP, prostota, otwartość kodu
Najsłabsze strony Tylko modele Claude, closed-source Brak agentów, planowania, hooków, gita

Claude Code wygrywa zdecydowanie w złożonych scenariuszach - tam gdzie trzeba rozdzielić pracę na subagentów, zaplanować wieloetapowe zadanie albo utrzymać kontekst przez długą sesję. OpenCode jest prostszy i bardziej elastyczny jeśli chodzi o wybór modelu, ale brakuje mu zaawansowanych mechanizmów które robią różnicę przy dużych projektach.

OpenCode istnieje w dwóch wersjach - oryginalna (opencode-ai) została zarchiwizowana i kontynuowana jako Crush, ale aktywna wersja od Anomaly (anomalyco/opencode) ma 135K gwiazdek i jest rozwijana.

Źródła

Czy ten wpis był pomocny?

Udostępnij

Komentarze