[Intum Dev](https://intum.dev.md) / [Narzędzia AI](https://intum.dev/narzedzia-ai.md)

# [Wyciek kodu Claude Code - co się stało i czego się dowiedzieliśmy](https://intum.dev/narzedzia-ai/wyciek-kodu-claude-code-co-sie-stalo-i-czego-sie-dowiedzielismy.md)

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

- [Wątek HN - źródło wycieku](https://news.ycombinator.com/item?id=47584540)
- [Dyskusja o architekturze](https://news.ycombinator.com/item?id=47597085)
- [Analiza undercover mode](https://news.ycombinator.com/item?id=47586778)
- [Claude Code Unpacked](https://ccunpacked.dev/) - interaktywna wizualizacja architektury
- [OpenCode](https://opencode.ai/) - strona projektu OpenCode
- [OpenCode repo](https://github.com/anomalyco/opencode) - kod źródłowy (135K gwiazdek)
- [OpenCode (starsza wersja)](https://github.com/opencode-ai/opencode) - archiwum, kontynuacja jako [Crush](https://github.com/charmbracelet/crush)

---

## Powiązane

- [Agenci CLI do kodowania — Claude Code, Codex, Gemini CLI, OpenCode i Aider w porównaniu](https://intum.dev/narzedzia-ai/agenty-cli-do-kodowania-claude-code-codex-gemini-cli-i-copilot-w-porownaniu.md)
