|
| 1 | +# Claude Code (Reverse-Engineered) |
| 2 | + |
| 3 | +Anthropic 官方 [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI 工具的源码反编译/逆向还原项目。目标是将 Claude Code 核心功能跑通,必要时删减次级能力。 |
| 4 | + |
| 5 | +## 核心能力 |
| 6 | + |
| 7 | +- API 通信(Anthropic SDK / Bedrock / Vertex) |
| 8 | +- Bash / FileRead / FileWrite / FileEdit 等核心工具 |
| 9 | +- REPL 交互界面(ink 终端渲染) |
| 10 | +- 对话历史与会话管理 |
| 11 | +- 权限系统 |
| 12 | +- Agent / 子代理系统 |
| 13 | + |
| 14 | +## 已删减模块 |
| 15 | + |
| 16 | +| 模块 | 处理方式 | |
| 17 | +|------|----------| |
| 18 | +| Computer Use (`@ant/computer-use-*`) | stub | |
| 19 | +| Claude for Chrome MCP | stub | |
| 20 | +| Magic Docs / Voice Mode / LSP Server | 移除 | |
| 21 | +| Analytics / GrowthBook / Sentry | 空实现 | |
| 22 | +| Plugins / Marketplace / Desktop Upsell | 移除 | |
| 23 | +| Ultraplan / Tungsten / Auto Dream | 移除 | |
| 24 | +| MCP OAuth/IDP | 简化 | |
| 25 | +| DAEMON / BRIDGE / BG_SESSIONS / TEMPLATES 等 | feature flag 关闭 | |
| 26 | + |
| 27 | +## 快速开始 |
| 28 | + |
| 29 | +### 环境要求 |
| 30 | + |
| 31 | +- [Bun](https://bun.sh/) >= 1.0 |
| 32 | +- Node.js >= 18(部分依赖需要) |
| 33 | +- 有效的 Anthropic API Key(或 Bedrock / Vertex 凭据) |
| 34 | + |
| 35 | +### 安装 |
| 36 | + |
| 37 | +```bash |
| 38 | +bun install |
| 39 | +``` |
| 40 | + |
| 41 | +### 运行 |
| 42 | + |
| 43 | +```bash |
| 44 | +# 开发模式(watch) |
| 45 | +bun run dev |
| 46 | + |
| 47 | +# 直接运行 |
| 48 | +bun run src/entrypoints/cli.tsx |
| 49 | + |
| 50 | +# 管道模式(-p) |
| 51 | +echo "say hello" | bun run src/entrypoints/cli.tsx -p |
| 52 | + |
| 53 | +# 构建 |
| 54 | +bun run build |
| 55 | +``` |
| 56 | + |
| 57 | +构建产物输出到 `dist/cli.js`(~25 MB,5300+ 模块)。 |
| 58 | + |
| 59 | +## 项目结构 |
| 60 | + |
| 61 | +``` |
| 62 | +claude-code/ |
| 63 | +├── src/ |
| 64 | +│ ├── entrypoints/ |
| 65 | +│ │ ├── cli.tsx # 入口文件(含 MACRO/feature polyfill) |
| 66 | +│ │ └── sdk/ # SDK 子模块 stub |
| 67 | +│ ├── main.tsx # 主 CLI 逻辑(Commander 定义) |
| 68 | +│ └── types/ |
| 69 | +│ ├── global.d.ts # 全局变量/宏声明 |
| 70 | +│ └── internal-modules.d.ts # 内部 npm 包类型声明 |
| 71 | +├── packages/ # Monorepo workspace 包 |
| 72 | +│ ├── color-diff-napi/ # 完整实现(终端 color diff) |
| 73 | +│ ├── modifiers-napi/ # stub(macOS 修饰键检测) |
| 74 | +│ ├── audio-capture-napi/ # stub |
| 75 | +│ ├── image-processor-napi/# stub |
| 76 | +│ ├── url-handler-napi/ # stub |
| 77 | +│ └── @ant/ # Anthropic 内部包 stub |
| 78 | +│ ├── claude-for-chrome-mcp/ |
| 79 | +│ ├── computer-use-mcp/ |
| 80 | +│ ├── computer-use-input/ |
| 81 | +│ └── computer-use-swift/ |
| 82 | +├── scripts/ # 自动化 stub 生成脚本 |
| 83 | +├── dist/ # 构建输出 |
| 84 | +└── package.json # Bun workspaces monorepo 配置 |
| 85 | +``` |
| 86 | + |
| 87 | +## 技术说明 |
| 88 | + |
| 89 | +### 运行时 Polyfill |
| 90 | + |
| 91 | +入口文件 `src/entrypoints/cli.tsx` 顶部注入了必要的 polyfill: |
| 92 | + |
| 93 | +- `feature()` — 所有 feature flag 返回 `false`,跳过未实现分支 |
| 94 | +- `globalThis.MACRO` — 模拟构建时宏注入(VERSION 等) |
| 95 | + |
| 96 | +### 类型状态 |
| 97 | + |
| 98 | +仍有 ~1341 个 tsc 错误,均为反编译产生的源码级类型问题(`unknown` / `never` / `{}`),**不影响 Bun 运行时**。 |
| 99 | + |
| 100 | +### Monorepo |
| 101 | + |
| 102 | +项目采用 Bun workspaces 管理内部包。原先手工放在 `node_modules/` 下的 stub 已统一迁入 `packages/`,通过 `workspace:*` 解析。 |
| 103 | + |
| 104 | +## 许可证 |
| 105 | + |
| 106 | +本项目仅供学习研究用途。Claude Code 的所有权利归 [Anthropic](https://www.anthropic.com/) 所有。 |
0 commit comments