Claude Info
Исследования

Реверс-инжиниринг Claude Code

Prajwalsrinvas/claude-code-reverse-engineering

Скилл для реверс-инжиниринга Claude Code: распаковывает минифицированный CLI, восстанавливает читаемый код через webcrack и prettier, анализирует внутренние механизмы команд и генерирует подробные markdown-отчёты.

Установка

terminal
bash
git clone https://github.com/Prajwalsrinvas/claude-code-reverse-engineering.git

README

Как Claude Code работает изнутри

Глубокий анализ возможностей Claude Code методом реверс-инжиниринга — путём прямого чтения минифицированного исходного кода.

Зачем это нужно

Claude Code не является open source. Публичный репозиторий на GitHub содержит только плагины, примеры и changelogs — сам CLI поставляется в виде минифицированного JavaScript в npm-пакете. На момент запуска проекта официальной документации о внутренней работе /insights не существовало, и единственным способом разобраться было читать исходный код напрямую.

Первый анализ превратился в воспроизводимый процесс: получить npm-пакет, разминифицировать с помощью webcrack + prettier, найти якорные строки, извлечь нужный код, переименовать идентификаторы и задокументировать результаты. Процесс упакован в виде скилла Claude Code, чтобы его можно было применять к любой функции.

Глубокие разборы

ФункцияЧто делаетРазбор
/insightsАнализирует прошлые сессии, с помощью Opus извлекает структурированные аспекты из каждой, агрегирует статистику, генерирует текстовые разделы и создаёт HTML-отчётdeep-dives/insights/
/compactОчищает историю разговора, сохраняя подробное резюме. Два пути: быстрый путь через память сессии (без вызова LLM) и стандартный путь суммаризации через LLMdeep-dives/compact/
Меню slash-командВыпадающий список автодополнения / — нечёткий поиск через Fuse.js с взвешенными полями, оценка давности с экспоненциальным затуханием, архитектура реестра командdeep-dives/slash-commands/
/stats и /context/stats показывает историческую статистику использования (тепловая карта в стиле GitHub, серии, разбивка токенов по моделям) из JSONL-файлов сессий с инкрементальным дисковым кешированием. /context визуализирует использование текущего контекстного окна в виде цветной сетки с количеством токенов по категориямdeep-dives/stats-and-context/

Каждая папка с разбором содержит README.md с полным описанием (диаграммы архитектуры, фрагменты кода, выводы). Разборы, потребовавшие существенного извлечения кода, также включают файл *-annotated.js с переименованными в осмысленные имена идентификаторами. Разбор slash-команд повторно использует код, уже извлечённый в аннотированном файле compact.

Скилл

Папка skill/ содержит кастомный скилл Claude Code, автоматизирующий процесс анализа:

  1. Получение исходника — Загрузка cli.js из npm (npm pack @anthropic-ai/claude-code)
  2. Разминификация — webcrack для синтаксических преобразований + prettier для форматирования (712K+ читаемых строк)
  3. Поиск — Поиск якорных строк (строковые литералы отлично сохраняются после минификации)
  4. Извлечение и аннотирование — Извлечение кода функции, переименование идентификаторов на месте
  5. Анализ — Документирование поведения, вызовов LLM, потоков данных
  6. Отчёт — Создание markdown-отчёта с доказательствами из кода
  7. Саморефлексия — Оценка того, нужно ли обновить сам скилл

Для использования скопируйте skill/ в ~/.claude/skills/analyze-cc-feature/ и вызовите командой /analyze-cc-feature [feature-name]. Требуется установленный Claude Code.

См. skill/SKILL.md для полных инструкций и skill/REFERENCE.md для сравнения инструментов, предшествующих работ и таблицы известных искажённых идентификаторов.

Как получается исходный код

CLI-реализация Claude Code поставляется в виде минифицированного cli.js (~11 МБ) в npm-пакете. Код минифицирован (пробелы удалены, идентификаторы сокращены), но не обфусцирован (нет выравнивания потока управления, нет шифрования строк). Это означает, что строковые литералы — промпты, сообщения об ошибках, имена полей, события телеметрии — полностью сохранены и служат основными доказательствами для понимания работы кода.

bash
npm pack @anthropic-ai/claude-code
tar -xzf anthropic-ai-claude-code-*.tgz
npx webcrack package/cli.js --no-unpack --no-deobfuscate --force -o webcrack-output/
npx prettier --write webcrack-output/deobfuscated.js

Разминифицированный исходник (deep-dives/webcrack-output/deobfuscated.js) добавлен в gitignore — его размер ~17 МБ / 712K строк. Воспроизведите его с помощью команд выше или скриптов из skill/scripts/.

Предшествующие работы

Другие исследователи, занимавшиеся реверс-инжинирингом Claude Code:

КтоМетод
Martin AldersonAST-диффинг с помощью acorn — ввёл термин «минификация — не обфускация»
0xdevaliasИсчерпывающий каталог инструментов и техник
SabrinaКонвейер деобфускации через LLM-субагентов
ghuntleyТранспиляция через LLM в чистой комнате
Kir ShatrovПерехват API через mitmproxy
Reid BarberБлог о реверс-инжиниринге
ShareAI LabГибридный конвейер: статический + динамический анализ + LLM

См. skill/REFERENCE.md для полного списка.

Используемые инструменты

ИнструментНазначение
webcrackСинтаксическая разминификация
PrettierФорматирование кода
Claude CodeСам анализ (модель: Claude Opus 4.6)

Похожие скиллы