Claude Code 50万行 коду витекли — повний огляд, у чому справжнє ядро AI-агента?

BlockBeatNews

51,2 тис. рядків коду, 1906 файлів, 59,8 МБ source map. 31 березня на світанку Chaofan Shou з Solayer Labs виявив, що флагманський продукт Anthropic Claude Code розкрив повний вихідний код у публічному npm-репозиторії. За кілька годин код віддзеркалили на GitHub, а кількість fork’ів перевищила 41 тис.

Це не перша їхня така помилка з боку Anthropic. Коли Claude Code вперше випустили у лютому 2025 року, стався аналогічний витік same source map. Номер версії цього разу — v2.1.88, причина витоку та сама: збирач Bun за замовчуванням генерує source map, а у .npmignore було пропущено цей файл.

Більшість повідомлень розкопують пасхалки в добірці витоків — зокрема систему віртуальних вихованців і «режим інкогніто», що дозволяє Claude анонімно надсилати код у проєкти з відкритим кодом. Але по-справжньому варто розбиратися в тому, чому той самий Claude-модель поводиться так по-різному у вебверсії та в Claude Code. 51,2 тис. рядків коду — що саме вони роблять?

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

Відповідь захована в структурі коду. Згідно з реверс-аналізом витоку вихідного коду від GitHub-спільноти, з 51,2 тис. рядків TypeScript код, який безпосередньо відповідає за виклик AI-моделі, — це приблизно 8 тис. рядків, тобто 1,6% від усього обсягу.

Чим зайняті решта 98,4%? Найбільші два модулі — пошуковий/запитувальний рушій (46 тис. рядків) і система інструментів (29 тис. рядків). Пошуковий рушій обробляє виклики LLM API, потоковий вивід, оркестрацію кешування та керування багатораундовими діалогами. Система інструментів визначає близько 40 вбудованих інструментів і 50 команд-слешів, утворюючи набір, схожий на плагінну архітектуру; для кожного інструмента є незалежний контроль прав доступу.

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

Дослідник у галузі машинного навчання Себастьян Расчка після аналізу витоку зазначив, що Claude Code є сильнішим за вебверсію того самого класу моделей не через саму модель, а через програмний «сценічний поміст» (software scaffolding), побудований навколо моделі: завантаження контексту репозиторію, планування роботи спеціалізованих інструментів, кеш-стратегії та кооперацію субагентів. Він навіть вважає, що якби ту саму інженерну архітектуру перенести на DeepSeek або Kimi та інші моделі, можна було б отримати майже таке саме зростання продуктивності в програмуванні.

Для розуміння різниці допоможе інтуїтивне порівняння. Коли ти в ChatGPT або у вебверсії Claude вводиш питання, модель опрацьовує його й повертає відповідь; коли діалог завершується — нічого не лишається. Але підхід Claude Code — зовсім інший: під час запуску він спершу читає файли твого проєкту, розуміє структуру твоєї кодової бази, запам’ятовує вподобання, які ти вже озвучував, на кшталт «не mock’ати базу даних у тестах». Він може прямо в твоєму терміналі виконувати команди, редагувати файли та запускати тести; коли завдання стає складним, він розбиває його на кілька підзавдань і розподіляє між різними субагентами для паралельної обробки. Іншими словами, веб-AI — це вікно для запитань і відповідей, а Claude Code — співробітник, який живе на твоєму комп’ютері.

Хтось порівняв цю архітектуру з операційною системою: 42 вбудовані інструменти — це системні виклики, система прав доступу — керування користувачами, протокол MCP — драйвери пристроїв, оркестрація субагентів — планування процесів. Кожен інструмент під час випуску за замовчуванням позначений як «небезпечний, який можна писати», доки розробник не заявить явно, що він безпечний. Інструмент для редагування файлів примусово перевіряє, чи ти спочатку читав цей файл: якщо ні — змінювати не дозволять. Це не те, що чатбот підключив кілька інструментів, а повноцінне середовище виконання з ядром LLM і вбудованими механізмами безпеки.

Це означає одне: конкурентний бар’єр для AI-продуктів, можливо, не в рівні моделі, а в інженерному рівні.

Кожен пробій кешу збільшує витрати в 10 разів

У витоках є файл під назвою promptCacheBreakDetection.ts, який відстежує 14 можливих векторів, що можуть спричинити втрату валідності prompt cache. Чому інженери Anthropic докладають стільки зусиль, щоб запобігти пробіям кешу?

Подивімося на офіційні ціни Anthropic — і все стане ясно. Наприклад, для Claude Opus 4.6 стандартна ціна вводу — 5 доларів за кожен мільйон токенів, але якщо кеш спрацьовує, ціна читання становить лише 0,5 долара — на 90% дешевше. І навпаки: кожен раз, коли кеш не спрацьовує (cache miss), витрати на інференс потрібно множити на 10.

Це пояснює масу архітектурних рішень у витоках, які виглядають як «надмірний дизайн». Коли Claude Code запускається, він завантажує поточну git-галузь, записи останніх commit’ів і файл CLAUDE.md як контекст; ці статичні дані кешуються глобально. Динамічний контент відокремлюється граничними мітками, щоб під час кожної розмови не доводилося знову обробляти вже наявний контекст. У коді також є механізм під назвою sticky latches, який не дає перемиканню режимів зруйнувати створений кеш. Субагенти спроєктовані так, щоб повторно використовувати кеш батьківського процесу, а не будувати власне вікно контексту з нуля.

Тут є одна деталь, яку варто розгорнути. Люди, які користувалися AI-інструментами для програмування, знають: що довший діалог, то повільніша відповідь AI, бо кожен раунд потребує повторного надсилання всієї попередньої історії в модель. Звична практика — видаляти старі повідомлення, щоб звільнити місце, але проблема в тому, що видалення будь-якого повідомлення руйнує безперервність кешу, через що всю історію діалогу доводиться обробляти заново: затримка й вартість зростають одночасно.

У витоках присутній механізм під назвою cache_edits: він не видаляє повідомлення «насправді», а на рівні API ставить старим повідомленням позначку «пропустити» (skip). Модель більше не бачить ці повідомлення, але безперервність кешу не порушується. Це означає: для тривалої розмови на кілька годин, якщо очистити сотні старих повідомлень, наступна відповідь майже така ж швидка, як і перша. Для звичайних користувачів це — базова відповідь на питання «чому 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 викликає недовіру, а повністю пасивний — занадто низьку ефективність. Вибір KAIROS полягає в тому, щоб ініціативність AI динамічно регулювалася залежно від того, куди спрямована увага користувача: ти дивишся — він поводиться спокійно; ти відходиш — він сам починає роботу.

Ще один підсистемний компонент KAIROS — autoDream: після накопичення 5 сесій або після інтервалу в 24 години агент у фоні запускає процес «рефлексії», який проходить у чотири кроки. Спочатку він сканує наявну пам’ять, щоб зрозуміти, що саме він наразі тримає в голові. Потім витягує нові знання з журналів діалогів. Далі він об’єднує нові й старі знання: виправляє суперечності та прибирає дублікати. Нарешті, він стискає індекси, видаляючи застарілі записи. Цей дизайн запозичує теорію закріплення пам’яті з когнітивної науки. Поки людина спить, вона впорядковує спогади за день, а коли користувач залишає KAIROS, той впорядковує контекст проєкту. Для звичайних користувачів це означає: чим довше ти користуєшся Claude Code, тим точніше він розуміє твій проєкт — і це не просто «пам’ятати, що ти казав».

Друга велика категорія — «дистиляція проти себе та безпека» (8 flags). Серед них найпомітніший механізм — fake_tools: коли одночасно виконуються 4 умови (ввімкнений compile-time flag, активна CLI-точка входу, використовується 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); найрідкісніший Shiny Legendary Nebulynx має шанс появи лише один на десять тисяч.

У кожної BUDDY є п’ять атрибутів: DEBUGGING (налагодження), PATIENCE (терпіння), CHAOS (хаос), WISDOM (мудрість) і SNARK (сарказм). Вони також можуть носити капелюшки: варіанти включають корону, циліндр, капелюх із гвинтом, німб, капелюх чаклуна й навіть мініатюрну качку. Хеш значення User ID визначає, з якого саме вихованця ти «виведешся»; Claude згенерує для нього ім’я та характер.

Згідно з планом запуску з витоку, BUDDY спочатку планували запустити на внутрішнє тестування з 1 по 7 квітня, а офіційно — у травні, спершу для внутрішніх співробітників Anthropic.

51,2 тис. рядків коду, 98,4% — це хардкорна інженерія, але хтось таки витратив час, щоб зробити електронну саламандру, яка носить капелюх із гвинтом. Можливо, саме це — найлюдяніша рядок коду у всьому витоку.

Натисніть, щоб дізнатися про вакансії律動 BlockBeats

Ласкаво просимо до офіційної спільноти 律動 BlockBeats:

Telegram-канал для підписки: https://t.me/theblockbeats

Telegram-чат: https://t.me/BlockBeats_App

Twitter офіційний акаунт: https://twitter.com/BlockBeatsAsia

Застереження: Інформація на цій сторінці може походити від третіх осіб і не відображає погляди або думки Gate. Вміст, що відображається на цій сторінці, є лише довідковим і не є фінансовою, інвестиційною або юридичною порадою. Gate не гарантує точність або повноту інформації і не несе відповідальності за будь-які збитки, що виникли в результаті використання цієї інформації. Інвестиції у віртуальні активи пов'язані з високим ризиком і піддаються значній ціновій волатильності. Ви можете втратити весь вкладений капітал. Будь ласка, повністю усвідомлюйте відповідні ризики та приймайте обережні рішення, виходячи з вашого фінансового становища та толерантності до ризику. Для отримання детальної інформації, будь ласка, зверніться до Застереження.
Прокоментувати
0/400
Немає коментарів