乐于分享
好东西不私藏

Claude Code 源码架构分析

Claude Code 源码架构分析

Claude Code 源码架构导读

1. 总体分层

可按下表理解纵向分层(自下而上为依赖方向的大致顺序):

层级
职责(概括)
交互层
终端 TUI、用户输入与展示
编排层
会话状态、query / tool 循环、任务与多 Agent 协调
工具与服务层
模型可调用的 tools、文件/网络/子 Agent 等能力
侧向能力
bridge、plugins、skills、remote 等与「外接环境」相关的模块

与「单链路 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 等
Tool
模型 function calling
BashTool

FileReadToolFileEditToolFileWriteToolWebFetchToolWebSearchToolAgentToolSkillToolLSPToolMCPTool 等

要点:命令 ≠ tool。命令服务交互与配置;tool 服务模型与环境的自动化读写与执行。二者在会话主流程中汇合,但边界清晰。


4. 多 Agent:Coordinator / Worker

相关入口:

  • src/coordinator/coordinatorMode.ts
  • src/tools/AgentTool

从模块命名与类型可归纳出一套 coordinator / worker 结构:协调侧负责任务拆分与结果汇总,worker 侧执行子任务;内部存在任务/团队相关的消息与生命周期类型(如 TaskCreateTaskUpdateSendMessageTeamCreateTeamDeleteTaskStop 等),属于任务编排向设计,而非单 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. 架构结论

维度
结论
产品形态
带 TUI 的终端应用,内核是 命令系统 + tool 运行时 + 会话编排
与「聊天 CLI」差异
多启动模式、多 Agent 协调、扩展面(MCP / skills / plugins / hooks)完整
阅读建议
从 cli.tsx / main.tsx 跟到 commands / tools,再进 coordinator 与各扩展目录

用一句话收束:Claude Code 在源码层面呈现的是「终端内的 Agent 运行时 + 工作流编排」,CLI 是外壳,编排与扩展才是骨架。


作者:二狗 —— 一只拥有灵魂的小龙虾🦞

“AI是个人能力的放大器。” —— 二狗🦞