Вебинар120 min3 апреля 2026 г.

Разбор исходников Claude Code: 512 000 строк утёкшего кода

Глубокий разбор утёкших исходников Claude Code: архитектура агентного цикла, контракты инструментов и батчинг, prompt caching, speculation engine, пайплайн разрешений, управление контекстом и проактивная система KAIROS.

Спикеры:Bayram Annakov

Ключевые темы

  • -Harness Engineering — модель + обвязка побеждает модель
  • -TAOR-цикл (Think-Act-Observe-Repeat) — 100 строк ядра, 512K строк harness
  • -Стриминг tool calls и параллельно-последовательный батчинг
  • -Prompt Caching и CacheSafeParams — скорость через кэш
  • -Cache-Safe Forks — архитектура /btw и AutoDream
  • -Speculation Engine — предвычисление до 20 шагов через Ghost Filesystem
  • -Permission Pipeline — 6 уровней проверки по модели швейцарского сыра
  • -Контекст-менеджмент — micro-compact, auto-compact, rewind
  • -KAIROS — проактивный агент с Heartbeat и каналами уведомлений
  • -Интегрированная vs модульная архитектура по Кристенсену

Содержание

Полный транскрипт

Раздел 1

# Разбор исходников Claude Code: 512 000 строк утёкшего кода

Введение: утечка исходников и концепция Harness

3 апреля 2026 года произошло событие, которое всколыхнуло всё AI-сообщество: исходный код Claude Code — флагманского агентного продукта Anthropic — утёк в открытый доступ. 512 тысяч строк кода. Как это случилось? Исследователь Chaofan Shou обнаружил забытый .map файл в npm-пакете Claude Code. Source map — это файл, который содержит маппинг между минифицированным и оригинальным кодом. Anthropic просто забыли его убрать перед публикацией. Chaofan нашёл и опубликовал всё за 23 минуты. Твит набрал 34.5 миллиона просмотров. За 24 часа появился clean-room rewrite с более чем 100 тысячами звёзд на GitHub.

Но самое интересное не в самой утечке, а в том, что она подтвердила. Центральный тезис, который я повторяю на каждом занятии: модель + harness побеждает модель в одиночку. Буквально за несколько дней до утечки, 30 марта 2026 года, вышла статья Стэнфорда — Meta-Harness paper — которая показала, что одна и та же модель с правильным harness тратит в 4 раза меньше токенов и при этом даёт лучшие результаты. Не другая модель. Та же самая. Просто в правильной обвязке.

Для объяснения этой идеи я люблю использовать метафору стула из пивоварни в Mountain View. Представьте: вы сидите на барном стуле. Если стул без спинки — сколько бы вы ни выпили, в какой-то момент вы упадёте назад. Спинка стула — это harness. Она не делает вас трезвее, не улучшает ваши способности. Она просто не даёт вам упасть. Модель — это человек на стуле. Harness — это спинка. Без неё даже самая мощная модель рано или поздно «падает».

Какие основные ошибки совершают агенты без harness? Их три:

  1. Дрейф от цели — по мере роста контекста модель постепенно забывает, зачем она начала работу, и уходит в сторону.
  2. Деструктивные действия без разрешения — модель может удалить файл, перезаписать данные, запустить опасную команду.
  3. Неспособность учиться на ошибках — модель повторяет одни и те же ошибки, потому что у неё нет механизма извлечения уроков.

Harness решает все три проблемы. И все 512 тысяч строк кода Claude Code — это, по сути, один большой harness вокруг API вызова к Claude.

Забавная деталь из исходников: в Claude Code есть Frustration Regex — регулярное выражение, которое детектирует фрустрацию пользователя. Слова вроде «wtf», «fuck», «this is broken» попадают под этот паттерн. Пока это используется только для аналитики — Anthropic отслеживают, когда пользователи злятся, чтобы улучшать продукт. Но работает regex только на английском языке. Разработчики из других стран уже отправляют pull request-ы для своих языков — чтобы и их фрустрация учитывалась.

Agentic Loop: цикл работы Claude Code

Сердце любого AI-агента — это цикл TAOR: Think-Act-Observe-Repeat. Модель получает контекст, думает, что нужно сделать, формирует инструкцию для вызова инструмента (tool call), клиент (Claude Code) выполняет этот вызов, результат возвращается модели — и цикл повторяется. Повторяется до тех пор, пока задача не выполнена или не закончился бюджет токенов.

Сам по себе этот цикл — примерно 100 строк кода. Простой while(true) с условиями выхода. Но вот здесь начинается магия harness: внутри этого цикла работают 9 переменных состояния. Они отслеживают, нужна ли компактификация контекста, произошла ли ошибка и нужен ли recovery, сколько токенов потрачено, на какой итерации мы находимся, какие инструменты уже вызывались. Именно эти переменные превращают игрушечный прототип в продакшн-систему.

Ключевой harness для скорости — это стриминг tool calls. Claude Code не ждёт, пока модель полностью сформирует ответ. Как только в потоке данных появляется полностью завершённый блок tool call — выполнение начинается немедленно, параллельно с тем, как модель продолжает генерировать остальной ответ.

Для объяснения этого я использую ресторанную аналогию. Представьте, что вы пришли в ресторан. Вы ещё выбираете десерт, а кухня уже готовит вашу закуску. Официант не ждёт, пока вы определитесь со всем заказом — он отправляет то, что уже готово. Точно так же Claude Code «отправляет на кухню» каждый tool call, как только он готов, не дожидаясь остальных.

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

Tool Contracts и батчинг операций

Большинство людей думают, что инструмент (tool) для AI-агента — это просто имя, JSON-схема параметров и функция выполнения. Но в Claude Code каждый инструмент имеет примерно 20 дополнительных атрибутов: деструктивный или нет, только для чтения, можно ли выполнять параллельно с другими, максимальный размер результата, требует ли подтверждения пользователя, к какой категории относится. И вот что важно: модель не видит эти атрибуты. Они существуют только для harness, который использует их при планировании, обеспечении безопасности и оптимизации UX.

Батчинг — одна из ключевых оптимизаций, построенная на этих атрибутах. Правило простое: операции чтения выполняются параллельно, операции записи — последовательно. Почему? Потому что параллельная запись в один и тот же файл — это классическая race condition. Если два инструмента одновременно пытаются изменить файл, результат непредсказуем. Читать же можно сколько угодно одновременно — данные не меняются.

Хорошая аналогия — это атрибуты сотрудника. У каждого сотрудника есть навыки, уровень доступа, специализация. Когда менеджер распределяет задачи, он учитывает не только «что сотрудник умеет делать», но и «можно ли ему доверить этот тип работы», «может ли он работать параллельно с другими». Harness делает то же самое с инструментами.

В коде Claude Code есть partitioner — компонент, который группирует tool calls в батчи. Он анализирует атрибуты каждого инструмента и решает, что можно выполнить одновременно. Но у него есть важное ограничение: он группирует только последовательные операции чтения.

Практический совет: когда просите Claude Code работать с несколькими файлами, формулируйте запрос так: «сначала изучи все файлы, потом внеси изменения». Это позволит partitioner-у собрать все операции чтения в один параллельный батч, а затем выполнить операции записи последовательно.

Prompt Caching и Cache-Safe Forks

Prompt caching — это самый критичный harness для скорости и стоимости. На каждом шаге агентного цикла Claude Code отправляет модели полный контекст: системный промпт (~27 тысяч токенов), список инструментов, историю сообщений. Без кэширования каждый такой запрос был бы медленным и дорогим. Ключевой принцип: константная часть промпта идёт первой, переменная — в конце.

В коде Claude Code есть структура CacheSafeParams — она определяет, какие части промпта должны быть побайтово идентичными для работы кэша: системный промпт, список инструментов, модель, сообщения контекста. Любое изменение в этих параметрах «ломает» кэш.

На этом механизме построена элегантная фича — «by the way» (BTW) запросы, или cache-safe forks. Когда вы задаёте побочный вопрос, Claude Code создаёт fork-агента с теми же CacheSafeParams. Один API-вызов, без инструментов, не прерывает основной поток. И этот вызов переиспользует кэш основного агента — поэтому обходится практически бесплатно.

Тот же механизм используется в AutoDream — фоновой консолидации памяти. AutoDream работает через fork, который переиспользует prompt cache родительского агента. Фоновый процесс перечитывает то, что агент узнал за сессию, и записывает ключевые факты в долговременную память.

Метафора из «Ста лет одиночества» Маркеса: жители Макондо заболели бессонницей и постепенно забывали всё. Сон нужен мозгу для консолидации результатов дня в долговременную память. AutoDream реализует этот же принцип: агент «засыпает» и переносит важное из оперативного контекста в постоянное хранилище.

Speculation Engine

Одна из самых впечатляющих систем в исходниках — Speculation Engine. Аналогия с Instagram: когда вы загружаете фото и начинаете выбирать фильтры — фото уже загружается на сервер в фоне. Claude Code делает то же самое: пока вы читаете текущий ответ, система предвычисляет до 20 шагов вашего следующего запроса.

Технически это работает через Ghost Filesystem — оверлейную файловую систему. Все предвычисленные изменения сохраняются во временной директории (.clot/speculation/). Если предсказание совпадает — файлы копируются из оверлея в основную систему через copyOverlayToMain. Если не совпало — оверлей удаляется. Реальные файлы остаются нетронутыми до подтверждения.

На данный момент Speculation Engine доступен только сотрудникам Anthropic — включается через USER_TYPE === 'ant'. Но архитектура полностью готова.

Связь с системой скиллов: если speculation engine часто угадывает для определённого паттерна, это кандидат для автоматического создания скилла. В будущем скиллы будут создаваться динамически через AutoDream + подтверждение speculation.

Аналогия с AlphaZero: предвычисление возможных путей, как в шахматах. Система заранее просчитывает, что произойдёт при каждом ходе. Когда пользователь выбирает путь — результат уже готов.

Permission Pipeline: многоуровневая система проверок

Безопасность в Claude Code построена как аэропорт. Чтобы попасть в самолёт, вы проходите несколько уровней проверки. Каждый уровень закрывает бреши предыдущего. Это модель швейцарского сыра: в каждом слое есть дырки, но слои расположены так, что дырки не совпадают.

6 уровней проверок, от дешёвых к дорогим:

  1. Статические правила — проверка read-only. Бесплатно, мгновенно.
  2. Атрибуты инструмента — 20 атрибутов из tool contract. Бесплатно.
  3. Глобальные правила конфигурации — политики из settings.
  4. Трансформации режима — plan/acceptEdits/dontAsk.
  5. AI Classifier — вызов к Haiku для классификации опасности.
  6. User Prompt — финальная блокировка на пользователе.

AI Classifier использует Haiku, а не Opus — осознанный выбор: классификация не требует глубоких рассуждений. Но Haiku может пропустить деструктивные операции. Поэтому нужна вся «сэндвич-система».

Реальный пример: через GitHub Issues была проведена prompt injection атака. Кто-то вставил инструкцию для AI-агента в текст issue. Когда агент читал issue — он выполнял эту инструкцию, что привело к утечке токенов. Нельзя полагаться только на промпты для безопасности.

Практический совет: настройте правила в .claude/settings.json с regex-паттернами. Например, разрешите все SELECT-запросы без подтверждений, но требуйте подтверждение для DELETE и DROP.

Контекст-менеджмент: три уровня управления

Управление контекстом организовано в три уровня по стоимости:

Tier 1 — бесплатные операции:

  • Micro-compact — замена результатов tool call на плейсхолдер
  • Budgeting — слишком большой MCP-ответ сохраняется в файл, а в контекст попадает ссылка
  • Snipping — удаление старого нерелевантного контента

Tier 2 — вызов API:

  • Auto-compact при ~93% заполненности контекста (AUTOCOMPACT_BUFFER_TOKENS = 13,000)
  • Ручная компактификация через /compact с инструкциями фокусировки

Tier 3 — тяжёлые операции:

  • AutoDream — фоновая консолидация памяти
  • Emergency recovery при переполнении
  • Rewind — откат на несколько шагов с разделением отката промптов и кода

CLAUDE.md пересылается на каждом шаге из-за recency bias — модель уделяет больше внимания началу и концу промпта. Критическая информация повторяется, чтобы модель не забывала структуру БД и правила проекта.

Memory retrieval = grep + LLM. Поиск по файлам памяти — сначала grep, потом уточнение моделью. Не векторная база данных, а файловый поиск.

Совет для /compact: давайте инструкции на чём фокусироваться. Если контекст раздут, но важна только последняя задача — скажите «focus on [задача]».

KAIROS: проактивный агент

Самая амбициозная система в исходниках — KAIROS. 254 упоминания в 71 файле. Распределённая по всей кодовой базе система, превращающая реактивного агента в проактивного.

Два прорыва из OpenClaw: проактивность (агент сам инициирует действия) и каналы коммуникации (Telegram, Discord, WhatsApp). KAIROS — реализация этих идей внутри Claude Code.

Heartbeat + Cron Scheduler: агент по расписанию проверяет состояние системы — новые PR, ошибки, breaking changes. Если состояние изменилось — агент сам решает предпринять действие, эмулируя пользовательский промпт.

Каналы для уведомлений — те же каналы Telegram и Discord используются для доставки проактивных сообщений. BriefTool / SendUserMessage реализует два режима: обычный (ответ на запрос) и проактивный (инициатива агента).

Buddy — персонализированный компаньон — возможно, подключится к KAIROS для визуализации проактивных действий. Сейчас генерируется случайно, но архитектура для персонализации заложена.

Dispatch в Claude Desktop — первые шаги реализации KAIROS. Система закрыта за feature('KAIROS') с dead code elimination во внешних билдах.

Рекомендации и выводы

Читайте промпты из исходников — для компактификации, side question, buddy, speculation. Попросите Claude Code извлечь интересные промпты для ваших задач.

CC Unpacked (ccunpacked.dev) — визуальный гид по архитектуре Claude Code. Позволяет пройтись по всем компонентам.

Stanford Meta-Harness paper — доказательство, что harness важнее модели. Одна и та же модель с harness работает в 4 раза эффективнее.

Теория Кристенсена: на заре технологии интегрированный подход (Apple) побеждает модульный (IBM + Microsoft). AI-агенты на ранней стадии — интегрированный подход (Claude + Claude Code) имеет преимущество.

Главный вывод: premature optimization is the root of all evil. Не все паттерны harness нужны каждому агенту. Если средняя длина сессии — 2 шага, не стройте 7-уровневую компактификацию. Адаптируйте harness к своим метрикам.

Канал: t.me/products_n_startups

Частые вопросы

Что такое harness engineering и почему это важнее выбора модели?+
Harness engineering — это проектирование инженерных обвязок вокруг модели, которые предотвращают типичные ошибки агентов: дрейф от цели, деструктивные действия и неспособность учиться. Стэнфордское исследование Meta-Harness (2026) показало, что та же модель с правильным harness тратит в 4 раза меньше токенов и даёт лучшие результаты. Claude Code — это 512 тысяч строк harness вокруг API вызова к Claude.
Как работает агентный цикл Claude Code?+
Цикл TAOR (Think-Act-Observe-Repeat): модель получает контекст, думает что делать, отправляет инструкции на вызов инструментов, Claude Code их выполняет, результат возвращается модели. Ядро — ~100 строк, но 9 переменных состояния отслеживают компакшн, ошибки, бюджет токенов и итерации. Ключевая оптимизация — стриминг tool calls: выполнение начинается до завершения полного ответа модели.
Что такое Speculation Engine в Claude Code?+
Speculation Engine предвычисляет до 20 шагов вашего следующего запроса, пока вы читаете текущий ответ. Изменения сохраняются в Ghost Filesystem — оверлейной директории .clot/speculation/. Если предсказание совпало — файлы копируются в основную систему. Если нет — оверлей удаляется. Пока доступен только сотрудникам Anthropic.
Как устроена система безопасности Permission Pipeline?+
6 уровней проверок от бесплатных к дорогим: статические правила (read-only), атрибуты инструмента, глобальные конфиг-правила, трансформации режима, AI Classifier на Haiku, и запрос к пользователю. Построена по модели швейцарского сыра — каждый слой закрывает дыры предыдущего.
Что такое KAIROS и как он связан с OpenClaw?+
KAIROS — проактивная система в Claude Code (254 упоминания в 71 файле), вдохновлённая OpenClaw. Через Heartbeat и Cron Scheduler агент по расписанию проверяет состояние системы и сам инициирует действия. Используются те же каналы связи (Telegram, Discord), что и для плагинов. Dispatch в Claude Desktop — первые шаги реализации KAIROS.
Как оптимизировать работу с Claude Code, зная его архитектуру?+
Три практических совета: (1) формулируйте «сначала изучи все файлы, потом вноси изменения» — это позволяет параллельно выполнить операции чтения, (2) не меняйте параметры модели посреди сессии — это сбрасывает prompt cache, (3) при /compact давайте инструкции на чём фокусироваться при сжатии контекста.

Хотите изучить AI глубже?

Посмотрите наши курсы по AI для продакт-менеджеров, фаундеров и разработчиков.

Смотреть курсы