嗨站  /  架构总览 /  Claude Code 源码架构总览

Claude Code 源码架构总览

先看整体图

如果只从源码目录去看,很容易被大量文件吓住。但从主干关系看,Claude Code 的架构并不乱,它大致可以抽象成下面这张图:

  • main.tsx 启动入口
  • 命令行参数 / 配置 / 环境初始化
  • REPL 与终端 UI
  • QueryEngine 对话主循环
  • Tool 抽象层
  • 文件 / Shell / Web / MCP / LSP / Agent 等工具
  • context.ts 上下文注入
  • AppStateStore 状态管理
  • commands.ts 命令系统
  • services/* 扩展服务(MCP / LSP / 插件 / Skills / 远程会话)

第一层:启动与装配

main.tsx 的职责非常重,它不像普通 CLI 那样只是简单解析参数后执行一个函数。它会在启动阶段做很多装配工作:预热性能敏感模块、加载配置与托管设置、初始化认证/遥测/策略限制、初始化 MCP/LSP/插件/Skills、汇总命令和工具、根据模式启动 REPL/非交互流程或远程会话。

第二层:QueryEngine 主循环

QueryEngine.ts 是 Claude Code 的心脏。它负责把一次用户任务转化为连续推进的执行过程。它管理的核心对象包括:消息历史、工具可用性、权限拒绝记录、文件缓存、token 与成本统计、中断控制、会话级状态延续。

第三层:工具系统

Tool.ts 定义工具协议,tools.ts 负责注册和筛选工具。这层的作用,是把底层能力统一包装成模型可调用的工具接口,例如:读写文件、Bash/PowerShell、搜索与 glob、MCP 资源读取、LSP 能力调用、AskUserQuestion、Agent/Team/Task 相关工具。

第四层:命令系统

除了模型可调用工具,Claude Code 还有大量显式命令。commands.ts 聚合了很多斜杠命令,例如:配置类、会话类、审查类、插件类、MCP 类、计划类、状态与统计类。命令系统服务的是”用户显式控制”,工具系统服务的是”模型隐式执行”,两者职能不同。

第五层:上下文与状态

  • context.ts 负责准备 Git 状态、CLAUDE.md、日期等上下文
  • AppStateStore.ts 管理 REPL、任务、通知、远程连接、MCP、插件等 UI 与会话状态

第六层:扩展能力

Claude Code 早就不是一个封闭工具,而是平台化形态:services/mcp/*, services/lsp/*, plugins/*, skills/*, remote/*。这些模块意味着 Claude Code 不只是执行内置工具,而是在持续向”可扩展工程智能体平台”演化。

小结

Claude Code 的源码架构可以概括成一句话:用 main.tsx 把配置、命令、工具、上下文和扩展能力装配起来,再由 QueryEngine 驱动整个工程任务循环。

Leave a Comment

您的邮箱地址不会被公开。 必填项已用 * 标注