Что именно делает AI Agent? Полный разбор утечки 500 000 строк кода Claude Code

51.2 万 строк кода, 1906 файлов, 59.8 MB исходных map. В ночь на 31 марта Чаофань Шоу из Solayer Labs обнаружил, что флагманский продукт Anthropic Claude Code раскрывает полный исходный код в общедоступном npm-репозитории. В течение нескольких часов код отзеркалили в GitHub, а число fork превысило 41 тысячу.

Это не первая ошибка Anthropic в этом вопросе. Когда Claude Code впервые выпустили в феврале 2025 года, утечка того же source map уже происходила. Номер версии на этот раз — v2.1.88, причина утечки та же: сборщик Bun по умолчанию генерирует source map, а в .npmignore забыли добавить этот файл.

Большинство публикаций смакуют пасхальные яйца в перечне утечек — например, систему виртуальных питомцев, а также «режим внедрения», позволяющий Claude анонимно отправлять код в open-source проекты. Но по-настоящему разбирать стоит другое: почему тот же самый Claude-модель в веб-версии и в Claude Code ведёт себя настолько по-разному? Что вообще делает 512 тысяч строк кода?

Модель — лишь верхушка айсберга

Ответ спрятан в структуре кода. Согласно обратному анализу утекшего исходника со стороны GitHub-сообщества, среди 512 тысяч строк TypeScript код, напрямую отвечающий за вызовы AI-моделей, — всего около 8000 строк, то есть 1.6% от общего объёма.

Чем заняты оставшиеся 98.4%? Два крупнейших модуля — поисковый движок (46 тысяч строк) и инструментальная система (29 тысяч строк). Поисковый движок обрабатывает вызовы LLM API, потоковый вывод, оркестрацию кэша и управление многораундовыми диалогами. Инструментальная система определяет примерно 40 встроенных инструментов и 50 слэш-команд, образуя набор, похожий на плагин-архитектуру; у каждого инструмента есть отдельный контроль прав доступа.

Кроме того, есть 25 тысяч строк кода рендеринга терминального UI (один файл, print.ts, тянется до 5594 строк, а одна функция пересекает 3167 строк), 20 тысяч строк безопасности и контроля прав (включая 23 пункта нумерованных Bash-проверок безопасности и 18 скрытых встроенных команд Zsh) и 18 тысяч строк системы оркестрации мультиагентов.

Исследователь машинного обучения Себастиан Рашка после анализа утекшего кода отметил, что то, почему Claude Code сильнее веб-версии на той же модели, — не в самой модели, а в программных «лесах» вокруг неё: загрузка контекста репозитория, диспетчеризация специализированных инструментов, стратегии кэширования и сотрудничество субагентов. Он даже считает, что если обернуть ту же инженерную архитектуру в другие модели, вроде DeepSeek или Kimi, можно получить близкие улучшения в задачах программирования.

Наглядного сравнения достаточно, чтобы понять разницу. Если вы в ChatGPT или в веб-версии Claude вводите вопрос, модель обрабатывает его и возвращает ответ, а по завершении диалога ничего не остаётся. Но Claude Code делает всё иначе: при запуске он сначала читает файлы вашего проекта, понимает структуру вашего кодовой базы, запоминает предпочтения, которые вы уже высказывали — например, «не мокай базу данных в тестах». Он может выполнять команды прямо в вашем терминале, редактировать файлы, запускать тесты; когда задача становится сложной, он разбивает её на несколько подзадач и распределяет по разным субагентам параллельно. Иными словами, веб-AI — это окно для вопросов и ответов, а Claude Code — соавтор, живущий на вашем компьютере.

Кто-то сравнил эту архитектуру с операционной системой: 42 встроенных инструмента — это системные вызовы, система прав — управление пользователями, протокол MCP — драйверы устройств, оркестрация субагентов — диспетчеризация процессов. Каждый инструмент при поставке помечается по умолчанию как «небезопасный, допускающий запись», если только разработчик явно не заявит, что он безопасный. Инструмент для редактирования файлов принудительно проверяет, читали ли вы этот файл; если нет — менять нельзя. Это не «чат-бот с несколькими инструментами», а среда выполнения с ядром LLM и полноценными механизмами безопасности.

Это означает одну вещь: конкурентные барьеры AI-продуктов могут заключаться не в уровне моделей, а в уровне инженерии.

Каждый пробой кэша умножает стоимость в 10 раз

В утекшем коде есть файл promptCacheBreakDetection.ts, который отслеживает 14 типов векторов, способных привести к невалидности prompt cache. Почему инженерам Anthropic пришлось приложить столько усилий, чтобы предотвращать пробои кэша?

Посмотрите на официальные тарифы Anthropic — всё станет ясно. Например, для Claude Opus 4.6 стандартная цена ввода составляет 5 долларов за миллион токенов, но если срабатывает кэш, стоимость чтения — всего 0.5 доллара, то есть на 90% дешевле. И наоборот: каждый раз, когда кэш пробивается, стоимость рассуждений возрастает в 10 раз.

Это объясняет множество архитектурных решений, которые в утекшем коде выглядят как «чрезмерный дизайн». При запуске Claude Code загружает текущую git-ветку, записи последних commit’ов и файл CLAUDE.md как контекст; эти статические данные кэшируются глобально, а динамический контент отделяется метками границ, чтобы при каждой беседе не приходилось заново обрабатывать уже имеющийся контекст. В коде также есть механизм под названием sticky latches — он предотвращает переключение режимов, которое могло бы разрушить уже установленный кэш. Субагенты спроектированы так, чтобы повторно использовать кэш родительского процесса, а не заново строить своё собственное окно контекста.

Есть один детальный момент, который стоит раскрыть. Пользователи AI-инструментов для программирования знают: чем длиннее диалог, тем медленнее ответ, потому что на каждом раунде нужно заново отправлять в модель всю предыдущую историю. Обычный подход — удалять старые сообщения, чтобы освобождать место, но проблема в том, что удаление любой записи ломает непрерывность кэша, из-за чего всю историю диалога приходится обрабатывать заново; задержка и расходы растут одновременно.

В утекшем коде существует механизм cache_edits: сообщения не удаляются по-настоящему, вместо этого на уровне API старым сообщениям проставляется метка «пропустить». Модель эти сообщения больше не видит, но непрерывность кэша не нарушается. Это означает: для длительного диалога, длящегося несколько часов, после очистки сотен старых сообщений скорость ответа в следующем раунде почти такая же, как и в первом. Для обычных пользователей это и есть базовый ответ на вопрос «почему Claude Code может поддерживать бесконечно длинные диалоги и не замедляется».

Согласно утечке внутренних мониторинговых данных (из комментария кода в autoCompact.ts с пометкой даты 10 марта 2026), до внедрения верхнего предела для автоматического сжатия Claude Code ежедневно тратил примерно 250 тысяч вызовов API впустую. У 1279 пользовательских session было более 50 последовательных неудач сжатия; самый проблемный session подряд падал 3272 раза. Исправление было простым — добавить одну строку ограничения: MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3.

Так что для AI-продуктов самой дорогой частью могут быть не расходы на вывод модели, а сбои управления кэшем.

44 переключателя — в одном и том же направлении

В утекшем коде спрятаны 44 feature flags — уже скомпилированные переключатели функций, просто их не опубликовали наружу. По анализу сообщества, эти flags разбиты на пять категорий по функциональным доменам; самая плотная — категория «автономных агентов» (12 штук), указывающая на систему с названием KAIROS.

KAIROS в исходниках упоминается более 150 раз — это режим постоянно работающего фонового демона. Claude Code больше не просто инструмент, который отвечает только когда вы вызываете его вручную, — это агент, который всё время работает в фоне: он непрерывно наблюдает, фиксирует и при подходящих моментах сам предпринимает действия. Условие — не мешать пользователю: любые операции, которые могут блокировать пользователя дольше 15 секунд, выполняются с задержкой.

KAIROS также встроил восприятие фокуса терминала. В коде есть поле terminalFocus, которое в реальном времени определяет, смотрит ли пользователь на окно терминала. Когда вы переключаетесь в браузер или другое приложение, агент считает, что «вы не на месте», и переходит в автономный режим: сам выполняет задачи, сразу отправляет код, не дожидаясь вашего подтверждения. Когда вы возвращаетесь в терминал, агент мгновенно переходит в режим сотрудничества: сначала сообщает, что сделал, а затем спрашивает вашего мнения. Степень автономности не фиксирована — она меняется вслед за вашим вниманием в реальном времени. Это решает давнюю неловкость AI-инструментов: полностью автономный AI вызывает недоверие, а полностью пассивный AI работает слишком неэффективно. Выбор KAIROS — динамически регулировать инициативность AI по тому, куда направлено внимание пользователя: вы смотрите — он ведёт себя спокойно, вы уходите — он сам начинает работать.

Другой подсистемой KAIROS называется autoDream: после накопления 5 сессий или по прошествии 24 часов агент запускает в фоне процесс «рефлексии», который проходит четыре шага. Сначала он сканирует уже имеющуюся память, чтобы понять, что именно он сейчас знает. Затем извлекает новые знания из логов диалога. Потом он объединяет новое и старое знание, исправляет противоречия и убирает повторы. Наконец, он упрощает индекс: удаляет устаревшие записи. Эта конструкция заимствует теорию консолидации памяти из когнитивной науки. Когда человек спит, он упорядочивает дневные воспоминания — KAIROS, когда пользователь уходит, упорядочивает контекст проекта. Для обычных пользователей это означает: чем дольше вы используете Claude Code, тем точнее он понимает ваш проект, а не только «помнит, что вы говорили».

Вторая категория — «анти-дистилляция и безопасность» (8 flags). Самое примечательное здесь — механизм fake_tools: когда одновременно выполняются четыре условия (включён compile-time flag, активирован CLI entrypoint, используется first-party API, а GrowthBook remote switch выставлен в true), Claude Code внедряет в API-запрос фальшивые определения инструментов. Цель — загрязнить датасеты, которые, возможно, используют для записи API-трафика и последующего обучения конкурирующих моделей. Это совершенно новая форма защиты в гонке AI-вооружений: это не блокировка того, чтобы вы копировали, а чтобы вы копировали неверные вещи.

Также в коде встречается кодовое имя модели Capybara (разделённое на три уровня: стандартная версия, fast-версия и версия с миллионом контекстных окон). По широкому предположению сообщества, это внутреннее кодовое имя серии Claude 5.

Пасхалка: в 512 тысячах строк кода спрятан электронный питомец

Помимо строгих инженерных архитектур и механизмов безопасности, инженеры Anthropic тайно собрали целую виртуальную систему питомцев — под внутренним кодовым названием BUDDY.

Согласно утекшему коду и анализу сообщества, BUDDY — это псевдо-материальный питомец терминала: он появляется вблизи поля ввода в виде ASCII-бабл-бокса. У него 18 видов (включая водосвинку, саламандру-амфибию, гриб, призрака, дракона и целую линейку оригинальных существ, таких как Pebblecrab, Dustbunny, Mossfrog), которые по редкости делятся на пять уровней: обычный (60%), редкий (25%), нечастый (10%), эпический (4%) и легендарный (1%). У каждого вида есть «блестящая разновидность»; самая редкая Shiny Legendary Nebulynx появляется с вероятностью всего одна на десять тысяч.

У каждой BUDDY пять характеристик: DEBUGGING (отладка), PATIENCE (терпение), CHAOS (хаос), WISDOM (мудрость) и SNARK (ядовитость). Они ещё умеют носить шляпы: варианты включают корону, цилиндр, шляпу с пропеллером, ореол, ведьмачью шляпу и даже миниатюрную уточку. Хеш значения пользовательского ID определяет, какого именно питомца вы выведете; Claude генерирует для него имя и характер.

Судя по плану запуска, BUDDY изначально должны были запустить в закрытое бета-тестирование с 1 по 7 апреля, а официально — в мае, сначала для внутренних сотрудников Anthropic.

512 тысяч строк кода, 98.4% — это хардкорная инженерия, но в конце кто-то потратил время на электронную саламандру, которая будет носить шляпу с пропеллером. Возможно, именно эта строка кода и есть самая человечная в утечке.

Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • комментарий
  • Репост
  • Поделиться
комментарий
Добавить комментарий
Добавить комментарий
Нет комментариев
  • Закрепить