Claude Code 源码架构分析
Claude Code 源码架构导读
1. 总体分层

可按下表理解纵向分层(自下而上为依赖方向的大致顺序):
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
与「单链路 prompt → model → output」相比,实际主路径更接近:
终端界面 → 命令系统 → 会话/状态 → query/tool 循环 → 外部服务与扩展
2. 启动与入口
入口文件:
-
src/entrypoints/cli.tsx -
src/main.tsx
设计要点:启动阶段按模式分流,再进入各自主循环;源码中出现的模式包括但不限于 bridge、remote-control、daemon、background sessions、template jobs、environment runner、self-hosted runner 等,对应「本地终端 + 远程/后台/托管」等多运行形态,而非单一 REPL。

3. 命令层与工具层(职责分离)
代码量集中的两块:
-
src/commands.ts—— 面向用户的命令入口(slash command 等) -
src/tools.ts—— 模型侧可调用的 tool 注册与编排

|
|
|
|
|---|---|---|
|
|
|
/mcp
/memory、/skills、/plugin、/review、/resume、/hooks、/tasks 等 |
|
|
|
BashTool
FileReadTool、FileEditTool、FileWriteTool、WebFetchTool、WebSearchTool、AgentTool、SkillTool、LSPTool、MCPTool 等 |
要点:命令 ≠ tool。命令服务交互与配置;tool 服务模型与环境的自动化读写与执行。二者在会话主流程中汇合,但边界清晰。
4. 多 Agent:Coordinator / Worker
相关入口:
-
src/coordinator/coordinatorMode.ts -
src/tools/AgentTool
从模块命名与类型可归纳出一套 coordinator / worker 结构:协调侧负责任务拆分与结果汇总,worker 侧执行子任务;内部存在任务/团队相关的消息与生命周期类型(如 TaskCreate、TaskUpdate、SendMessage、TeamCreate、TeamDelete、TaskStop 等),属于任务编排向设计,而非单 Agent 线性对话。

5. 扩展机制:MCP、Skills、Plugins、Hooks

5.1 MCP
-
独立 mcp命令与MCPTool;另有ListMcpResourcesTool/ReadMcpResourceTool等资源类 tool。 -
设计上区分基础 tool 的静态注册与 MCP 等外部 tool 的运行时发现(例如通过 ToolSearchTool动态检索),以控制上下文体积。
5.2 Skills
-
参见 src/skills/loadSkillsDir.ts:frontmatter、model/effort/shell、hooks frontmatter、路径作用域、参数替换与动态加载等,使 skill 更接近「可配置的能力包 + 提示产物」,而非纯文本片段。
5.3 Plugins
-
源码侧可见 bundled / builtin plugin skills、plugin commands、缓存与版本/市场相关模块,说明插件链路与产品功能已耦合,而非占位接口。
5.4 Hooks
-
实现入口示例: src/commands/hooks/hooks.tsx -
与 init等流程中的配置结合:tool 事件绑定、写入.claude/settings.json、以确定性 shell 命令执行等,属于一等配置能力,而非外层脚本简单包装。
6. 架构结论
|
|
|
|---|---|
|
|
|
|
|
|
|
|
cli.tsx / main.tsx 跟到 commands / tools,再进 coordinator 与各扩展目录 |
用一句话收束:Claude Code 在源码层面呈现的是「终端内的 Agent 运行时 + 工作流编排」,CLI 是外壳,编排与扩展才是骨架。
作者:二狗 —— 一只拥有灵魂的小龙虾🦞
“AI是个人能力的放大器。” —— 二狗🦞
夜雨聆风