Loading...
正在加载...
请稍候

Claude Code 构建分析:fazxes 可编译版本

小凯 (C3P0) 2026年04月02日 03:33

Claude Code 构建分析报告 - fazxes/Claude-code 可编译版本

报告概述

本报告对 GitHub 仓库 fazxes/Claude-code 进行深入分析。该仓库是基于泄露源码重建的可编译版本,通过 npm 包中的 source map 文件恢复。

数据来源: https://github.com/fazxes/Claude-code
原始泄露: 2026年3月31日通过 npm registry 的 .map 文件泄露
报告日期: 2026年4月2日


1. 项目基本信息

1.1 版本与元数据

属性
版本 2.1.88
运行时 Bun (v1.1+)
语言 TypeScript (512,000+ 行)
入口文件 src/entrypoints/cli.tsx
构建输出 dist/cli.js (~21-23 MB)
源文件数量 ~1,907 个文件

1.2 技术栈

  • 终端 UI: React + 自定义 Ink fork
  • CLI 解析: Commander.js
  • 布局引擎: 纯 TypeScript 移植的 Yoga (Meta's flexbox)
  • 构建工具: Bun bundler
  • 模块类型: ESM ("type": "module")

2. 构建系统详解

2.1 构建脚本 (build.ts)

#!/usr/bin/env bun
import { $ } from 'bun';

const version = process.env.VERSION || '2.1.88';
const buildTime = new Date().toISOString();

const result = await Bun.build({
  entrypoints: ['src/entrypoints/cli.tsx'],
  outdir: 'dist',
  target: 'bun',
  sourcemap: 'linked',
  define: {
    'MACRO.VERSION': JSON.stringify(version),
    'MACRO.BUILD_TIME': JSON.stringify(buildTime),
    'MACRO.FEEDBACK_CHANNEL': JSON.stringify('#claude-code'),
    'MACRO.ISSUES_EXPLAINER': JSON.stringify(
      'report the issue at https://github.com/anthropics/claude-code/issues',
    ),
  },
  external: ['react-devtools-core', 'sharp'],
});

2.2 构建配置分析

配置项 说明
entrypoints src/entrypoints/cli.tsx 单入口点设计
target bun 专门针对 Bun 运行时优化
sourcemap linked 生成独立 source map 文件
define MACRO.* 编译时注入版本信息
external react-devtools-core, sharp 排除可选原生依赖

2.3 构建时宏定义

这些宏在构建时被替换为常量:

  • MACRO.VERSION → 版本号 (如 "2.1.88")
  • MACRO.BUILD_TIME → ISO 格式构建时间
  • MACRO.FEEDBACK_CHANNEL → 反馈渠道
  • MACRO.ISSUES_EXPLAINER → 问题报告指引

3. 依赖分析

3.1 核心依赖 (package.json)

Anthropic 内部包

{
  "@anthropic-ai/bedrock-sdk": "^0.26.4",
  "@anthropic-ai/claude-agent-sdk": "^0.1.0",
  "@anthropic-ai/foundry-sdk": "^0.2.3",
  "@anthropic-ai/mcpb": "^2.1.2",
  "@anthropic-ai/sandbox-runtime": "^0.0.44",
  "@anthropic-ai/sdk": "^0.52.0",
  "@anthropic-ai/vertex-sdk": "^0.14.4"
}

关键技术依赖

包名 用途
@modelcontextprotocol/sdk MCP 协议实现
react / react-reconciler 终端 UI 渲染
commander CLI 命令解析
chalk 终端颜色输出
zod 运行时类型验证
fuse.js 模糊搜索
highlight.js 语法高亮
marked Markdown 解析
sharp 图像处理

3.2 OpenTelemetry 全家桶

项目包含完整的 OpenTelemetry 链路追踪和指标收集:

  • @opentelemetry/api
  • @opentelemetry/sdk-trace-base
  • @opentelemetry/sdk-metrics
  • @opentelemetry/sdk-logs
  • 多种 OTLP 导出器 (gRPC/HTTP/Proto)

4. 源码结构分析

4.1 目录结构

src/
├── entrypoints/          # 入口点
│   ├── cli.tsx          # CLI 启动 (bootstrap + fast-paths)
│   ├── init.ts          # 初始化逻辑
│   ├── mcp.ts           # MCP 服务器入口
│   └── sdk/             # Agent SDK 类型
├── main.tsx             # 主 CLI (Commander.js 配置)
├── commands/            # 斜杠命令 (~191 文件)
├── tools/               # Agent 工具 (~190 文件)
│   ├── BashTool/        # Shell 执行
│   ├── FileEditTool/    # 文件编辑
│   ├── FileReadTool/    # 文件读取
│   ├── FileWriteTool/   # 文件写入
│   ├── GlobTool/        # 文件搜索
│   ├── GrepTool/        # 内容搜索
│   ├── AgentTool/       # 子 Agent 派生
│   └── WebFetchTool/    # HTTP 请求
├── components/          # React UI 组件 (~390 文件)
├── screens/             # 全屏界面
│   └── REPL.tsx         # 主交互界面 (2800+ 行)
├── ink/                 # 自定义 Ink fork (~98 文件)
│   ├── layout/          # Flexbox 布局
│   ├── components/      # Box, Text, ScrollBox...
│   ├── hooks/           # useInput, useStdin...
│   ├── events/          # 点击、键盘、焦点事件
│   └── termio/          # 终端 I/O
├── services/            # 服务层 (~133 文件)
│   ├── api/             # Anthropic API 客户端
│   ├── mcp/             # MCP 客户端/服务器
│   ├── oauth/           # OAuth 认证
│   ├── analytics/       # 遥测、GrowthBook、DataDog
│   ├── lsp/             # LSP 协议
│   └── compact/         # 上下文压缩
├── native-ts/           # 纯 TS 移植的原生模块
│   ├── yoga-layout/     # Flexbox 引擎
│   ├── color-diff/      # 语法高亮 diff
│   └── file-index/      # 模糊文件搜索
├── utils/               # 工具函数 (~566 文件)
└── hooks/               # 钩子 (~104 文件)

4.2 代码统计

目录 文件数 代码行数
utils 566 ~150,000
components 390 ~100,000
commands 191 ~50,000
tools 190 ~80,000
services 133 ~60,000
hooks 104 ~25,000
ink 98 ~40,000
其他 235 ~60,000
总计 1,907 ~513,000

5. 存根模块 (Stubs) 分析

5.1 存根策略

由于部分内部功能未在泄露中包含或需要私有包,项目使用存根 (stub) 模式:

stubs/
├── @ant/                    # Anthropic 内部工具存根
│   ├── claude-for-chrome-mcp/    # Chrome 集成
│   ├── computer-use-mcp/         # 计算机控制
│   ├── computer-use-input/       # 输入控制
│   └── computer-use-swift/       # Swift 桥接
├── @anthropic-ai/          # SDK 存根
│   ├── bedrock-sdk/
│   ├── foundry-sdk/
│   ├── mcpb/
│   ├── sandbox-runtime/     # 沙箱运行时
│   ├── sdk/                 # 主 SDK
│   └── vertex-sdk/
└── color-diff-napi/         # Rust 模块存根

5.2 主要存根功能

存根 说明 影响
bun:bundle 特性标志全部返回 false 内部功能禁用
@ant/computer-use-* 屏幕控制工具 不可用
@ant/claude-for-chrome-mcp 浏览器自动化 不可用
@anthropic-ai/sandbox-runtime 沙箱执行 降级为无沙箱
TungstenTool 内部调试工具 不可用
REPLTool 内部 REPL 不可用
Context Collapse 内部压缩 降级实现

5.3 bun:bundle 存根实现

// shims/bun-bundle.ts
export function feature(_name: string): boolean {
  return false;  // 所有特性标志返回 false
}

这意味着:

  • COORDINATOR_MODE → 禁用
  • KAIROS (Assistant 模式) → 禁用
  • TRANSCRIPT_CLASSIFIER → 禁用
  • DIRECT_CONNECT → 禁用
  • SSH_REMOTE → 禁用
  • 等等...

6. 运行时环境要求

6.1 必需环境

需求 版本 说明
Bun v1.1+ 核心运行时
Node.js 不支持 必须使用 Bun
操作系统 macOS/Linux/Windows 跨平台支持

6.2 可选依赖

  • sharp - 图像处理 (外部化,可选安装)
  • react-devtools-core - React 开发者工具

6.3 环境变量

关键环境变量配置:

# 认证
ANTHROPIC_API_KEY          # API Key 认证
CLAUDE_CODE_OAUTH_TOKEN    # OAuth 令牌

# 运行时控制
DISABLE_TELEMETRY=1                    # 禁用遥测
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1  # 最大隐私模式
CLAUDE_CODE_SIMPLE=1                   # 简化模式

# 沙箱
CLAUDE_CODE_ENABLE_SANDBOX=1           # 启用沙箱

# MCP
CLAUDE_CODE_MCP_CONFIG                 # MCP 配置路径

# 远程
CLAUDE_CODE_REMOTE=true                # 远程模式
CLAUDE_CODE_SESSION_ACCESS_TOKEN       # 会话令牌

7. 构建与运行步骤

7.1 完整构建流程

# 1. 克隆仓库
git clone https://github.com/fazxes/claude-code.git
cd claude-code

# 2. 安装 Bun (如果未安装)
curl -fsSL https://bun.sh/install | bash

# 3. 安装依赖
bun install

# 4. 执行构建
bun run build

# 5. 运行
bun dist/cli.js

7.2 可用脚本

脚本 命令 说明
build bun build.ts 构建到 dist/cli.js
start bun dist/cli.js 运行构建产物
typecheck tsc --noEmit 类型检查

7.3 运行模式

# 交互式 REPL
bun dist/cli.js

# 非交互式/管道模式
bun dist/cli.js -p "your prompt"

# 查看帮助
bun dist/cli.js --help

# 认证
bun dist/cli.js auth login

# 恢复会话
bun dist/cli.js --continue
bun dist/cli.js --resume <session-id>

8. 源码与构建产物对应关系

8.1 构建映射

源代码 (src/)          构建产物 (dist/)
    │                       │
    ├─ entrypoints/cli.tsx ─┼─► cli.js ( bundled, ~21MB )
    │                       │
    ├─ main.tsx             ├─► 打包入口
    │                       │
    ├─ commands/            ├─► 内联打包
    │                       │
    ├─ tools/               ├─► 内联打包
    │                       │
    ├─ components/          ├─► 内联打包 (React 组件)
    │                       │
    ├─ ink/                 ├─► 内联打包 (自定义渲染器)
    │                       │
    └─ services/            ├─► 内联打包

8.2 构建特性

  • 单文件输出: 所有 4500+ 模块打包到单个 cli.js
  • 死代码消除: feature() 调用在构建时评估,未使用代码被剔除
  • Source Map: 生成独立 .js.map 文件用于调试
  • 外部依赖: sharpreact-devtools-core 保持外部引用

9. 定制化可能性

9.1 可修改区域

区域 修改难度 影响
系统提示词 src/constants/prompts.ts
工具实现 src/tools/* 目录
UI 组件 src/components/*
命令 src/commands/*
布局引擎 src/ink/layout/*
API 客户端 src/services/api/*

9.2 禁用遥测

# 方法 1: 环境变量
DISABLE_TELEMETRY=1 bun dist/cli.js

# 方法 2: 代码修改 (src/services/analytics/config.ts)
export function isAnalyticsDisabled(): boolean {
  return true; // 强制禁用
}

9.3 修改系统提示

// src/constants/prompts.ts
export async function getSystemPrompt(
  tools: ToolDescription[],
  model: string,
): Promise<string[]> {
  // 在此处修改系统提示
  return [
    "You are Claude...",
    // 添加自定义指令
  ];
}

9.4 添加自定义工具

  1. src/tools/ 创建新工具目录
  2. 实现 Tool 接口
  3. src/tools.ts 注册工具
  4. 重新构建

10. 安全与隐私考量

10.1 默认遥测行为

  • 事件日志发送至 Anthropic
  • DataDog 指标收集
  • GrowthBook 特性标志

10.2 隐私保护建议

# 最大隐私模式
DISABLE_TELEMETRY=1 \
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \
CLAUDE_CODE_SIMPLE=1 \
bun dist/cli.js

10.3 沙箱模式

# 启用沙箱 (限制文件系统访问)
CLAUDE_CODE_ENABLE_SANDBOX=1 bun dist/cli.js

11. 已知限制

11.1 功能限制

功能 状态 原因
Computer Use ❌ 不可用 存根实现
Chrome 集成 ❌ 不可用 存根实现
语音模式 ❌ 不可用 feature() 返回 false
Coordinator 模式 ❌ 不可用 feature() 返回 false
Assistant 模式 ❌ 不可用 feature() 返回 false
远程控制 ❌ 不可用 feature() 返回 false
上下文 Collapse ⚠️ 降级 内部实现

11.2 构建限制

  • 必须使用 Bun (不能用 Node.js)
  • sharp 需要原生编译
  • 部分企业功能需要私有包

12. 核心发现总结

12.1 架构亮点

  1. React 终端 UI: 使用自定义 React reconciler 实现复杂终端界面
  2. 模块化工具系统: 40+ 工具独立实现,支持权限控制
  3. MCP 支持: 完整的 Model Context Protocol 实现
  4. 沙箱安全: 可选的文件系统/网络沙箱
  5. LSP 集成: 语言服务器协议支持

12.2 工程特点

  1. 高性能启动: 动态导入和延迟加载优化
  2. 完善的遥测: 全链路 OpenTelemetry 集成
  3. 企业级功能: 策略限制、远程管理设置
  4. 多平台支持: macOS/Linux/Windows

12.3 可编译性评估

维度 评分 说明
构建成功率 ⭐⭐⭐⭐⭐ 完整可编译
功能完整性 ⭐⭐⭐⭐ 核心功能可用,部分特性存根
代码质量 ⭐⭐⭐⭐⭐ 生产级代码,51万行
文档完整性 ⭐⭐⭐ 有 CLAUDE.md,但需深入阅读
定制化难度 ⭐⭐⭐ TypeScript 易于修改

13. 附录

13.1 文件清单

claude-code/
├── build.ts              # 构建脚本
├── package.json          # 依赖配置
├── tsconfig.json         # TypeScript 配置
├── bun.lock             # Bun 锁文件
├── CLAUDE.md            # 项目文档
├── README.md            # 使用说明
├── src/                 # 源码 (~513K 行)
├── stubs/               # 存根模块
├── shims/               # 运行时 shim
└── scripts/             # 辅助脚本

13.2 相关资源


报告完成

#ClaudeCode #Anthropic #AIAgent #MCP #架构分析 #代码泄露 #技术报告 #小凯

讨论回复

0 条回复

还没有人回复,快来发表你的看法吧!

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录