claude-code
chiragjoshi12/claude-codeНезависимый образовательный Python-порт Claude Code, переписанный с нуля на основе oh-my-codex. Содержит анализ утёкшего исходного кода TypeScript-CLI от Anthropic: архитектура инструментов, команд, сервисов и мультиагентной координации.
Установка
git clone https://github.com/chiragjoshi12/claude-code.gitREADME
Claude Code — Утёкший исходный код (2026-03-31)
31 марта 2026 года полный исходный код CLI-инструмента Claude Code от Anthropic был слит через
.map-файл, обнаруженный в их npm-реестре.
Как произошла утечка
Chaofan Shou (@Fried_rice) обнаружил утечку и опубликовал её:
«Исходный код Claude Code утёк через map-файл в их npm-реестре!»
Файл source map в опубликованном npm-пакете содержал ссылку на полный, необфусцированный TypeScript-исходник, который можно было скачать в виде zip-архива из R2-хранилища Anthropic.
Обзор
Claude Code — официальный CLI-инструмент Anthropic, позволяющий взаимодействовать с Claude прямо из терминала для решения задач разработки: редактирование файлов, выполнение команд, поиск по кодовой базе, управление git-процессами и многое другое.
Данный репозиторий содержит утёкшую директорию src/.
- Дата утечки: 2026-03-31
- Язык: TypeScript
- Среда выполнения: Bun
- Терминальный UI: React + Ink (React для CLI)
- Масштаб: ~1 900 файлов, 512 000+ строк кода
Структура директорий
src/
├── main.tsx # Точка входа (CLI-парсер на базе Commander.js)
├── commands.ts # Реестр команд
├── tools.ts # Реестр инструментов
├── Tool.ts # Определения типов инструментов
├── QueryEngine.ts # Движок запросов к LLM (основной вызов Anthropic API)
├── context.ts # Сбор системного/пользовательского контекста
├── cost-tracker.ts # Отслеживание стоимости токенов
│
├── commands/ # Реализации slash-команд (~50)
├── tools/ # Реализации инструментов агента (~40)
├── components/ # Ink UI-компоненты (~140)
├── hooks/ # React-хуки
├── services/ # Интеграции с внешними сервисами
├── screens/ # Полноэкранные UI (Doctor, REPL, Resume)
├── types/ # Определения TypeScript-типов
├── utils/ # Вспомогательные функции
│
├── bridge/ # Мост интеграции с IDE (VS Code, JetBrains)
├── coordinator/ # Координатор мультиагентной системы
├── plugins/ # Система плагинов
├── skills/ # Система навыков
├── keybindings/ # Конфигурация горячих клавиш
├── vim/ # Vim-режим
├── voice/ # Голосовой ввод
├── remote/ # Удалённые сессии
├── server/ # Серверный режим
├── memdir/ # Директория памяти (постоянная память)
├── tasks/ # Управление задачами
├── state/ # Управление состоянием
├── migrations/ # Миграции конфигурации
├── schemas/ # Схемы конфигурации (Zod)
├── entrypoints/ # Логика инициализации
├── ink/ # Обёртка рендерера Ink
├── buddy/ # Компаньон-спрайт (пасхальное яйцо)
├── native-ts/ # Нативные TypeScript-утилиты
├── outputStyles/ # Стилизация вывода
├── query/ # Конвейер запросов
└── upstreamproxy/ # Конфигурация прокси
Основная архитектура
1. Система инструментов (src/tools/)
Каждый инструмент, который может вызвать Claude Code, реализован как самодостаточный модуль. Каждый инструмент определяет схему входных данных, модель разрешений и логику выполнения.
| Инструмент | Описание |
|---|---|
BashTool | Выполнение shell-команд |
FileReadTool | Чтение файлов (изображения, PDF, ноутбуки) |
FileWriteTool | Создание / перезапись файлов |
FileEditTool | Частичное изменение файла (замена строк) |
GlobTool | Поиск файлов по шаблону |
GrepTool | Поиск по содержимому на базе ripgrep |
WebFetchTool | Получение содержимого URL |
WebSearchTool | Веб-поиск |
AgentTool | Запуск дочернего агента |
SkillTool | Выполнение навыка |
MCPTool | Вызов инструмента MCP-сервера |
LSPTool | Интеграция с Language Server Protocol |
NotebookEditTool | Редактирование Jupyter-ноутбуков |
TaskCreateTool / TaskUpdateTool | Создание задач и управление ими |
SendMessageTool | Межагентный обмен сообщениями |
TeamCreateTool / TeamDeleteTool | Управление командами агентов |
EnterPlanModeTool / ExitPlanModeTool | Переключение режима планирования |
EnterWorktreeTool / ExitWorktreeTool | Изоляция git worktree |
ToolSearchTool | Отложенное обнаружение инструментов |
CronCreateTool | Создание запланированных триггеров |
RemoteTriggerTool | Удалённый триггер |
SleepTool | Ожидание в проактивном режиме |
SyntheticOutputTool | Генерация структурированного вывода |
2. Система команд (src/commands/)
Пользовательские slash-команды, вызываемые с префиксом /.
| Команда | Описание |
|---|---|
/commit | Создание git-коммита |
/review | Ревью кода |
/compact | Сжатие контекста |
/mcp | Управление MCP-сервером |
/config | Управление настройками |
/doctor | Диагностика окружения |
/login / /logout | Аутентификация |
/memory | Управление постоянной памятью |
/skills | Управление навыками |
/tasks | Управление задачами |
/vim | Переключение Vim-режима |
/diff | Просмотр изменений |
/cost | Проверка стоимости использования |
/theme | Смена темы |
/context | Визуализация контекста |
/pr_comments | Просмотр комментариев к PR |
/resume | Восстановление предыдущей сессии |
/share | Поделиться сессией |
/desktop | Передача в десктопное приложение |
/mobile | Передача в мобильное приложение |
3. Сервисный слой (src/services/)
| Сервис | Описание |
|---|---|
api/ | Клиент Anthropic API, file API, bootstrap |
mcp/ | Подключение к MCP-серверу и управление им |
oauth/ | Поток аутентификации OAuth 2.0 |
lsp/ | Менеджер Language Server Protocol |
analytics/ | Флаги функций и аналитика на базе GrowthBook |
plugins/ | Загрузчик плагинов |
compact/ | Сжатие контекста разговора |
policyLimits/ | Ограничения политик организации |
remoteManagedSettings/ | Удалённо управляемые настройки |
extractMemories/ | Автоматическое извлечение воспоминаний |