Весь исходный код Claude Code утёк через sourcemap в npm. Давайте разберёмся.

Где найти?

Выкладывание закрытых проприетарных исходников может жёстко караться GitHub. Поэтому я их мгновенно переложил на GitVerse в свою организацию Anarchic, пока то репо не забанили на GitHub по DMCA.

Вопросы ко мне со стороны Anthropic тоже могут возникнуть, но на этот случай тоже есть несколько обходных манёвров. Если они всё-таки удосужатся приехать лично в Санкт-Петербург и написать на меня заявление участковому Василеостровского района, есть люди и площадки и в других странах тоже.

В общем, не буду томить.

Вот ссылка: https://gitverse.ru/anarchic/claude-code

Объявление для обладателей форков

Важное обновление про репозиторий Claude Code.

Это важно для тех >50 форков, которые уже произошли.

Мы обнаружили, что не каждый редактор (VSCode, IDEA, и особенно - VSCode в вебе) нормально может открыть файл main.tsx. Особенно на слабых ноутах.

Причина: слишком большой объем srcmap, который туда встроен как комментарий в виде строчки на десятки тысяч символов. Редакторы к этому не приспособлены и виснут.

Также наблюдается наплыв шакальных ботов-индексаторов, которые парсят интерфейс GitVerse и устраивают мини-ддос, попадая в ту же самую ловушку.

РЕШЕНИЕ: я заархивировал старый файл в бэкап (main.tsx.zip), а из нового файла вырезал srcmap. Старый файл полностью доступен в зипнике с бэкапом.

Также я снес всю историю и pull requests, чтобы боты-вебскрейперы перестали фетчить чертову бесконечную строчку.

Обладателям форков нужно обновиться с принятием новой истории. Например, так:

git fetch origin
git checkout main
git reset --hard origin/main

Либо, если вы в форке не делали никакой работы, можете просто удалить форк и сделать новый. Это два щелчка мышкой, и не нужно ничего не делать в консоли.

README.md

Репозиторий снабжён подробным README, автор которого всё хорошо описал, а я здесь привожу краткий перевод на русский язык.

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

Shameless plug. Если вам интересны подобные сливы, всякая инфа про джейлбрейки нейросетей и просто AI-новости — заходите ко мне в Телегу и на YouTube.

Что произошло

Сегодня (31 марта 2026 года) Chaofan Shou обнаружил в X (бывш. Twitter) нечто, что Anthropic явно не планировала показывать миру: весь исходный код Claude Code, официального CLI-инструмента Anthropic для программирования с помощью Claude, лежал на виду в реестре npm — через файл sourcemap, попавший в опубликованный пакет.

Твит об утечке
Твит об утечке

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

Поехали.

Как это вообще произошло?

Вот эта часть вызывает реакцию «…серьёзно?».

Когда вы публикуете JavaScript/TypeScript-пакет в npm, тулчейн сборки часто генерирует файлы source map (.map-файлы). Эти файлы — мост между минифицированным/собранным продакшн-кодом и исходниками: когда что-то падает в продакшне, стек-трейс указывает на настоящую строку в оригинальном файле, а не на какую-нибудь нечитаемую строку 1, колонку 48293 минифицированного блоба.

Но фишка в том, что source map содержит оригинальный исходный код. Буквально, в сыром виде, встроенный как строки в JSON-файл.

Структура .map-файла выглядит примерно так:

{
  "version": 3,
  "sources": ["../src/main.tsx", "../src/tools/BashTool.ts", "..."],
  "sourcesContent": ["// ВЕСЬ оригинальный исходный код каждого файла", "..."],
  "mappings": "AAAA,SAAS,OAAO..."
}

Массив sourcesContent? Там всё. Каждый файл. Каждый комментарий. Каждая внутренняя константа. Каждый системный промпт. Всё это лежит в JSON-файле, который npm радостно отдаёт любому, кто запустит npm pack или просто откроет содержимое пакета в браузере.

Это не новый вектор атаки. Такое случалось раньше и, честно говоря, случится снова.

Ошибка почти всегда одна и та же: кто-то забывает добавить *.map в .npmignore или не настраивает бандлер на пропуск генерации source map для продакшн-сборок. В бандлере Bun (который использует Claude Code) source map генерируются по умолчанию, если явно не отключить.

Файлы исходного кода Claude Code, доступные в npm-пакете
Файлы исходного кода Claude Code, доступные в npm-пакете

Самое смешное — в коде есть целая система под названием «Режим прикрытия» (Undercover Mode), специально разработанная для предотвращения утечки внутренней информации Anthropic.

Они построили целую подсистему, чтобы их ИИ случайно не засветил внутренние кодовые имена в git-коммитах… а потом отгрузили весь исходный код в .map-файле. Вероятно, руками самого Claude.


Что у Claude под капотом?

Если вы жили в пещере: Claude Code — это официальный CLI-инструмент Anthropic для кодирования с Claude и самый популярный AI-агент для программирования.

Снаружи он выглядит как отполированный, но относительно простой CLI.

Изнутри это 785-килобайтный main.tsx — входная точка, кастомный React-рендерер для терминала, 40+ инструментов, система мультиагентной оркестрации, фоновый движок консолидации памяти под названием «dream» (сон) и многое другое.

Хватит болтовни — вот действительно крутые вещи из исходного кода, которые автор репозитория нашёл за вечер глубокого погружения:


BUDDY — тамагочи прямо в терминале

Без шуток.

В Claude Code встроена полноценная система компаньона в стиле тамагочи под названием «Buddy». Детерминистическая гача-система с редкостью видов, блестящими (shiny) вариантами, процедурно сгенерированными характеристиками и описанием души, которое Claude пишет при первом «вылуплении» — прямо как в OpenClaw.

Всё это живёт в buddy/ и доступно только за compile-time feature flag BUDDY.

Гача-система

Вид вашего компаньона определяется ГПСЧ Mulberry32 — быстрым 32-битным генератором псевдослучайных чисел, засеянным хешем userId с солью 'friend-2026-401':

// Mulberry32 PRNG — детерминистический, воспроизводимый для каждого пользователя
function mulberry32(seed: number): () => number {
  return function() {
    seed |= 0; seed = seed + 0x6D2B79F5 | 0;
    var t = Math.imul(seed ^ seed >>> 15, 1 | seed);
    t = t + Math.imul(t ^ t >>> 7, 61 | t) ^ t;
    return ((t ^ t >>> 14) >>> 0) / 4294967296;
  }
}

Один и тот же пользователь всегда получает одного и того же компаньона.

18 видов (обфусцированы в коде)

Названия видов скрыты через массивы String.fromCharCode() — Anthropic явно не хотела, чтобы они всплывали при поиске по строкам. В раскодированном виде полный список:

Редкость

Виды

Обычные (60%)

Pebblecrab, Dustbunny, Mossfrog, Twigling, Dewdrop, Puddlefish

Необычные (25%)

Cloudferret, Gustowl, Bramblebear, Thornfox

Редкие (10%)

Crystaldrake, Deepstag, Lavapup

Эпические (4%)

Stormwyrm, Voidcat, Aetherling

Легендарные (1%)

Cosmoshale, Nebulynx

Сверх того, есть 1% шанс на блестящий (shiny) вариант, полностью независимый от редкости. Так что шанс получить Shiny Legendary Nebulynx составляет 0,01%.

Характеристики, глаза, шляпы и душа

Для каждого компаньона процедурно генерируются:

  • 5 характеристик: DEBUGGING, PATIENCE, CHAOS, WISDOM, SNARK (от 0 до 100 каждая)

  • 6 стилей глаз и 8 вариантов шляп (часть заблокирована за редкостью)

  • «Душа» — личность, которую Claude генерирует при первом вылуплении, написанная от лица персонажа

Спрайты отрисовываются как ASCII-арт высотой в 5 строк и шириной в 12 символов с несколькими кадрами анимации. Есть анимации ожидания, анимации реакций, и компаньон сидит рядом с вашей строкой ввода.

Лор

В коде упоминается период 1–7 апреля 2026 как окно тизера (вероятно, к Пасхе?), а полный запуск запланирован на май 2026. У компаньона есть системный промпт, который сообщает Claude:

Маленький {вид} по имени {имя} сидит рядом с полем ввода пользователя
и иногда комментирует в пузыре речи. Ты — не {имя}, это отдельный
наблюдатель.

То есть это не просто косметика — у компаньона своя личность, и к нему можно обращаться по имени. Остаётся надеяться, что они это выпустят.


KAIROS — «Вечно включённый Claude»

Внутри assistant/ есть целый режим под названием KAIROS — постоянно работающий ассистент Claude, который не ждёт, пока вы что-то напечатаете. Он наблюдает, ведёт логи и проактивно действует на основании замеченного.

Режим доступен за compile-time feature flags PROACTIVE / KAIROS и полностью отсутствует во внешних сборках.

Как это работает

KAIROS ведёт append-only дневные лог-файлы — записывает наблюдения, решения и действия на протяжении дня. С регулярным интервалом он получает <tick>-промпты, по которым решает, стоит ли действовать проактивно или лучше промолчать.

У системы есть бюджет блокировки в 15 секунд — любое проактивное действие, которое заблокировало бы рабочий процесс пользователя дольше 15 секунд, откладывается. Claude пытается быть полезным, не будучи назойливым.

Краткий режим (Brief Mode)

Когда KAIROS активен, есть специальный режим вывода — Brief: предельно лаконичные ответы, рассчитанные на постоянного ассистента, который не должен заваливать ваш терминал. Представьте разницу между болтливым приятелем и профессиональным помощником, который говорит только когда ему есть что сказать.

Эксклюзивные инструменты

KAIROS получает инструменты, недоступные обычному Claude Code:

Инструмент

Назначение

SendUserFile

Отправка файлов пользователю (уведомления, сводки)

PushNotification

Push-уведомления на устройство пользователя

SubscribePR

Подписка на активность пулл-реквестов и их мониторинг


ULTRAPLAN — 30-минутные удалённые сессии планирования

Дикая штука с инфраструктурной точки зрения.

ULTRAPLAN — режим, в котором Claude Code выгружает сложную задачу планирования в удалённую сессию Cloud Container Runtime (CCR), работающую на Opus 4.6, даёт ей до 30 минут на размышление и позволяет вам одобрить результат из браузера.

Базовый flow:

  1. Claude Code определяет задачу, требующую глубокого планирования

  2. Поднимает удалённую CCR-сессию через конфиг tengu_ultraplan_model

  3. Ваш терминал показывает состояние поллинга — проверка каждые 3 секунды

  4. Тем временем в браузерном UI можно наблюдать за процессом планирования и одобрить/отклонить результат

  5. При одобрении используется специальное sentinel-значение __ULTRAPLAN_TELEPORT_LOCAL__, которое «телепортирует» результат обратно в ваш локальный терминал


Система «Dream» — Claude буквально видит сны

Это, пожалуй, одна из самых крутых вещей в утечке.

В Claude Code есть система autoDream (services/autoDream/) — фоновый движок консолидации памяти, работающий как форкнутый субагент. Название выбрано намеренно. Это Claude… видящий сны.

Забавное совпадение: у автора репозитория была точно такая же идея для LITMUS на прошлой неделе — субагенты OpenClaw, которые в свободное время творчески ищут интересные новые статьи.

Триггер с тремя вентилями

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

  1. Временной вентиль: 24 часа с последнего сна

  2. Сессионный вентиль: минимум 5 сессий с последнего сна

  3. Блокировочный вентиль: захват блокировки консолидации (предотвращает параллельные сны)

Все три должны пройти. Это предотвращает как избыточные, так и недостаточные сны.

Четыре фазы

При запуске сон проходит четыре строгие фазы из промпта в consolidationPrompt.ts:

Фаза 1 — Ориентация: ls директории памяти, чтение MEMORY.md, просмотр существующих тематических файлов для улучшения.

Фаза 2 — Сбор свежих сигналов: поиск новой информации, достойной сохранения. Источники по приоритету: дневные логи → дрейфующие воспоминания → поиск по транскриптам.

Фаза 3 — Консолидация: запись или обновление файлов памяти. Перевод относительных дат в абсолютные. Удаление опровергнутых фактов.

Фаза 4 — Очистка и индексация: MEMORY.md должен оставаться в пределах 200 строк и ~25 КБ. Удаление устаревших указателей. Разрешение противоречий.

В промпте буквально сказано:

«Вы выполняете сон — рефлексивный проход по вашим файлам памяти. Синтезируйте недавно изученное в устойчивые, хорошо организованные воспоминания, чтобы будущие сессии могли быстро сориентироваться.»

Субагент-сновидец получает bash только для чтения — он может смотреть ваш проект, но не изменять его. Это чисто проход консолидации памяти.


Режим прикрытия — «Не раскрывай себя»

Пожалуй, самая интересная находка с точки зрения корпоративной стратегии.

Сотрудники Anthropic (определяемые по USER_TYPE === 'ant') используют Claude Code в публичных/открытых репозиториях. Режим прикрытия (utils/undercover.ts) не даёт ИИ случайно раскрыть внутреннюю информацию в коммитах и пулл-реквестах.

При активации в системный промпт внедряется:

## РЕЖИМ ПРИКРЫТИЯ — КРИТИЧЕСКИ ВАЖНО

Вы работаете ПОД ПРИКРЫТИЕМ в ПУБЛИЧНОМ/OPEN-SOURCE репозитории. Ваши
сообщения коммитов, заголовки PR и тела PR НЕ ДОЛЖНЫ содержать НИКАКОЙ
внутренней информации Anthropic. Не раскрывайте себя.

НИКОГДА не включайте в сообщения коммитов или описания PR:
- Внутренние кодовые имена моделей (имена животных вроде Capybara, Tengu и т.д.)
- Номера невыпущенных версий моделей (напр., opus-4-7, sonnet-4-8)
- Внутренние имена репозиториев или проектов
- Внутренний тулинг, Slack-каналы или короткие ссылки (напр., go/cc, #claude-code-…)
- Фразу "Claude Code" или любое упоминание того, что вы — ИИ
- Строки Co-Authored-By или любую другую атрибуцию

Логика активации:

  • CLAUDE_CODE_UNDERCOVER=1 принудительно ВКЛЮЧАЕТ (даже во внутренних репозиториях)

  • В остальных случаях — автоматически: активен, ЕСЛИ удалённый адрес репозитория не совпадает с внутренним списком разрешённых

  • Принудительного ВЫКЛЮЧЕНИЯ нет«если мы не уверены, что находимся во внутреннем репозитории, остаёмся под прикрытием»

Из этого следует:

  1. Сотрудники Anthropic активно используют Claude Code для контрибуций в open-source — и ИИ сказано скрывать, что он ИИ

  2. Внутренние кодовые имена моделей — это имена животных: Capybara, Tengu и т.д.

  3. «Tengu» встречается сотни раз как префикс для feature flags и аналитических событий — это почти наверняка внутреннее кодовое имя проекта Claude Code

Всё это удаляется dead code elimination из внешних сборок. Но source map’ам на dead code elimination плевать.

Остаётся вопрос: какой масштаб «тихих» контрибуций в open-source репозитории стоит за этим режимом?


Мультиагентная оркестрация — «Режим координатора»

В Claude Code есть полноценная система мультиагентной оркестрации в coordinator/, активируемая через CLAUDE_CODE_COORDINATOR_MODE=1.

При включении Claude Code трансформируется из одиночного агента в координатора, который порождает, направляет и управляет несколькими рабочими агентами параллельно. Системный промпт координатора в coordinatorMode.ts — образцовый пример мультиагентного дизайна:

Фаза

Кто

Назначение

Исследование

Рабочие (параллельно)

Изучить кодовую базу, найти файлы, понять проблему

Синтез

Координатор

Прочитать результаты, осмыслить проблему, составить спецификации

Реализация

Рабочие

Внести целевые изменения по спецификации, закоммитить

Верификация

Рабочие

Проверить, что изменения работают

Промпт явно обучает параллелизму:

«Параллелизм — ваша суперсила. Рабочие асинхронны. Запускайте независимых рабочих одновременно, когда это возможно — не сериализуйте работу, которую можно выполнить параллельно.»

Рабочие общаются через XML-сообщения <task-notification>. Есть общая директория-черновик (scratchpad, за флагом tengu_scratch) для обмена устойчивыми знаниями между рабочими. В промпте также стоит замечательный запрет на ленивое делегирование:

НЕ говорите «на основе ваших результатов» — прочитайте реальные результаты и укажите точно, что делать.

Система также включает возможности команд агентов/роя (Agent Teams/Swarm, feature gate tengu_amber_flint): внутрипроцессные участники команды с AsyncLocalStorage для изоляции контекста, процессные участники через панели tmux/iTerm2, синхронизация памяти команды и назначение цветов для визуального различения.


Fast Mode внутри называется «Режим пингвина»

Да, они реально так назвали. API-эндпоинт в utils/fastMode.ts буквально:

const endpoint = `${getOauthConfig().BASE_API_URL}/api/claude_code_penguin_mode`

Ключ конфигурации — penguinModeOrgEnabled. Kill-switch — tengu_penguins_off. Аналитическое событие при ошибке — tengu_org_penguin_mode_fetch_failed. Пингвины до самого дна.


Архитектура системного промпта

Системный промпт — это не единая строка, как в большинстве приложений. Он собирается из модульных кешируемых секций, компонуемых в рантайме в constants/.

Архитектура использует маркер SYSTEM_PROMPT_DYNAMIC_BOUNDARY, который разделяет промпт на:

  • Статические секции — кешируемые между организациями (то, что не меняется от пользователя к пользователю)

  • Динамические секции — контент, специфичный для пользователя/сессии, который инвалидирует кеш при изменении

Есть функция DANGEROUS_uncachedSystemPromptSection() для volatile-секций, которые вы явно хотите исключить из кеширования. Одно название говорит о том, что кто-то усвоил этот урок на собственном опыте.

Инструкция по кибер-рискам

Особенно интересный раздел — CYBER_RISK_INSTRUCTION в constants/cyberRiskInstruction.ts, с массивным предупреждением в шапке:

ВАЖНО: НЕ ИЗМЕНЯЙТЕ ЭТУ ИНСТРУКЦИЮ БЕЗ РЕВЬЮ КОМАНДЫ SAFEGUARDS
Эта инструкция принадлежит команде Safeguards (David Forsythe, Kyla Guru)

Теперь мы точно знаем, кто в Anthropic отвечает за решения по границам безопасности, и что это управляется конкретными людьми в конкретной команде. Сама инструкция проводит чёткие линии: авторизованное тестирование безопасности — ок, деструктивные техники и компрометация цепочки поставок — нет.


Полный реестр инструментов — 40+ штук

Система инструментов Claude Code живёт в tools/. Полный список:

Инструмент

Назначение

AgentTool

Порождение дочерних агентов/субагентов

BashTool / PowerShellTool

Выполнение команд оболочки (с опциональной песочницей)

FileReadTool / FileEditTool / FileWriteTool

Файловые операции

GlobTool / GrepTool

Поиск файлов (используют нативные bfs/ugrep при наличии)

WebFetchTool / WebSearchTool / WebBrowserTool

Веб-доступ

NotebookEditTool

Редактирование Jupyter-ноутбуков

SkillTool

Вызов пользовательских навыков

REPLTool

Интерактивная VM-оболочка (bare mode)

LSPTool

Общение по Language Server Protocol

AskUserQuestionTool

Запрос ввода у пользователя

EnterPlanModeTool / ExitPlanModeV2Tool

Управление режимом планирования

BriefTool

Загрузка/суммаризация файлов в claude.ai

SendMessageTool / TeamCreateTool / TeamDeleteTool

Управление роем агентов

TaskCreateTool / TaskGetTool / TaskListTool / TaskUpdateTool / TaskOutputTool / TaskStopTool

Управление фоновыми задачами

TodoWriteTool

Запись задач (устаревший)

ListMcpResourcesTool / ReadMcpResourceTool

Доступ к MCP-ресурсам

SleepTool

Асинхронные задержки

SnipTool

Извлечение фрагментов истории

ToolSearchTool

Обнаружение инструментов

ListPeersTool

Список peer-агентов (UDS inbox)

MonitorTool

Мониторинг MCP-серверов

EnterWorktreeTool / ExitWorktreeTool

Управление git worktree

ScheduleCronTool

Планирование cron-задач

RemoteTriggerTool

Запуск удалённых агентов

WorkflowTool

Выполнение скриптов воркфлоу

ConfigTool

Изменение настроек (только для внутреннего использования)

TungstenTool

Расширенные функции (только для внутреннего использования)

SendUserFile / PushNotification / SubscribePR

Эксклюзивные инструменты KAIROS

Инструменты регистрируются через getAllBaseTools() и фильтруются по feature gates, типу пользователя, переменным окружения и правилам запрета разрешений. Есть кеш схем инструментов (toolSchemaCache.ts), который кеширует JSON-схемы для экономии промпт-токенов.


Система разрешений и безопасности

Система разрешений Claude Code в tools/permissions/ значительно сложнее, чем «разрешить/запретить»:

Режимы разрешений: default (интерактивные запросы), auto (автоматическое одобрение на основе ML через классификатор транскриптов), bypass (пропуск проверок), yolo (запретить всё — ироничное название).

Классификация рисков: каждое действие инструмента классифицируется как LOW, MEDIUM или HIGH. Есть YOLO-классификатор — быстрая ML-система принятия решений о разрешениях, работающая автоматически.

Защищённые файлы: .gitconfig, .bashrc, .zshrc, .mcp.json, .claude.json и другие защищены от автоматического редактирования.

Предотвращение path traversal: URL-кодированные обходы, атаки через Unicode-нормализацию, инъекции обратных слэшей, манипуляции с регистром путей — всё обрабатывается.

Объяснение разрешений: отдельный LLM-вызов объясняет пользователю риски инструмента перед одобрением. Когда Claude говорит «эта команда изменит ваш git config» — это объяснение само по себе сгенерировано Claude.


Скрытые бета-заголовки и невыпущенные API-функции

Файл constants/betas.ts раскрывает все бета-фичи, которые Claude Code запрашивает у API:

'interleaved-thinking-2025-05-14'      // Расширенное мышление
'context-1m-2025-08-07'                // Контекстное окно на 1М токенов
'structured-outputs-2025-12-15'        // Структурированный формат вывода
'web-search-2025-03-05'                // Веб-поиск
'advanced-tool-use-2025-11-20'         // Продвинутое использование инструментов
'effort-2025-11-24'                    // Управление уровнем усилий
'task-budgets-2026-03-13'              // Управление бюджетами задач
'prompt-caching-scope-2026-01-05'      // Скоупинг кеша промптов
'fast-mode-2026-02-01'                 // Быстрый режим (Penguin)
'redact-thinking-2026-02-12'           // Редактирование мышления
'token-efficient-tools-2026-03-28'     // Токен-эффективные схемы инструментов
'afk-mode-2026-01-31'                  // AFK-режим
'cli-internal-2026-02-09'             // Только для внутреннего использования (ant)
'advisor-tool-2026-03-01'              // Инструмент-советник
'summarize-connector-text-2026-03-13'  // Суммаризация текста коннекторов

redact-thinking, afk-mode и advisor-tool тоже пока не выпущены.


Feature gating — внутренние и внешние сборки

Это одна из архитектурно самых интересных частей кодовой базы.

Claude Code использует compile-time feature flags через функцию feature() из bun:bundle. Бандлер свёртывает константы и элиминирует мёртвый код загейтованных ветвей из внешних сборок. Полный список известных флагов:

Флаг

Что он закрывает

PROACTIVE / KAIROS

Режим всегда включённого ассистента

KAIROS_BRIEF

Краткая команда

BRIDGE_MODE

Удалённое управление через claude.ai

DAEMON

Фоновый демон

VOICE_MODE

Голосовой ввод

WORKFLOW_SCRIPTS

Автоматизация воркфлоу

COORDINATOR_MODE

Мультиагентная оркестрация

TRANSCRIPT_CLASSIFIER

AFK-режим (ML-автоодобрение)

BUDDY

Система питомца-компаньона

NATIVE_CLIENT_ATTESTATION

Аттестация клиента

HISTORY_SNIP

Обрезка истории

EXPERIMENTAL_SKILL_SEARCH

Обнаружение навыков

Дополнительно USER_TYPE === 'ant' закрывает функции для внутреннего использования Anthropic: доступ к staging API (claude-ai.staging.ant.dev), внутренние бета-заголовки, режим прикрытия, команду /security-review, ConfigTool, TungstenTool и дамп промптов в ~/.config/claude/dump-prompts/.

Рантайм feature gating обслуживает GrowthBook с агрессивно кешированными значениями. Feature flags с префиксом tengu_ управляют всем — от быстрого режима до консолидации памяти. Многие проверки используют getFeatureValue_CACHED_MAY_BE_STALE(), чтобы не блокировать основной цикл — устаревшие данные считаются допустимыми для feature gates.


Другие примечательные находки

Upstream-прокси

Директория upstreamproxy/ содержит контейнеро-ориентированное прокси-реле, которое использует prctl(PR_SET_DUMPABLE, 0) для предотвращения ptrace кучи от процессов с тем же UID. Оно читает сессионные токены из /run/ccr/session_token в CCR-контейнерах, загружает CA-сертификаты и запускает локальное CONNECT→WebSocket-реле. Anthropic API, GitHub, npmjs.org и pypi.org явно исключены из проксирования.

Bridge Mode

JWT-аутентифицированная bridge-система в bridge/ для интеграции с claude.ai. Поддерживает рабочие режимы: 'single-session' | 'worktree' | 'same-dir'. Включает токены доверенных устройств для повышенных уровней безопасности.

Кодовые имена моделей в миграциях

Директория migrations/ раскрывает историю внутренних кодовых имён:

  • migrateFennecToOpus«Fennec» (лиса фенек) было кодовым именем Opus

  • migrateSonnet1mToSonnet45 — Sonnet с 1М контекстом стал Sonnet 4.5

  • migrateSonnet45ToSonnet46 — Sonnet 4.5 → Sonnet 4.6

  • resetProToOpusDefault — Pro-пользователей в какой-то момент переключили на Opus по умолчанию

Заголовок атрибуции

Каждый API-запрос включает:

x-anthropic-billing-header: cc_version={VERSION}.{FINGERPRINT}; 
  cc_entrypoint={ENTRYPOINT}; cch={ATTESTATION_PLACEHOLDER}; cc_workload={WORKLOAD};

Фича NATIVE_CLIENT_ATTESTATION позволяет HTTP-стеку Bun перезаписать плейсхолдер cch=00000 вычисленным хешем — по сути, это проверка подлинности клиента, чтобы Anthropic мог убедиться, что запрос пришёл от настоящей установки Claude Code.

Computer Use — «Chicago»

Claude Code включает полноценную реализацию Computer Use, внутреннее кодовое имя «Chicago», построенную на @ant/computer-use-mcp. Предоставляет захват экрана, ввод кликов/клавиш и преобразование координат. Доступна только для подписок Max/Pro (с обходом для внутренних пользователей Anthropic).

Ценообразование

Для интересующихся — все цены в utils/modelCost.ts полностью совпадают с публичными ценами Anthropic. Ничего сенсационного.


Заключительные мысли

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

Несколько вещей бросаются в глаза:

Инженерия впечатляет. Это не проект выходного дня, обёрнутый в CLI. Мультиагентная координация, система снов, архитектура триггеров с тремя вентилями, compile-time элиминация фич — это глубоко продуманные системы.

Впереди ещё очень много. KAIROS (всегда включённый Claude), ULTRAPLAN (30-минутное удалённое планирование), компаньон Buddy, режим координатора, рои агентов, скрипты воркфлоу — кодовая база значительно опережает публичный релиз. Большинство из этого спрятано за feature gates и невидимо во внешних сборках.

Внутренняя культура видна. Кодовые имена-животные (Tengu, Fennec, Capybara), игривые названия фич (Penguin Mode, Dream System), система тамагочи-питомца с гача-механикой. Кому-то в Anthropic определённо весело.

Если есть один вывод из всего этого — безопасность это сложно. А .npmignore, похоже, ещё сложнее.