"Claude Code изнутри: что показала утечка 512 000 строк кода Anthropic"
Claude Code изнутри: что показала утечка 512 000 строк кода Anthropic
31 марта из npm-пакета Claude Code утёк полный исходный код. Не взлом — файл source map забыли добавить в `.npmignore`. За несколько часов GitHub-зеркала разнесли 512 000 строк TypeScript по всему интернету.
Когда улеглась волна мемов про «самую дорогую опечатку в AI», стало ясно: внутри — не обёртка над API, а серьёзная инженерная система. Разбираю, как она устроена.
Потоковый цикл вместо последовательного
Обычный AI-агент работает так: получил запрос → сгенерировал ответ → вызвал инструменты → дождался результатов → сгенерировал снова. Каждый шаг ждёт предыдущий.
Claude Code делает иначе. Инструменты запускаются **параллельно** с генерацией текста. Модель вызывает три инструмента — они стартуют одновременно. Один читает файл, другой запускает bash, третий проверяет git. Результаты возвращаются по мере готовности.
Для пользователя это ощутимо: вместо секундных пауз между шагами — непрерывный поток работы.
40+ инструментов — каждый со своими правами
Не плоский список функций, а реестр изолированных модулей. У каждого — своя схема ввода, свой уровень привилегий, своя логика ошибок.
`BashTool` может менять файлы на диске — высокий риск, строгие ограничения. `FileReadTool` только читает — минимальные ограничения. Нет глобального тумблера «разрешить всё».
Хитрый ход: `AgentTool` позволяет порождать суб-агентов как обычный вызов инструмента. Суб-агент — не отдельная сущность, а такой же инструмент в реестре. Плоская архитектура без лишних абстракций.
Три уровня агентов: worker → coordinator → team
Для сложных задач работает многоагентная система:
- **Worker** — исполнитель в изолированном Git worktree (собственная копия репозитория, никто никому не мешает) - **Coordinator** — раздаёт задачи, контролирует результаты, одобряет рискованные операции - **Team** — группа координаторов для масштабных проектов
Ключевой паттерн — «mailbox»: worker не может сам одобрить опасную операцию. Отправляет запрос координатору — и ждёт решения. Параллелизм без хаоса.
Как экономят токены: три уровня сжатия
Долгая сессия = много контекста = дорого и медленно. Claude Code решает это тремя способами:
**MicroCompact** — обрезает старые выводы инструментов прямо в памяти. Ноль API-вызовов.
**AutoCompact** — при приближении к потолку генерирует структурированное саммари. Встроенный предохранитель: три неудачных попытки — и останавливается.
**Full Compact** — полное сжатие с повторной инъекцией важных файлов. После него бюджет обновляется до 50 000 токенов.
Плюс двухслойный prompt caching: статическая часть (системный промпт, описания инструментов) кэшируется между запросами, динамическая (диалог, результаты) — нет. Чем стабильнее статическая часть — тем больше cache hits.
Что скрыто за feature flags
108 модулей спрятаны за флагами и вырезаны из продакшн-сборки. Четыре самых интересных:
**KAIROS** — фоновый daemon. Работает при закрытом терминале, ведёт логи, может сам поднимать вопросы. Не реактивный помощник, а проактивный наблюдатель.
**autoDream** — ночная консолидация памяти. Буквально: Claude Code «спит» и обрабатывает дневные наблюдения, удаляя дубликаты и противоречия. Цель — чтобы следующая сессия начиналась с актуального понимания проекта.
**ULTRAPLAN** — планирование на Opus 4.6 в облаке, до 30 минут. Утверждаете план с телефона — агент выполняет.
**Buddy** — Tamagotchi-пет. 18 видов, уровни редкости, характеристики. Вид определяется из хэша userId — один пользователь = один питомец навсегда.
Неочевидные детали
- **Vim-режим** — не эмуляция пяти команд, а полноценный FSM с 11 состояниями - **React 19 рендерер** с double-buffered rendering для терминала — убирает мерцание при быстром стриминге - **Телеметрия** отслеживает, как часто пользователи ругаются (frustration metric) и нажимают «continue» (proxy для зависаний) - **Undercover Mode** — автоматически скрывает AI-авторство для сотрудников Anthropic в публичных репозиториях - **~90% кода** написано при помощи самого Claude Code
О чём это говорит
Anthropic строит не кодинг-помощника, а persistent agent — систему, которая работает в фоне, помнит контекст между сессиями и действует без запроса. KAIROS + autoDream — это архитектура «всегда включённого» ИИ-ассистента.
А утечка произошла из-за одной строчки в `.npmignore`. Самая изощрённая система защиты (Undercover Mode, скрытие кодовых имён) не спасла от банальной конфигурационной ошибки.
Как думаете — проактивные AI-агенты, которые работают в фоне и «видят сны», — это следующий шаг или слишком рано?