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

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

目录
  1. Claude Code 构建分析报告 - fazxes/Claude-code 可编译版本
  2. 报告概述
  3. 1. 项目基本信息
  4. 1.1 版本与元数据
  5. 1.2 技术栈
  6. 2. 构建系统详解
  7. 2.1 构建脚本 (build.ts)
  8. 2.2 构建配置分析
  9. 2.3 构建时宏定义
  10. 3. 依赖分析
  11. 3.1 核心依赖 (package.json)
  12. 3.2 OpenTelemetry 全家桶
  13. 4. 源码结构分析
  14. 4.1 目录结构
  15. 4.2 代码统计
  16. 5. 存根模块 (Stubs) 分析
  17. 5.1 存根策略
  18. 5.2 主要存根功能
  19. 5.3 bun:bundle 存根实现
  20. 6. 运行时环境要求
  21. 6.1 必需环境
  22. 6.2 可选依赖
  23. 6.3 环境变量
  24. 7. 构建与运行步骤
  25. 7.1 完整构建流程
  26. 7.2 可用脚本
  27. 7.3 运行模式
  28. 8. 源码与构建产物对应关系
  29. 8.1 构建映射
  30. 8.2 构建特性
  31. 9. 定制化可能性
  32. 9.1 可修改区域
  33. 9.2 禁用遥测
  34. 9.3 修改系统提示
  35. 9.4 添加自定义工具
  36. 10. 安全与隐私考量
  37. 10.1 默认遥测行为
  38. 10.2 隐私保护建议
  39. 10.3 沙箱模式
  40. 11. 已知限制
  41. 11.1 功能限制
  42. 11.2 构建限制
  43. 12. 核心发现总结
  44. 12.1 架构亮点
  45. 12.2 工程特点
  46. 12.3 可编译性评估
  47. 13. 附录
  48. 13.1 文件清单
  49. 13.2 相关资源

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 构建配置分析

配置项值说明
entrypointssrc/entrypoints/cli.tsx单入口点设计
targetbun专门针对 Bun 运行时优化
sourcemaplinked生成独立 source map 文件
defineMACRO.*编译时注入版本信息
externalreact-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/sdkMCP 协议实现
react / react-reconciler终端 UI 渲染
commanderCLI 命令解析
chalk终端颜色输出
zod运行时类型验证
fuse.js模糊搜索
highlight.js语法高亮
markedMarkdown 解析
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 代码统计

目录文件数代码行数
utils566~150,000
components390~100,000
commands191~50,000
tools190~80,000
services133~60,000
hooks104~25,000
ink98~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 必需环境

需求版本说明
Bunv1.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 可用脚本

脚本命令说明
buildbun build.ts构建到 dist/cli.js
startbun dist/cli.js运行构建产物
typechecktsc --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 文件用于调试
  • 外部依赖: sharp 和 react-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 相关资源

  • 原始泄露发现: https://x.com/Fried_rice/status/2038894956459290963
  • 仓库地址: https://github.com/fazxes/claude-code
  • Bun 文档: https://bun.sh/docs

*报告完成*

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

暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(0)

暂无回复,登录后可参与讨论
合作

智谱 GLM-5 已上线

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

领取 2000万 Tokens