Claude Code 整体架构与设计

一篇对 Claude Code 代码库架构的深度拆解显示,Anthropic 的这款编程 Agent 并非用单一程序硬撑所有场景,而是用“同核多形态”的分层设计,将 CLI、SDK、MCP 服务三种交付形态统一在一套代码库中。这种架构的选择直接影响了它扩展新工具和新能力的效率,也解释了为什么它能快速适配不同的…

一句话看懂:一篇对 Claude Code 代码库架构的深度拆解显示,Anthropic 的这款编程 Agent 并非用单一程序硬撑所有场景,而是用“同核多形态”的分层设计,将 CLI、SDK、MCP 服务三种交付形态统一在一套代码库中。这种架构的选择直接影响了它扩展新工具和新能力的效率,也解释了为什么它能快速适配不同的开发环境。

事件核心:发生了什么

这篇发布在掘金社区的技术分析文章(作者署名“百工蜂Agent”,标注日期为2026年9月1日)详细拆解了 Claude Code 的工程实现。文章指出,Claude Code 是一个基于大模型决策、由约数十万行 TypeScript 代码执行动作的编程 Agent,共有命令行(CLI)、可嵌入 SDK、MCP 服务三种形态,但三者共享同一条代码库。

代码库被划分为五层:入口层(每种形态一个入口文件)、装配层(启动时初始化)、引擎层(驱动对话主循环)、能力层(存放工具、命令、服务)以及支撑层(权限、编排、扩展)。文中引用了大量源码注释和函数级细节,例如在启动阶段,系统会并行预取系统配置和钥匙串读取,以压缩 CLI 冷启动时间;在编译期,主文件会通过 61 处 feature(...) 开关裁剪不需要进入产物的功能。

最关键的架构决策是:拥有几十万行代码的引擎核心(query.ts)中,找不到任何具体工具的实现。引擎只面向工具协议(Tool.ts)编程,工具清单由装配层在启动时根据环境动态注入。新增一个工具,只需要在 src/tools/ 下新建目录并在注册表中登记,核心主循环代码完全不需要改动。

为什么重要

这一架构解读的价值在于揭示了 Anthropic 对 Agent 产品工程化的一种范本。目前市面上不少 AI 编程助手倾向于将工具调用逻辑直接耦合进主循环,但 Claude Code 选择让“稳定核心”与“易变能力”彻底解耦。

这种设计的直接收益是回归测试成本极低。按照文章逻辑,无论是新增 BashTool 还是接入一个新的 MCP 服务端,都不需要回归测试最核心的对话主循环。对于开发者生态而言,这意味着外围贡献者可以相对安全地提交新工具或新命令,而不用担心破坏底座稳定性。

同时,CLI 场景下对冷启动的极致优化(并行 I/O、懒加载、编译期裁剪)也反映出 Anthropic 对开发者体验的重视——在一个每次执行都需要重新加载进程的终端环境里,首字延迟直接决定用户留存。

对用户/开发者/创作者的影响

对使用 Claude Code 的开发者:理解该架构有助于解释为什么某些时候工具使用策略看起来“保守”。权限系统被设计为独立于各工具实现的一层,所有模型动作都必须经过“放行/拒绝/询问用户”的三态检查。如果你在团队中部署该工具,这种集中式权限模型意味着安全策略可以被统一配置和审计,而不是散落在各个工具脚本里。

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

对构建 Agent 应用的开发者:文章提供了一个可借鉴的工程参考:三层模型(引擎只管协议,不管实现)可以极大提升 Agent 的长期可维护性。如果你正在用大模型 API 开发类似的自研 Agent 框架,文中的“自包含模块”原则(一个能力一个目录)值得纳入设计评审。

对技术决策者:三种交付形态(CLI、SDK、MCP)共享核心代码,意味着 Anthropic 在功能迭代时不必维护多套分支,这有助于保持不同接口(包括MCP 服务)之间的工具行为一致性。

值得关注的后续

1. 多 Agent 编排层的外围化程度。 文章将 coordinator/(多 Agent 编排)归入支撑层,却未提供该目录内部的接口隔离细节。若后续 Claude Code 的“派生子 Agent”能力遭遇瓶颈,问题可能出在这一层与引擎层的历史包袱中。

2. 能力层是否会向第三方彻底开放。 目前架构虽然支持“新增目录”即可扩展,但普通开发者能否不 fork 核心代码、仅通过插件或Skills机制接入自有工具,仍取决于 Anthropic 对外部扩展点的接口稳定承诺。

3. 编译期裁剪与动态环境的矛盾。 既然存在条件编译,那么“按需加载”到底是依据运行环境自动切换(如 CI 模式),还是需要用户手动指定特征开关?目前公开信息显示,这一块的配置透明度尚不明确,可能影响企业在离线或内网环境下的部署适配。

来源:juejin

celebrityanime
celebrityanime
文章: 21621

发表回复

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