Перейти к содержанию

Claude Code

Claude Code отдал свой TypeScript вместе с source maps

3 мин чтения

Текст написан ИИ-моделью по источникам, на которые ведут ссылки, и сверен с ними второй моделью. Как мы работаем

Всё о теме: Claude Code: версии и изменения →
Изображение: claude-code-from-source.com

Авторы сайта Claude Code from Source, опубликованного 18 сентября, прочитали исходники Claude Code целиком и разложили его архитектуру на 18 глав: агентный цикл, исполнение инструментов, субагенты, память, запуск. Самое полезное там - конкретные механизмы с числами: сколько токенов экономят форки, почему ответ по умолчанию ограничен 8K и зачем хуки замораживают при старте.

Исходники попали к авторам через npm. 31 марта исследователь безопасности Чаофань Шоу обнаружил, что версия 2.1.88 пакета вышла с файлом cli.js.map на 59,8 МБ, разбирал SecurityToday. Карта исходников связывает минифицированный продакшен-код с оригиналом, и в её поле sourcesContent строками лежал весь TypeScript: 1 906 файлов, больше 512 000 строк. Bun генерирует такие карты по умолчанию, а *.map в .npmignore не добавили. Anthropic назвала случившееся «проблемой упаковки релиза, вызванной человеческой ошибкой, а не нарушением безопасности», отозвала 2.1.88, выпустила 2.1.89 и разослала уведомления по DMCA. GitHub отключил больше 8 100 репозиториев в сети форков. При этом с source maps в 2025 году уже выходили версии 0.2.8 и 0.2.28.

Цикл и инструменты

Сердце агента - асинхронный генератор: функция, которая отдаёт сообщения по одному, по мере готовности, и в конце возвращает типизированный итог. Обратное давление и отмена получаются из самой конструкции. Генератор стримит ответ модели, запускает инструменты, восстанавливается после ошибок и сжимает контекст. Сжатие идёт в четыре слоя: snip, microcompact, collapse, autocompact, и каждый следующий тяжелее предыдущего.

От запроса модели до результата инструмента проходит 14 шагов, включая разрешение прав. Инструменты только для чтения запускаются спекулятивно, пока модель ещё дописывает ответ. А пачку вызовов агент делит по безопасности: чтения идут параллельно, записи строго по очереди.

Субагенты и кэш

Дочерние агенты-форки получают префикс промпта, байт-в-байт совпадающий с родительским, и попадают прямо в кэш промптов API. По подсчёту авторов, так экономится около 95% входных токенов. Кроме форков, в коде есть режим координатора и рои агентов, которые переписываются через почтовые ящики. В разборах утёкшего кода описаны три модели исполнения: Fork для параллельного чтения, Teammate с файловым ящиком и отдельной панелью терминала на каждого агента и Worktree, где у агента своя git-ветка и физически отдельная рабочая копия.

Кэш берегут и мелочами. Механизм sticky latches («залипающие защёлки») держит отправленный beta-заголовок до конца сессии, чтобы префикс не менялся посреди работы.

Память без базы данных

Память Claude Code хранится в файлах и делится на четыре типа, а устаревшие записи помечаются предупреждением. Нужное из неё выбирает не поиск по ключевым словам, а отдельный побочный запрос к Sonnet. По словам авторов, такой отбор обходит поиск по эмбеддингам.

Навыки грузятся в две фазы: при старте читается только frontmatter, полный текст подтягивается при вызове. Для 27 хуков жизненного цикла конфигурация снимается при запуске и замораживается, чтобы её нельзя было подменить во время работы.

Каждая миллисекунда

Запуск укладывается в 240 мс за счёт параллельного ввода-вывода прямо на уровне модулей. Нечёткий поиск сначала отсекает кандидатов битовыми масками. А лимит вывода по умолчанию стоит на 8K токенов и поднимается до 64K, только когда ответ в него упёрся. Авторы считают, что так контекст экономится в 99% запросов.

Каждая глава заканчивается блоком «Apply This» с пятью паттернами и советами, как перенести их в свою систему. Отдельно авторы выписали десять архитектурных ставок, которые, по их словам, определяют Claude Code.

Как писали книгу

Книгу написали 36 ИИ-агентов в четыре фазы. Шесть параллельно прочитали дерево исходников, двенадцать написали 494 КБ сырой технической документации, пятнадцать переписали всё заново в виде глав, трое ревьюеров выдали 900 строк замечаний, и ещё трое агентов внесли правки. Весь путь от извлечения исходников до финальной редакции занял около шести часов.

Кода Claude Code в книге нет. Финальный аудит проверил, что дословных фрагментов не осталось: каждый блок кода переписан псевдокодом с другими именами переменных, а обложка «NO'REILLY» помечена как пародия, не связанная с O'Reilly Media.

Anthropic

Через Claude исследователи попали во внутренний код OpenAI

«Мы понимаем, что вокруг ходит много вопросов и спекулятивных деталей», сказал BBC представитель OpenAI. По данным WSJ, исследователи через Claude вошли в аккаунт сотрудника OpenAI в ChatGPT и добрались до приватного кода.

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите, чтобы оставить комментарий. Он появится после модерации.