Claude Code 源码意外曝光,拿开源 Blade 做了一次全面对比
|
|
Claude Code
@anthropic-ai/claude-code) |
Blade
blade-code) |
|---|---|---|
| 定位 |
|
|
| 作者 |
|
|
| 版本 |
|
|
| 许可证 |
|
|
| 安装 | npm i -g @anthropic-ai/claude-code |
npm i -g blade-code |
| 入口命令 | claude |
blade
blade web / blade serve |
| 仓库 |
|
|
关键发现: package 3 目录中的 src/ 和 vendor/ 是通过 source map 逆向还原的 (2026-03-31),非 Anthropic 原始分发内容。实际 npm 包仅包含 cli.js、cli.js.map、sdk-tools.d.ts 等文件。
|
|
Claude Code | Blade |
|---|---|---|
| 语言 |
|
|
| 运行时 |
|
|
| 包管理器 |
|
|
| CLI 框架 |
|
|
| 终端 UI |
|
@jrichman/ink) |
| Web UI |
|
|
| AI SDK |
@anthropic-ai/sdk |
|
| MCP 协议 | @modelcontextprotocol/sdk |
@modelcontextprotocol/sdk |
| ACP 协议 |
|
@agentclientprotocol/sdk |
| 状态管理 |
|
|
| Schema 校验 |
|
|
| 搜索引擎 |
|
@vscode/ripgrep |
| Linting |
|
|
| 构建产物 |
cli.js (12MB) |
|
| Web 服务器 |
|
|
| Token 计数 |
|
|
|
|
Claude Code | Blade | 倍数 |
|---|---|---|---|
| 源文件数 |
|
|
|
| 代码行数 |
|
|
|
| 打包体积 |
cli.js) + 57 MB (source map) |
|
|
| 工具数量 |
|
|
|
| 斜杠命令 |
|
|
|
| UI 组件文件 |
|
|
|
| 顶层模块目录 |
|
|
|
| 最大单文件 | cli/print.ts
|
vscode/extension.ts
|
|
| 运行时依赖 |
|
|
|
Claude Code — 单体打包架构
cli.js (12MB 单文件, 零运行时依赖) ├── src/ (36 个顶层模块) │ ├── main.tsx — 入口 (4,683 行, CLI 解析/初始化/REPL) │ ├── tools/ — 43 个工具实现 (184 文件) │ ├── ink/ — 自研终端渲染器 (~70 文件, 含 Yoga 布局引擎) │ ├── components/ — React UI 组件 (389 文件) │ ├── screens/ — 顶层屏幕 (REPL 5,005 行) │ ├── services/ — 后端服务 (API/MCP/OAuth/LSP/插件, 21 子目录) │ ├── utils/ — 工具模块 (32 子目录) │ ├── vim/ — Vim 模拟 (动作/操作符/文本对象) │ ├── bridge/ — IDE 桥接 (VSCode/JetBrains) │ ├── coordinator/ — 多 Agent 协调器 │ ├── voice/ — 语音模式 (Feature Flag 控制) │ ├── tasks/ — 异步任务系统 │ ├── skills/ — 技能/插件系统 │ └── ... └── vendor/ — 原生二进制模块 ├── ripgrep/ — 6 平台预编译搜索引擎 ├── audio-capture/ — 音频采集 (6 平台) ├── image-processor/ — 图片处理 + macOS 剪贴板 ├── modifiers-napi/ — macOS 键盘修饰键 └── url-handler/ — macOS URL 事件处理
核心特点:
-
• 全部编译为单一 cli.js,零运行时依赖 -
• 自研 Ink 终端渲染器 (含自写 Yoga 布局引擎 2,578 行) -
• Feature Flags 通过 bun:bundleDCE 实现多构建变体 (内部版 vs 外部版) -
• 原生模块覆盖音频、图片、平台 API -
• React Compiler Runtime 自动 memoization
Blade — pnpm Monorepo 架构
Blade/ ├── packages/ │ ├── cli/ — 核心 CLI 包 (blade-code) │ │ ├── src/ — 26 个顶层模块 │ │ │ ├── agent/ — 无状态 Agent 核心 │ │ │ ├── tools/ — 20+ 内置工具 │ │ │ ├── server/ — Hono Web 服务器 │ │ │ ├── services/ — 服务层 (Chat/Session/FileSystem) │ │ │ ├── mcp/ — MCP 协议客户端 │ │ │ ├── context/ — 上下文管理 (压缩/Token 计数) │ │ │ ├── ui/ — 终端 UI (React + Ink) │ │ │ ├── store/ — Zustand 状态管理 │ │ │ ├── spec/ — Spec Mode (结构化工作流) │ │ │ ├── plugins/ — 插件系统 │ │ │ ├── skills/ — 技能系统 │ │ │ ├── hooks/ — Hooks 系统 │ │ │ ├── memory/ — 自动记忆系统 │ │ │ └── ... │ │ ├── web/ — Web UI (Vite + React + Tailwind) │ │ └── tests/ — 测试套件 (7 种配置) │ ├── vscode/ — VS Code 扩展 │ └── agent-sdk/ — Agent SDK (早期阶段) ├── docs/ — Docsify 文档站 └── .blade/ — 项目级自定义命令和技能
核心特点:
-
• Monorepo 清晰分层,包职责明确 -
• 无状态 Agent 设计 (状态通过上下文传递) -
• 多模型支持 80+ 提供商 (通过 Vercel AI SDK) -
• 完整 Web UI (Monaco Editor + Terminal + Markdown 渲染) -
• Plugin + Skills + Hooks 三层可扩展体系 -
• Spec Mode 结构化工作流 (独有功能)
|
|
Claude Code | Blade |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Web UI |
|
|
| 多模型支持 |
|
|
| VS Code 扩展 |
|
|
| Vim 模拟 |
|
|
| Voice Mode |
|
|
| 原生音频采集 |
|
|
| 原生图片处理 |
|
|
| Plugin 系统 |
|
|
| Notebook 编辑 |
|
|
| Git Worktree |
|
|
| Cron 调度 |
|
|
| i18n |
|
|
| Headless/CI 模式 |
|
|
|
|
Claude Code | Blade |
|---|---|---|
| TypeScript 严格模式 |
|
strict: true) |
| 测试框架 |
|
|
| 测试配置 |
|
|
| 覆盖率门槛 |
|
|
| CI/CD |
|
|
| 安全机制 |
|
|
| 权限模型 |
|
|
| Dead Code 检测 |
|
|
| 代码格式化 |
|
|
| 跨平台测试 |
|
|
Claude Code
-
• Bash 安全: 三个核心文件共 ~7,200 行 ( bashSecurity.ts2,592 行 +bashPermissions.ts2,621 行 +readOnlyValidation.ts1,990 行) -
• 权限系统: 六种权限模式,rule-based allow/deny/ask 决策 -
• 沙箱支持: 专用沙箱工具和文件系统/网络配置 -
• Feature Flags: 支持内部/外部构建变体隔离
Blade
-
• 安全测试套件: 专门的 injection / path-traversal / sensitive-file 测试 -
• 权限系统: 五种模式,glob-pattern 规则 -
• Hooks 安全: SecureProcessExecutor 安全进程执行器 -
• 路径安全: 独立的路径安全工具模块
|
|
Claude Code | Blade |
|---|---|---|
| README |
|
|
| 架构文档 |
|
|
| 贡献指南 |
|
|
| 安全政策 |
|
|
| 用户文档 |
|
|
| 类型文档 | sdk-tools.d.ts
|
|
| 内联注释 |
|
|
Claude Code
-
• 运行时依赖: 0 (全部打包进 cli.js) -
• 可选依赖: 9 个 ( @img/sharp-*跨平台图片处理) -
• 打包依赖: ~2,850 个文件从 node_modules打包 (推断自 source map 中 4,756 源文件) -
• 原生模块: 5 个自研 vendor 模块 (ripgrep / audio-capture / image-processor / modifiers-napi / url-handler)
Blade
-
• 运行时依赖: ~40 个 (AI SDK 7 个 + Ink 6 个 + Radix UI 7 个 + 核心工具库 20+) -
• 可选依赖: 3 个 ( @vscode/ripgrep/node-pty/bun-pty) -
• 开发依赖: ~15 个 (Biome / Vitest / TypeScript / 类型定义) -
• Lock 文件: 9,017 行 (中等规模依赖树)
|
|
Claude Code | Blade |
|---|---|---|
| 本地开发 |
|
pnpm dev
pnpm dev:web |
| 构建 |
|
pnpm build |
| 测试 |
|
pnpm test:all
|
| 预提交检查 |
|
pnpm preflight
|
| IDE 配置 |
|
.vscode/
|
| 项目自定义 |
|
.blade/
|
| 发布流程 |
|
|
Claude Code — 商业产品级工程
优势:
-
• 工业级代码量 (50 万+ 行),功能极其丰富 (43 工具 / 86 命令) -
• 极致的安全防护体系 (~7,200 行 Bash 安全代码) -
• 自研渲染引擎,零运行时依赖,启动性能优化到极致 -
• 原生模块覆盖音频/图片/平台 API,体验完整 -
• Feature Flag 支持多变体构建 (内部版/外部版) -
• React Compiler 自动优化
劣势:
-
• 闭源专有,无法二次开发 -
• 仅支持 Claude 模型,供应商锁定 -
• 无 Web UI,纯终端体验 -
• 逆向代码可读性降低,部分信息丢失
Blade — 开源社区作品
优势:
-
• MIT 开源,社区友好 -
• 多模型支持 80+ 提供商,无供应商锁定 -
• 完整 Web UI (Monaco + Terminal + Markdown) -
• 成熟的测试与 CI 体系 (80% 覆盖率门槛 / 5-job Pipeline / 跨平台) -
• Monorepo 架构清晰,可维护性好 -
• 文档完善 (中英双语 / 架构文档 / 贡献指南 / 用户文档站) -
• Spec Mode 独特工作流 -
• Plugin + Skills + Hooks 三层可扩展体系
劣势:
-
• 代码量和功能深度不及 Claude Code (~5 倍差距) -
• 个人维护 (bus factor = 1) -
• 部分功能仍在早期阶段 (agent-sdk) -
• 无原生模块,音频/图片等能力缺失 -
• 版本号 0.x,尚未达到稳定版
|
|
|
|
|---|---|---|
| 功能深度 |
|
|
| 功能广度 |
|
|
| 代码规模 |
|
|
| 架构清晰度 |
|
|
| 质量工程 |
|
|
| 安全机制 |
|
|
| 开放性 |
|
|
| 文档 |
|
|
| 可维护性 |
|
|
| 生态绑定 |
|
|
本质差异: Claude Code 是 商业产品级工程 — 大团队打造,深度优化,与自家模型紧密耦合,追求 深度和极致。Blade 是 开源社区作品 — 架构开放,模型中立,功能灵活,追求 广度和开放。两者在 AI 编程助手赛道上代表了截然不同的路线。
夜雨聆风