# Claude Code vs OpenClaw：51 万行 vs 53 万行源码对决

> Claude Code 源码泄露暴露了 51.2 万行 TypeScript，我们终于能与 OpenClaw 做一次真正对等的逐行比较——架构、Agent 定义、安全模型与设计哲学。

- 作者: zhuermu
- 发布: 2026-04-01
- 更新: 2026-04-01
- 网页版: https://zhuermu.com/blog/the-real-showdown-after-the-source-leak-claude-code-vs-openclaw-510k-lines-vs-530k-lines/

---
## 1. 最新数据：两个 50 万行级别的 TypeScript 巨兽

上一次我们只能拿 OpenClaw 的完整源码去对比 Claude Code 的配置层。如今我们终于能看到完整的全貌：

| 维度 | Claude Code（泄露版） | OpenClaw（最新 main） |
|-----------|---------------------|----------------------|
| 源文件 | 1,884 个 .ts/.tsx（不含测试） | 3,044 个 .ts（不含测试） |
| 代码行数 | 约 512,000 | 约 530,000 |
| 核心语言 | TypeScript + React (Ink) | TypeScript (ESM) |
| 构建工具 | Bun bundler | tsdown + pnpm workspace |
| UI 框架 | Ink（React 终端渲染） | TUI（自研终端 UI） |
| 内置工具 | 42 个工具目录 | 插件动态注册 |
| 斜杠命令 | 86 个命令目录 | 通过 commands/ 注册 |
| 多 Agent | Swarm（Tmux/iTerm/进程内） | 子 Agent 注册表 + ACP |
| LLM 支持 | 仅 Anthropic Claude | 30+ 家供应商 |
| 接入方式 | CLI + IDE + Web + Mobile | 40+ 渠道 + TUI + Web |

OpenClaw 也没闲着——自上次分析以来从 45 万行增长到 53 万行，新增了 ACP（Agent Control Plane）、TUI 终端界面、Canvas Host、图像生成、媒体理解、TTS 语音合成、设备配对、密钥管理等等。两个项目都在以惊人的速度演进。

---

## 2. Agent 循环：单线程极简主义 vs 分布式运行时

### Claude Code：代号 nO 的主循环

泄露的源码揭示了 Claude Code 的核心——`QueryEngine.ts` 中一个单线程的 Agent 循环。其设计哲学是**激进的极简主义**：`while(tool_call) → 执行工具 → 将结果回喂 → 重复`。当模型返回不含工具调用的纯文本时，循环便自然终止。

一个异步双缓冲队列（`h2A`）允许用户在 Agent 工作过程中实时注入新指令。上下文压缩器（`wU2`）会在上下文窗口使用率约 92% 时自动触发摘要。一个 token 预算追踪器以 90% 阈值控制续跑，当连续 3 次增量低于 500 token（收益递减）时停止。

```typescript
// Task.ts — 7 task types hint at ambitions far beyond a CLI tool
export type TaskType =
  | 'local_bash'           // Local shell
  | 'local_agent'          // Local sub-agent
  | 'remote_agent'         // Remote agent
  | 'in_process_teammate'  // In-process teammate
  | 'local_workflow'       // Local workflow
  | 'monitor_mcp'          // MCP monitoring
  | 'dream'                // Dream mode (autonomous background execution)
```

### OpenClaw：全新的 ACP（Agent Control Plane）

OpenClaw 的最新版本引入了 `src/acp/`——一个包含审批分类器、会话映射器、策略引擎和事件转换器的 Agent Control Plane。OpenClaw 正在从「Agent 运行时」演化为「Agent 管理平台」。

```
src/acp/
├── approval-classifier.ts    # Approval classifier
├── policy.ts                 # Policy engine
├── session-mapper.ts         # Session mapping
├── translator.ts             # Event translator
├── control-plane/            # Control plane core
└── runtime/                  # ACP runtime
```

分歧依然清晰：Claude Code 选择**单线程 + 激进极简**，OpenClaw 选择**分布式 + 激进灵活**。但 OpenClaw 的 ACP 模块预示着它正朝企业级 Agent 编排发力。

---

## 3. 工具系统：42 个手工打造的工具 vs 基于插件的无限扩展

### Claude Code：BashTool 才是皇冠上的明珠

42 个工具，每个都有独立目录。仅 BashTool 就横跨 18 个文件，实现了 7 层安全机制：分段命令权限、注入检测、危险命令识别、模式校验、沙箱隔离、分类器审批，以及子进程环境变量清洗。

```typescript
// Tool.ts — The tool base class interface is remarkably rich
interface Tool<Input, Output> {
  call(input, context): Promise<Output>
  isReadOnly(input): boolean
  isDestructive?(input): boolean
  checkPermissions(input, context): PermissionResult
  toAutoClassifierInput(input): unknown  // Input for auto-classifier
  renderToolUseMessage(input): ReactNode // Terminal UI rendering
  // ... 20+ methods
}
```

### OpenClaw：新增图像生成、媒体理解、TTS

OpenClaw 的最新工具生态大幅扩张：
- `src/image-generation/` — 图像生成供应商注册表，多模型支持
- `src/media-understanding/` — 音频转写、视频理解、图像分析
- `src/tts/` — 文本转语音，支持多家 TTS 供应商
- `src/web-search/` — 独立的网页搜索运行时
- `src/link-understanding/` — 链接内容理解

OpenClaw 的工具不是 42 个手工打造的内置项，而是一个**可扩展的能力框架**。每个能力模块都有自己的供应商注册表，支持基于插件的扩展。

---

## 4. 多 Agent：可视化 Swarm vs 结构化子 Agent 注册表

### Claude Code：一套完整的 Swarm 系统

这是泄露源码中最大的惊喜。22 个文件实现了完整的多 Agent 协作：

- **Team Lead** 编排任务，将工作委派给多个 **Teammate**
- 三种后端：Tmux 分屏、iTerm2 分屏、进程内
- `SendMessageTool` 实现了 Agent 之间的点对点消息传递
- `coordinator/coordinatorMode.ts` 实现了协调者模式
- `dream` 任务类型暗示了自主的后台执行能力

### OpenClaw：子 Agent 注册表 + 孤儿恢复

OpenClaw 的子 Agent 系统也在演进。最新代码中有 20 多个与 `subagent-registry` 相关的文件，新增了：
- `subagent-orphan-recovery.ts` — 孤儿子 Agent 恢复
- `subagent-registry-cleanup.ts` — 注册表清理
- `subagent-registry-persistence.ts` — 持久化
- `subagent-announce-queue.ts` — 公告队列

差异在于：Claude Code 的 Swarm 是**可视化的**（你能看到多个终端面板同时工作），而 OpenClaw 的多 Agent 是**结构化的**（代码定义了严格的层级与生命周期）。

---

## 5. Agent 定义：声明式 Markdown vs 命令式 TypeScript

即便两边源码如今都已完全可见，这里仍是两个项目分歧最尖锐的地方——分歧不在规模，而在于*它们各自认为 Agent 究竟是什么*。

### Claude Code：一个 Agent = 一份意图文件

Claude Code 插件层的 Agent 是声明式定义的。一个完整的 `code-reviewer` Agent 只不过是一段 YAML 头加一段自然语言提示词：

```markdown
---
name: code-reviewer
description: Reviews code for bugs, logic errors, security vulnerabilities...
tools: Glob, Grep, LS, Read, WebFetch, WebSearch
model: sonnet
---

You are a code reviewer. Your job is to...
(the rest is pure natural-language system prompt)
```

它的 `code-review` 命令走得更远：一个约 200 行的 Markdown 文件描述了一条**编排 10 多个并行子 Agent 的 7 步流水线**——全用纯英文写就，零行代码。运行时解析这段散文，并调度这些 Agent。

**设计哲学：信任模型的理解力。自然语言*就是*代码。**

### OpenClaw：Agent 是一套工程化系统

OpenClaw 通过显式的配置结构（`src/agents/agent-scope.ts`）来解析 Agent——带回退链的模型、工作区隔离、沙箱策略、工具允许/拒绝清单。子 Agent 的派生控制最能说明问题：

```typescript
export function resolveSubagentCapabilities(params: {
  depth: number; maxSpawnDepth?: number;
}) {
  const role = resolveSubagentRoleForDepth(params); // "main" | "orchestrator" | "leaf"
  return {
    role,
    canSpawn: role === "main" || role === "orchestrator",
    canControlChildren: role !== "leaf",
  };
}
```

一个 `leaf` Agent *无法*派生子 Agent——这是在代码中结构性地强制的，而不是靠提示词请求模型「别再递归了」。

**设计哲学：不要信任模型的自我克制。用代码构建确定性的边界。**

正是这一组对比——声明式意图 vs 命令式强制——构成了下文所有其他差异的根源。

---

## 6. 提示词编排：Claude Code 真正的护城河

泄露的源码证实了：**Claude Code 的所有「智能」都源自精心编排的提示词。**没有特殊 API，没有专有协议——CLAUDE.md、Skills、Memories 全都是以纯文本形式注入到上下文窗口的。

`prompts.ts` 包含 20 多个 section 生成函数，动态组装系统提示词，并配有缓存机制（`systemPromptSection()` 只计算一次，`DANGEROUS_uncachedSystemPromptSection()` 每轮都重新计算，但要求给出明确理由）。

最具爆炸性的发现是控制未发布能力的 `feature()` 函数——我们在源码中找到了 **89 个不同的功能开关**，涵盖了一大批已开发但未上线的功能：
- **PROACTIVE / KAIROS**：主动模式，Agent 自主发起行动
- **COORDINATOR_MODE**：一个 Claude 编排多个 Claude
- **TRANSCRIPT_CLASSIFIER**：AFK 模式，用户离开时 Agent 继续工作
- **ant-only internal tools**：仅 Anthropic 员工可用
- **VOICE_MODE**：语音指令模式
- **WEB_BROWSER_TOOL**：通过 Playwright 实现真实浏览器控制
- **KAIROS_DREAM**：自主后台执行 + 自我唤醒
- **KAIROS_GITHUB_WEBHOOKS**：GitHub webhook 触发 Agent
- 此外还有 BUDDY（陪伴精灵）、ULTRAPLAN、ULTRATHINK、VERIFICATION_AGENT 等数十个

这些代码都已经写好了——只是在编译期被排除掉。Anthropic 每两周推出一个新功能的节奏并不是因为他们开发得快，而是因为**一切早已完成**。

---

## 7. 安全模型：分类器审批 vs 代码强制

Claude Code 的 Auto 模式使用一个**独立的分类器**来审批每一步操作（分类器输入会剥离工具结果以防注入），底层辅以操作系统级的沙箱。三种权限层级：Plan（只读）、Default（每步确认）、Auto（分类器审批，标注为「research preview」）。

OpenClaw 采用**代码强制**——工具画像（minimal/coding/messaging/full）、仅所有者过滤、路径穿越检测，以及一套执行审批系统（`src/infra/exec-approvals.ts`，涉及 20 多个相关文件）。

两者都不信任模型的自我克制。Claude Code 用另一个 AI 去监督 AI，OpenClaw 用代码去约束 AI。

---

## 8. 彩蛋

- **187 个 Spinner 动词**：从 `Clauding` 到 `Flibbertigibbeting` 再到 `Whatchamacalliting`——用户甚至可以自定义
- **Buddy 陪伴精灵**：`src/buddy/` 里藏着一个终端陪伴角色，有自己的提示词和精灵图形
- **完整的 Vim 引擎**：motion、operator、text object、状态转换——不只是键位绑定，而是一个完整的 Vim 实现
- **Bridge 远程控制**：30 个文件实现了用手机/浏览器控制本地 Claude Code 会话，带 JWT 鉴权和可信设备管理

---

## 9. 泄露的影响与个人思考

### 对 Anthropic 的影响

这已经是 Claude Code 第二次通过 source map 泄露了（第一次是 2025 年 2 月）。同一个错误犯两次，说明 Anthropic 的 CI/CD 流水线在构建产物校验上存在系统性缺口。话虽如此，这次泄露涉及的是客户端实现代码——没有模型权重，没有用户数据——所以直接的安全风险有限。

真正的影响在于**竞争情报**。51 万行精心打磨的 TypeScript，包含完整的提示词编排策略、安全模型实现、多 Agent 协作架构，以及控制未发布能力的 89 个功能开关——Anthropic 来之不易的全部工程 know-how 如今都公开了。

### 对中国技术生态的影响：一波 Claude Code 克隆潮即将到来

这是我最想说的一点。

Claude Code 源码泄露对中国 AI 编程工具生态的冲击，可能比对 Anthropic 自身更大。原因很简单：**51 万行经过实战检验的 TypeScript 代码，就是一份现成的产品蓝图。**

可以预见的是：
1. **大厂会快速跟进。** Claude Code 的架构（单线程主循环 + 提示词编排 + 工具系统 + 多 Agent Swarm）如今已是一套被验证过的产品范式。中国的 AI 编程工具（通义灵码、豆包 MarsCode、百度 Comate 等）现在有了一份详尽的参考实现。
2. **开源「致敬」项目会大量涌现。** 已经有人在 GitHub 上整理反混淆后的源码了，各种语言的重新实现会随之而来。
3. **提示词编排方法论会被广泛采用。** Claude Code 的 20 多个动态 section 组装、缓存策略、功能开关控制——这套提示词工程方法论，比任何研究论文都更实用。
4. **安全模型会被研究并改进。** BashTool 的 7 层安全检查、Auto 模式的分类器审批——这些实现细节对整个行业的 Agent 安全实践都是宝贵的参考资料。

但我也要泼点冷水：**抄架构容易，抄经验难。** Claude Code 那 51 万行代码里,有相当大一部分花在 Ink 终端渲染、Vim 模式、主题、Buddy 精灵、187 个 spinner 动词——这些「没用」的细节上。恰恰是这些细节让 Claude Code *用起来对味*。这种产品手感，不是 fork 一个仓库就能复制的。

### 对 OpenClaw 的影响

作为一个开源项目，OpenClaw 反而可能从这次泄露中受益。两个原因：

1. **设计方向得到验证。** OpenClaw 的许多架构决策（基于插件的工具系统、多模型回退、子 Agent 深度控制）在 Claude Code 源码中都有对应物。两个团队独立思考，却得出了相似的结论。
2. **差异化定位如今一目了然。** Claude Code 是一款单厂商、面向开发者的精雕细琢的工具；OpenClaw 是一个多厂商、多平台的 Agent 运行时。这次泄露把这一定位差异从「猜测」变成了「确证」。

OpenClaw 的最新新增功能——ACP（Agent Control Plane）、TUI、设备配对、密钥管理——显示它正朝着企业级 Agent 平台的领域推进，而这正是 Claude Code 当前尚未覆盖的方向。

### 个人观点

这次泄露带来的最大启示不是某个技术细节，而是对一种产品哲学的确认：

**AI Agent 的核心竞争优势不在模型，而在工程。**

Claude Code 和 OpenClaw 都是 50 万行级别的 TypeScript 工程成果。它们的「智能」来自精心编排的提示词、精确控制的安全边界，以及大量的 UX 打磨——而不是来自某种神秘的模型能力。

这意味着，AI Agent 的竞争,本质上是一场**工程能力的竞争**。谁能把提示词编排做得更精确、安全模型做得更深入、用户体验打磨得更细致——谁就赢。

模型是基础设施，工程才是护城河。

---

## 10. 你该基于哪种方案来构建？

两个项目的分歧归结为一个问题：**AI 模型的理解力能否取代代码的确定性？** Claude Code 的答案是*能*，OpenClaw 的答案是*不能*。两者都没错——取决于你要交付的是什么。

**在以下情况选择 Claude Code 路线（声明式 / Markdown 驱动）：**

- 你的 Agent 面向单一、定义明确的场景（代码评审、文档生成、功能开发）
- 你信任底层模型，愿意用提示词工程替代代码
- 你希望非程序员也能定义 Agent 行为
- 你的用户是开发者，你的界面是终端或 IDE
- 你把快速迭代看得比运行时控制更重要

**在以下情况选择 OpenClaw 路线（命令式 / 代码驱动）：**

- 你的 Agent 必须支持多家 LLM 供应商
- 你需要对行为边界做精确控制，尤其是在多用户场景下
- 你必须跨平台部署（消息渠道、API、原生客户端）
- 你需要不能依赖模型「自律」的确定性安全保证
- 你在构建的是一个 Agent *平台*，而非单个 Agent

### 融合正在到来

最有意思的观察是，这两种架构正在**从相反方向彼此靠拢。** Claude Code 不断加入代码级的控制——沙箱、托管设置、通过外部脚本实现的确定性 hook。OpenClaw 则不断加入声明式配置——YAML 技能、Markdown 知识库、约定优于配置的模式。

最终答案很可能是一种混合形态：在模型可被信任的地方用声明式（创意任务、知识综合、代码生成），在不可信任的地方用命令式（安全边界、多租户隔离、金融交易）。谁能想清楚这条界线该画在哪里，谁就将定义下一代 AI 基础设施。

---

*本文基于 2026 年 3 月 31 日泄露的 Claude Code v2.1.88 源码（1,884 个 TypeScript 文件，512,664 行代码）与 OpenClaw 最新的 main 分支（3,044 个非测试 TypeScript 文件，约 530,000 行代码）撰写。*

*免责声明：本文仅用于技术分析与学术讨论。对泄露的 Claude Code 源码的分析均基于公开可得的信息。*

---

**两个项目的资料页**：[Claude Code](/tools/claude-code/) 与 [OpenClaw](/tools/openclaw/) ——
定位、模型支持和上手方式分别整理在各自页面上。源码规模相近不代表适用场景相同，
真要选一个，从这两页对照着看比数行数更有用。

---

## 常见问题

### 泄露的 Claude Code 源码规模有多大？和 OpenClaw 比如何？

泄露的 Claude Code v2.1.88 包含 1,884 个 TypeScript/TSX 文件、约 51.2 万行代码（不含测试）；OpenClaw 最新 main 分支有 3,044 个非测试 TypeScript 文件、约 53 万行。Claude Code 内置 42 个工具目录和 86 个斜杠命令，仅支持 Anthropic Claude；OpenClaw 采用插件动态注册，支持 30 多家 LLM 供应商。

### Claude Code 和 OpenClaw 最核心的架构差异是什么？

Claude Code 走声明式路线：单线程 Agent 主循环、用 Markdown + YAML 定义 Agent、靠提示词编排驱动智能——信任模型的理解力。OpenClaw 走命令式路线：显式 TypeScript 配置、在代码中强制子 Agent 派生深度控制，并引入 ACP（Agent Control Plane）。有趣的是，两种架构正在从相反方向彼此靠拢。

### 泄露的 Claude Code 源码里发现了哪些未发布功能？

源码中有 89 个功能开关控制着已开发但未上线的能力，包括 PROACTIVE/KAIROS 主动模式、COORDINATOR_MODE（一个 Claude 编排多个 Claude）、VOICE_MODE 语音指令、基于 Playwright 的浏览器控制、KAIROS_DREAM 自主后台执行、GitHub webhook 触发，以及 Buddy 陪伴精灵等。这些代码都已写好，只是在编译期被排除。


---

## 参考资料

- [Claude Code repository](https://github.com/anthropics/claude-code) — GitHub
- [OpenClaw repository](https://github.com/openclaw/openclaw) — GitHub
- [Claude Code documentation](https://code.claude.com/docs) — Anthropic
- [OpenClaw documentation](https://docs.openclaw.ai/) — OpenClaw
