乐于分享
好东西不私藏

Claude Code 源码揭秘:为什么它比普通 LLM 工具强这么多?

Claude Code 源码揭秘:为什么它比普通 LLM 工具强这么多?

Claude Code 源码揭秘:为什么它比普通 LLM 工具强这么多?

你有没有想过,为什么同样是调用 Claude API,Claude Code 的体验比那些”套壳工具”好那么多?有人说是 prompt 写得好,有人说是工具多,有人说是模型本身强。这些都对,但都没说到点子上。最近,有人把@anthropic-ai/claude-code的 npm 包拆了,从 cli.js.map 里还原出4756 个源码文件。这个数字本身就说明了一个问题:这不是一个 CLI 包装器,而是一个完整的软件系统。

本文将从源码结构出发,揭示 Claude Code 真正的技术护城河。

014756 个文件意味着什么?

先看一组数据:

| 对象 | 数量 ||------|------|| 提取的源码文件 | 4756 个 || 核心模块 | 10+ 个 || 内置命令 | 20+ 个 || 工具定义 | 15+ 个 |

这个规模意味着什么?作为对比,一个典型的”LLM + 工具调用”项目,核心代码可能只有几百行。

Claude Code 的源码顶层结构是这样的:

src/├── entrypoints/     # 入口层├── constants/       # prompt、系统常量、风险提示├── tools/           # 工具定义与实现├── services/        # 运行时服务(tools、mcp、analytics)├── commands/        # slash command 系统├── hooks/           # hook 系统├── plugins/         # 插件生态├── coordinator/     # 协调器模式├── memdir/          # 记忆 / memory prompt├── tasks/           # 本地任务、远程任务、异步 agent└── bootstrap/       # 状态初始化
关键洞察

这不是”工具包装器”该有的结构。这是Agent Operating System的架构。

02平台化思维:一个 Runtime,多个入口

看入口层的设计,就能理解 Claude Code 的定位:

src/entrypoints/├── cli.tsx          # 命令行入口├── init.ts          # 初始化流程├── mcp.ts           # MCP 模式└── sdk/             # SDK

同一个 agent runtime,可以服务:

✅ 多入口架构

本地 CLI:用户直接在终端使用MCP 模式:作为 MCP server 被其他应用调用SDK 模式:嵌入到其他产品中

这是一种平台化思维。Claude Code 不是单一产品,而是一个可以被多种场景消费的运行时平台

03命令系统:不只是快捷键,是生态入口

src/commands.ts 暴露出的命令列表,暴露了系统的野心:

命令 功能
/mcp MCP服务器管理
/memory 记忆系统管理
/permissions 权限配置
/hooks Hook管理
/plugin 插件管理
/skills 技能系统
/tasks 任务管理
/plan 规划模型
/review 代码审查
/agents Agent管理
生态入口

命令系统本身就是生态入口。用户通过命令与系统运行时交互,插件和技能通过命令注册自己。这比”工具列表”高明得多。

04Tools 层:从”回答器”到”执行体”

这是 Claude Code 最核心的设计之一。确认的工具包括:

工具 职责
FileRead 读文件
FileEdit 编辑文件
FileWrite 写文件
Bash 执行 shell 命令
Glob 文件搜索
Grep 内容搜索
TodoWrite 任务管理
TaskCreate 创建子任务
AskUserQuestion 与用户交互
Skill 执行技能
Agent 调度子 Agent
MCPTool MCP 工具调用
核心设计

工具层的本质是什么?把模型从”回答器”变成”执行体”。每一个工具调用都被治理了——校验、权限、Hook、追踪、错误处理。

05为什么它比普通 LLM 工具强这么多?

回到开头的问题。Claude Code 真实的护城河是:

层级 内容
Prompt architecture 模块化动态拼装,缓存边界优化
Tool runtime governance 权限、Hook、校验、追踪一体化
Permission model 用户拒绝不能重试,风险动作需确认
Hook policy layer PreToolUse / PostToolUse 拦截点
Agent specialization Explore / Plan / Verification 分工
Skill workflow packaging prompt-native 工作流打包
Plugin integration prompt + metadata + runtime constraint
MCP instruction injection 工具和行为说明同时注入
Prompt cache optimization 动静分离,token 预算管理
Async/background lifecycle 任务系统,异步 Agent
护城河真相

少一个都行,但会显著掉”手感”。

06实战启示

1. 不要把 prompt 当文本写

把 prompt 当作可编排的运行时资源。静态部分做缓存优化,动态部分按需注入。这是基础设施级思维。

2. 工具调用需要治理

直接 tool.call() 是不够的。你需要校验、权限、Hook、追踪、错误处理。这是一条 pipeline,不是一次函数调用。

3. 命令系统是生态入口

不要只暴露工具列表。命令系统让能力主动可见,让插件和技能有注册入口。

4. 平台化思维决定上限

设计时考虑多入口:CLI、SDK、API、MCP。一个 runtime 服务多种场景,扩展性才能上去。

5. “好行为”要制度化

Claude Code 在 prompt 里明确写了:不要乱加功能、不要过度抽象、不要瞎重构。这不是靠模型”自觉”,而是写进规则里。

07结语

Claude Code 的强,不是来自某个”神秘 system prompt”,而是来自一个完整的软件工程系统。

✅ 核心结论

它是Agent Operating System,不是 LLM wrapper。这才是技术护城河的真正含义:不是一个 prompt、一个工具、一个模型,而是把 prompt、tool、permission、agent、skill、plugin、hook、MCP、cache 和产品体验统一起来的系统工程能力

参考资料:Claude Code 源码深度研究报告(基于 npm 包 cli.js.map 还原)