How Claude Code is built
Data&AI Insights📖 Источник: newsletter.pragmaticengineer.com
Как устроен Claude Code: архитектура, процессы и философия разработки
Claude Code стал одним из самых быстрорастущих инструментов для разработчиков в 2024 году. С момента общего релиза в мае инструмент генерирует более 500 млн долларов годового регулярного дохода, а использование выросло более чем в 10 раз за три месяца. Автор статьи побеседовал с создателями Claude Code — инженерами Борисом Черным (автор оригинального прототипа) и Сидом Бидасарией (второй инженер проекта), а также продюсером Кэт У. Из интервью стало ясно, как работает «AI-first» команда разработки и какие уроки из этого могут извлечь другие инженерные организации.
1. История создания: от музыки к файловой системе
Идея Claude Code родилась из простого прототипа — инструмента, который с помощью Claude сообщал инженеру, какую музыку тот слушает на работе. Борис Черный присоединился к Anthropic в сентябре 2024 года и начал экспериментировать с публичным API компании. Первая версия была базовой: инструмент не умел читать файлы, использовать bash или выполнять инженерные задачи — он мог только взаимодействовать с компьютером. Борис подключил прототип к AppleScript, и тот мог сообщать о текущем треке и даже менять музыку по запросу пользователя.
После разговора с Кэт У, которая исследовала возможности использования компьютера AI-агентами, Борис решил расширить возможности прототипа. Он добавил инструменты для взаимодействия с файловой системой и выполнения команд: теперь агент мог читать и писать файлы, запускать команды в терминате. Это оказалось прорывом — Борис запустил прототип в своей кодовой базе и начал задавать вопросы о ней. Claude стал исследовать файловую систему, читая файлы и следуя по цепочкам импортов, пока не находил ответ. Этот момент Борис описывает как открытие «продуктового оверханга» — модель уже умела это делать, но продукт, раскрывающий эту способность, ещё не был создан.
Прототип стал настолько полезным, что Борис начал использовать его ежедневно, а затем поделился с коллегами. В ноябре 2024 года (через два месяца после первого прототипа) команда выпустила версию, готовую для внутреннего использования. В первый день около 20% инженерной команды начали использовать Claude Code, а к пятому дню — уже 50%. Тогда стало ясно, что продукт может стать успешным и за пределами компании.
Внутренние дебаты о публичном релизе были серьёзными: в Anthropic сомневались, стоит ли выпускать инструмент, который мог стать конкурентным преимуществом. Однако в компании пришли к выводу, что Anthropic — это прежде всего компания по безопасности моделей, и способ учиться о безопасности и возможностях модели — создавать инструменты, которые люди используют. Поскольку весь Anthropic «подсел» на Claude Code, релиз был неизбежен.
2. Технический стек и архитектура
Claude Code построен на современном стеке, специально подобранном для работы с языковой моделью. Основные технологии:
- TypeScript — основной язык разработки
- React с Ink — фреймворк для создания интерактивных UI-элементов в терминале
- Yoga — система компоновки от Meta, основанная на ограничениях, которая хорошо работает с терминалами разных размеров
- Bun — для сборки и упаковки, выбранный за скорость по сравнению с Webpack и Vite
- npm — для дистрибуции пакета
Ключевой принцип выбора стека — «on distribution». В AI-терминологии это означает, что модель уже хорошо знает технологию. TypeScript и React — два инструмента, с которыми Claude работает отлично. Если бы команда выбрала более экзотический стек, с которым модель не так хорошо знакома, это потребовало бы дополнительного обучения модели. Борис подчёркивает: «Мы хотели стек, которому не нужно обучать: тот, где Claude Code может писать себя сам». Около 90% кода Claude Code написано самой моделью.
Архитектура удивительно проста для инструмента с такими возможностями. Claude Code — это лёгкая оболочка поверх модели: она определяет UI, предоставляет хуки для модификации и инструменты для использования, а затем «уходит с дороги». Модель делает почти всю работу. Команда сознательно пишет как можно меньше бизнес-логики, стремясь дать пользователям «почувствовать модель как можно более сырой». Каждый новый релиз модели приводит к удалению части системного промпта — например, с выходом моделей 4.0 команда удалила около половины системного промпта.
Важное архитектурное решение — отсутствие виртуализации. Claude Code работает локально, выполняя команды и читая/записывая файлы напрямую. Команда выбрала простейший вариант: локальное выполнение баш-команд и работа с файловой системой. Самая сложная часть системы — это permissions system, которая запрашивает разрешение перед выполнением потенциально опасных действий. Пользователь может разрешить действие один раз, навсегда или отклонить. Система настроек многоуровневая: можно конфигурировать разрешения для проекта, пользователя или компании, а также делиться настройками с командой.
3. Скорость разработки: дни вместо недель
Команда Claude Code работает с необычайной скоростью для продукта такого уровня. При команде около десяти инженеров они выпускают 60–100 внутренних релизов в день — каждый раз, когда инженер вносит изменение, создаётся новый внутренний npm-пакет. Летом инженеры делали около 5 pull request в день — это намного быстрее, чем в большинстве технологических компаний, где нормой считается 1–2 PR в день. Внешний релиз выходит почти каждый день.
Удивительно, что команда создаёт гораздо больше прототипов, чем принято. Борис рассказал, как за несколько часов он построил около 20 прототипов функции списка задач (todo lists). Для каждого прототипа он писал короткий промпт, описывающий желаемое поведение, и смотрел результат. После каждого прототипа он либо корректировал результат, экспериментировал с ним, делился с коллегами для обратной связи или, если что-то не работало, создавал новый прототип с другим промптом.
Один из промптов: «сделай так, чтобы вместо отображения todo по мере поступления, скрывать использование инструмента и результат для todo, и рендерить фиксированный список задач над вводом. Назови его "/todo (1 из 3)" серым цветом». Другой: «показывай обновления todo inline, как жирные заголовки, когда модель начинает работать над задачей. Сохрани "шаг 2 из 4" и добавь middot /todo серым после». Третий: «добавь todo pill под текстовым вводом, похожий на bg tasks. Он должен рендерить "todos: 1 из 3" или что-то подобное».
Прототипы варьировались от простых списков над полем ввода до интерактивных «пилюль» внизу консоли, напоминающих фоновые задачи, и «выдвижных ящиков» с анимацией. На прототипе #7 команда попробовала показывать список задач справа от ввода с серым разделителем. На прототипе #8 добавили усечение до 5 элементов с «... и ещё 4». На прототипе #9 появился заголовок «Todo:» серым текстом. Около прототипа #20, после экспериментов с видимостью и спиннером, решение стало ощущаться правильным. В итоге пользователи попросили возможность видеть все задачи, и команда добавила возможность переключения списка через Ctrl+T — это то, что используется сегодня.
Такой подход стал возможен благодаря AI-агентам: прототипирование, которое раньше занимало дни на один вариант, теперь позволяет тестировать 5–10 прототипов за день. Это меняет саму парадигму разработки — теперь можно быстро сужать диапазон итераций до лучшего решения.
4. Инновации в UX терминала
Claude Code привносит в терминал множество функций, которые стали возможны только с появлением LLМ, управляющих взаимодействием. Терминал впервые стал по-настоящему интерактивным, и потребовалось переосмыслить пользовательский опыт.
Среди ключевых возможностей:
- Hooks — позволяют создавать пользовательские shell-команды для Claude Code
- MCP support — подключение к серверам Model Context Protocol для расширения возможностей
- Интеграция с GitHub и GitLab — использование GitHub Actions и CI/CD
- Стили вывода — можно переключаться между режимами: Explanatory (объясняет выбор реализации) и Learning (коллаборативный стиль, где Claude просит пользователя выполнять небольшие задачи самостоятельно — отличный способ для менее опытных инженеров учиться)
- Subagents — создание подчинённых агентов для специализированных задач
- Enterprise-функции — настройка IAM и аналитика использования по организации
- Claude Code SDK — для создания собственных AI-агентов на базе инфраструктуры Claude Code
Особенно интересна философия минимального UI. Команда стремится не загромождать интерфейс: «Мы хотим, чтобы пользователи чувствовали модель как можно более сырой. Во многих продуктах они становятся помехой для модели, добавляя каркас из UI-элементов, которые загромождают пространство. То, что должно помогать пользователям, в итоге ограничивает модель».
5. AI-first инженерная культура
В Anthropic сложилась уникальная инженерная культура, где AI-агенты используются повсеместно — для code review, тестирования, автоматизации реагирования на инциденты. Происходит возрождение TDD (test-driven development), поскольку AI-агенты могут быстро генерировать тесты. Компания осторожно использует feature flags, предпочитая быстрые итерации.
Сегодня более 80% инженеров Anthropic, которые пишут код, используют Claude Code ежедневно. Но инструмент популярен и за пределами инженерных ролей — Борис заметил, что data scientists используют его для написания запросов, создания визуализаций и других задач. Когда инженерная команда быстро удваивается, обычно метрика PR на инженера падает из-за времени на онбординг новых сотрудников. Однако в Anthropic увидели 67% рост PR throughput при удвоении размера команды — благодаря Claude Code. Метрика не только не упала, но и выросла.
Команда растёт: из двух человек (Борис и Сид, присоединившийся в ноябре) она увеличилась до примерно 10 инженеров к июлю и продолжает нанимать. Сейчас это полноценная продуктовая команда с инженерами, PM, дизайнерами и data science. При этом сохраняется свобода: «Мы делали прототипы очень быстро и создавали продукты, демонстрирующие силу базовой модели. Формальных процессов внутри команды не было — всё было супертекучим. Мы могли работать практически над чем угодно и просто выбирали самые перспективные идеи».
6. Создание subagents: три дня и переделка
Сид Бидасария, инженер #2 проекта, создал функцию subagents всего за три дня — и два из этих дней работы были в итоге выброшены. Subagents позволяют выделить специализированного агента для конкретной задачи, не отвлекая основной сеанс Claude Code.
Процесс был итеративным: первый день ушёл на понимание архитектуры и эксперименты, второй день — на реализацию, которая в итоге не сработала. Вместо того чтобы пытаться «спасти» неудачный подход, команда списала эти два дня и начала с чистого листа. На третий день был готов работающий прототип, который пошёл в релиз.
Этот пример показывает философию команды: скорость важнее перфекционизма. Если что-то не работает — проще начать заново, чем пытаться исправить. AI-агенты позволяют так быстро создавать прототипы, что стоимость переделки невысока.
7. Перспективы и ограничения модели
Уникальность подхода Anthropic заключается в сочетании нескольких факторов: это компания-разработчик модели, что даёт глубокое понимание её возможностей; команда работает с моделью «сырой», минимизируя прослойки; скорость итераций достигает десятков релизов в день благодаря AI-агентам.
Однако не всё переносимо. У Anthropic есть преимущество — они создают и модель, и продукт, и могут быстро адаптировать продукт под возможности новых версий модели. Для других компаний такой подход может быть сложнее воспроизвести. Тем не менее ключевые уроки применимы: использование AI-агентов для ускорения прототипирования, минимизация бизнес-логики вокруг модели, итеративный подход с быстрым отказом от неработающих гипотез.
Интересно, что Gartner в последнем отчёте об AI-ассистентах для программирования даже не упоминает Claude Code — показатель того, как быстро меняется рынок и как традиционные аналитические агентства отстают от реальности.
Заключение
Claude Code представляет собой пример того, как может выглядеть разработка в эпоху AI-first. Ключевые достижения команды — это не только финансовые показатели (500M+ дохода), но и фундаментальное изменение подхода к инженерии: прототипирование за часы вместо недель, 90% кода, написанного моделью, 67% рост продуктивности при удвоении команды.
Риски связаны с зависимостью от модели — если возможности модели не будут расти, продукт может достичь потолка. Перспективы — в дальнейшем распространении на не-инженерные роли (что уже происходит с data scientists) и в развитии subagents и enterprise-функций. Следующие шаги для инженерных команд — экспериментировать с AI-агентами для прототипирования, пересмотреть процессы с учётом новых возможностей и следить за тем, как Anthropic продолжает развивать продукт.
📢 Информация предоставлена телеграм-каналом: Data&AI Insights
🤖 Data&AI Insights - Ваш источник инсайтов о данных и ИИ