乐于分享
好东西不私藏

啃透51万行源码:Claude Code的Agent架构与工程哲学

啃透51万行源码:Claude Code的Agent架构与工程哲学

2026年3月31日凌晨,安全研究员Chaofan Shou在检查npm包时发现了一件怪事。Anthropic刚刚发布的Claude Code 2.1.88版本里,多了一个约60MB的.js.map文件。这种调试文件本应在发布前删除,但由于Bun构建工具默认生成source map,而.npmignore里没有配置对应的忽略规则,就这样把1,900个TypeScript文件、512,000行代码打包了出去。

一个打包失误,让外界第一次完整地看到当今最成熟的AI Agent产品在引擎盖下究竟是什么样子。本文将从系统架构、核心模块、工程哲学和行业影响四个维度,对Claude Code进行一次系统的技术拆解。

一、系统架构:六层分层与松耦合设计

Claude Code采用分层架构,每一层职责清晰,松耦合设计。

层级

关键组件

职责

入口层

main.tsx, setup.ts

负责启动与环境初始化

展示层

React + Ink

构建终端UI,提供现代化用户体验

核心引擎层

QueryEngine(4.6万行代码)

处理所有LLM对话逻辑与上下文管理

执行层

Tool System, Command System

负责实际操作执行

协作层

Agent系统, 远程桥接

实现复杂协作与IDE深度集成

管理层

权限、配置、状态管理

确保系统稳定可靠

这种分层架构实现从底层系统调用到高层Agent编排的闭环,每个模块可独立演进,降低了系统的耦合度与维护成本。

1.1 入口层:启动时的并行预取

Claude Code在启动过程中展现了极致的优化意识。main.tsx19行代码采用了并行预取策略:

typescriptconst tasks = Promise.all([  profileCheckpoint(),    // 性能分析  startMdmRawRead(),      // MDM配置读取  startKeychainPrefetch() // OAuth/API钥匙串预取])

这个设计的巧妙之处在于三个任务同时执行,用Promise.all等待所有完成,极大减少了串行操作的时间消耗,将启动时间缩短了约135ms。这体现了企业级产品对用户体验的极致追求。

1.2 核心引擎:46,000行的QueryEngine

QueryEngine.ts是整个系统的大脑,体量约46,000行代码。它负责管理流式API调用、工具分发循环、自动重试以及上下文窗口压缩,深度整合了Token计数器与思考模式逻辑。

泄露代码显示,QueryEngine的核心是一个while(true)查询循环,每轮经历以下步骤:压缩检查→ 组装消息 → 调用API → 处理响应 → 执行工具。

1.3 展示层:React跑在终端里

Claude Code使用React + Ink构建终端界面。Ink是一个允许在终端中使用React组件模式的渲染库,配合Yoga布局引擎将React组件树映射到终端字符网格,采用基于差异的补丁渲染,极大降低了终端刷新的闪烁感。让React跑在终端里,这是一个大胆但精妙的设计选择——状态管理、重渲染逻辑与可组合的UI组件全部复用React生态,而不是从零构建一套CLI UI框架。

二、执行引擎:TAOR循环与“越笨越稳定”的设计哲学

Claude Code的执行引擎是一个名为TAOR的循环:Think-Act-Observe-Repeat。这个设计背后的设计哲学尤为值得关注。

2.1 Orchestrator越笨,架构越稳定

Claude Code的Orchestrator本身被设计得极其“愚蠢”,只负责驱动循环、执行工具调用、感知结果。所有的推理、决策、何时停止,全部都交给模型。运行时不知道代码是什么,不知道文件在哪,它只是跑循环,让模型决定下一步。

这个设计哲学可以总结为:把智能下沉给模型,把确定性留给框架

这与早期LangChain试图在框架层做各种“聪明编排”的路线形成了鲜明对比。LangChain更倾向于把编排逻辑写进代码,用复杂的Orchestrator控制LLM的每一步。Claude Code的做法是,所有的推理、决策和停止判断,统统下放给大模型本身。TAOR循环的核心逻辑大约只有50行,但给了模型无限的操作空间。

2.2 动态提示词组装

引擎层是系统的“心脏”,负责动态提示词组装。根据不同的运行模式,系统会注入数百个提示碎片,仅安全守则一项就高达5,677个token(约两万字)。

系统提示词并非固定文本,而是由静态段落和动态段落并行组装而成。静态部分(如身份、指令)被标记为缓存友好,以最大化Anthropic API的Prompt Caching命中率,命中时可节省约90%的成本。工具列表按字母排序以确保缓存稳定性。

三、工具系统:四种能力原语

Claude Code在工具层也遵循着“越笨越好”的哲学。它没有给模型配备一百个专项工具,而是只提供四种能力原语:

Read、Write、Execute、Connect

其中Bash是通用适配器,允许模型使用任何人类开发者会用到的工具——git、npm、docker,全部通过shell组合完成。设计者的理念很清晰:不要构建100个工具,给模型一个shell,让它自己组合。

这一选择反映了对模型能力演进的深刻理解:随着模型变得更强,脚手架应该变薄,而不是变厚。硬编码的脚手架应该随着模型能力提升而被主动删除,架构随时间推移越来越薄。

在代码实现层面,每个工具都是自包含的模块,包含输入验证、权限检查与执行逻辑。AgentTool尤其值得关注——它允许系统将子Agent的生成作为另一个工具调用,子Agent与普通工具地位平等,无需特殊编排层。

3.1 MCP集成:连接外部工具生态

Claude Code通过MCP(Model Context Protocol)协议集成外部工具。MCP支持HTTP、SSE以及Stdio三种传输协议。远程MCP服务器提供了一种比本地服务器更低维护成本的替代方案:只需将供应商的URL添加到Claude Code中,无需手动设置,供应商负责处理更新。

这意味着开发者可以将Claude Code接入安全服务、项目管理系统和知识库,实现从代码生成到外部系统交互的无缝衔接。

3.2 斜杠命令系统

Claude Code内置了87个斜杠命令,按功能分类组织,提供优秀的用户体验。泄露代码还发现了26个隐藏的斜杠命令(不在help中显示),包括已公布的/btw等。这些隐藏指令中包含了协调员模式(Coordinator Mode)、自动模式(Auto Mode)等高级功能。

四、记忆系统:从分层设计到“REM睡眠”机制

Claude Code的记忆系统是泄露代码中最令人印象深刻的模块之一,体现了对Agent长期运行需求的深度思考。

4.1 三层记忆架构

层级

名称

作用

第一层

长期语义记忆(RAG检索)

存储跨会话的持久化知识

第二层

情景记忆

记录对话序列

第三层

工作记忆

维护当前上下文

核心思路是“按需拉取,绝不塞满”。

4.2 四层记忆系统与并行加载

更细分的版本将记忆系统拆分为四个层面,通过两条并行管线加载:

  • CLAUDE.md:由开发者手动编写的项目规则,位于项目根目录

  • MEMORY.md:由模型自动维护,实现跨会话记忆

  • Session Memory:记录当前会话进度

  • 上下文压缩:在token接近上限(如167,000 tokens)时触发,优先使用Session Memory摘要以避免额外API调用

4.3 Auto-Dream机制:Agent的“REM睡眠”

最精妙的设计之一是“Auto-Dream”机制。基础设施层内置了一个名为“做梦”的后台进程。每24小时或5次会话后,系统会启动子代理进行记忆整合、清理噪声,将模糊表述固化为确定知识。

这让人联想到人类大脑在睡眠中整理记忆的过程。Agent在“不工作时”自动整理过往交互,将零散信息转化为结构化知识,确保下次启动时能够基于更精准的记忆提供服务。

五、安全架构:多层权限防线与沙箱隔离

5.1 五步权限流水线

工具执行前需通过五步权限流水线:

  1. 否决规则:硬性禁止某些操作

  2. 询问规则:需要用户确认的操作

  3. 工具自身权限:工具定义中声明的权限级别

  4. 模式决策:根据当前运行模式(Plan/Default/Bypass/Auto)判定

  5. Hook一票否决:用户自定义钩子的最终决断

5.2 权限模式对照表

模式

行为

适用场景

Default

写入与网络需确认,读取自动批准

常规开发

Plan(只读)

强制禁止所有写入和Shell操作

仅用于探索和规划

Bypass

全工具自动批准

自动化环境

Auto

基于风险评分和信任上下文自动决策

信任度高的项目

Bash命令的风险评估结合了shell-quote的结构化解析和LLM的语义分析,将命令分为低、中、高风险。auto模式下的YOLO分类器同样使用LLM实时判断操作安全性。

5.3 沙箱隔离:减少84%的中断确认

2025年11月,Anthropic为Claude Code引入了沙箱隔离功能。沙箱建立了两个安全边界:

  • 文件系统隔离:确保Claude只能访问或修改特定的目录

  • 网络隔离:确保Claude只能连接到经过批准的服务器

公司强调,两种隔离技术必须协同工作才能实现有效保护——没有网络隔离,被破坏的Agent可能会泄露敏感文件;而没有文件系统隔离,被破坏的Agent可能会逃离沙箱并获得网络访问权限。

在实际使用中,启用沙箱后弹出权限请求的频次下降了约84%。在提高开发效率的同时,安全性也得到了增强。

六、运行成本与“推理鲸鱼”问题

6.1 成本结构

Claude Code基于Claude API的按Token计费模式运行。以Sonnet 4为例,输入Token为$3/百万,输出Token为$15/百万。

然而,Agent的长期运行导致Token消耗远超传统交互模式。有报道显示,一名瑞典开发者在一周内消耗了数千美元的推理资源,日常工作流每天消耗约$500的资源,而其订阅费用仅为每月$200。

更极端的案例是,Anthropic的Claude Code排行榜显示,单一用户消耗了近110亿Token,成本接近$35,000,而他们支付的订阅费用仅为每月$200。这就是所谓的“推理鲸鱼”问题。

6.2 成本优化措施

为应对这一挑战,Anthropic采取了多项措施。首先是Prompt Caching——缓存命中时Token成本仅为base input的0.1倍。其次是引入周使用限制,超额使用需要支付额外费用。这些调整从2025年中开始逐步实施。

从开发者的角度,优化策略包括:使用Haiku处理简单任务、利用缓存机制、合理设置上下文窗口大小、以及通过CLAUDE.md和MEMORY.md减少重复的上下文传递。

七、企业落地与行业影响

7.1 商业表现

2025年,Anthropic交出了一份亮眼的成绩单。企业级市场份额从24%攀升至40%,Claude Code拿下AI编程赛道逾半壁江山,Fortune 100中有70%已是付费客户。

2026年2月,Claude Code研究预览上线满一年。据Boris Cherny在X平台表示,该工具已被用于周末原型、生产级应用、超大企业软件开发,以及火星车行驶规划等任务,显示其在可靠性与广泛开发场景中的价值。

7.2 竞争格局

Claude Code面临两股外部压力。一方面,开源项目OpenClaw在个人开发者和技术社区掀起了CUA热潮,开始撬动企业级外围市场。OpenClaw的架构逻辑是:LLM只负责智能决策,对话历史、工具执行全部留在用户本地,用户自带API密钥在Claude、GPT、DeepSeek等模型间任意切换。

另一方面,OpenAI在企业级市场持续追赶。GPT-5.3-Codex上线后,桌面应用下载量突破100万次,周活跃用户达160万,较发布前翻了三倍以上。

7.3 复杂任务可靠性质疑

2026年4月初,AMD AI团队高级总监Stella Laurenzo在GitHub上提交了Issue,指出Claude Code在复杂任务中的表现存在退化。她分析了17,871个thinking blocks和234,760次工具调用,跨越6,852个会话文件,发现模型在处理复杂任务时“推理变得浅层”,倾向于“不读就改、不完成就停、回避失败责任”。

分析人士将这一问题归因于容量和成本限制。Avasant研究总监Chandrika Dutt指出:“复杂工程任务需要大量计算,包括中间推理步骤。随着使用量增加,系统无法为每个请求维持这种计算水平,因此限制了任务的运行时长和推理深度。”

这暴露了Agent系统规模化面临的本质矛盾:能力越强、自主性越高,运行成本越指数级增长。成本约束与用户体验之间,需要Harness工程来寻找平衡点。

八、从泄露代码看Agent工程化

Claude Code的泄露代码揭示了一个关键事实:真正难的不是模型,而是Harness——给任何支持工具调用的LLM提供文件系统访问、shell、分层记忆和声明式扩展能力,所有这些都要在一个由可组合权限约束的有界自主循环里运行。

综合以上分析,Claude Code的架构设计可以总结为几条核心工程原则:

原则一:运行时越笨,架构越稳定。 Orchestrator只负责确定性执行,所有推理和决策交给模型。随着模型能力增强,脚手架应当变薄而非变厚。

原则二:工具原语优于工具全集。 四个能力原语加一个通用适配器,远胜于为每个场景构建专项工具。用确定性接口承载无限可能。

原则三:记忆需要“REM睡眠”。 Auto-Dream机制说明,Agent的长期运行不仅需要存储,还需要后台的自动整理和压缩,将噪声沉淀为知识。

原则四:安全边界是代码层面的强制约束。 五步权限流水线、多层沙箱隔离、Bash风险评估——凡是你希望模型“一定”做到的事,都靠代码而非提示词。

Claude Code的源代码泄露让外界第一次完整看到了一个生产级AI Agent的全貌。它不只是“更聪明的模型”,而是一套围绕模型构建的完整操作系统——从TAOR循环到动态提示词组装,从分层记忆到沙箱隔离,从工具注册表到多Agent协调。Anthropic真正的护城河或许不在于模型权重本身,而在于这套经过反复迭代、在生产环境中验证的Harness工程体系。这套工程经验,正为整个AI Agent行业提供着可以借鉴的范本。

参考文献

  • [1] 程序员cxuan. 来了来了,Claude Code 全架构解析 !EET China, 2026-04-01.

  • [2] BAAI. 看看 Claude Code 怎么做 Harness,这才是 Agent 工程化的真正难点. BAAI Hub, 2026-04-03.

  • [3] WaveSpeedAI Blog. Claude Code architecture Deep Dive: What the Leaked Source Reveals. WaveSpeedAI, 2026-04-02.

  • [4] 虎嗅. Anthropic的Claude Code源代码意外泄露,揭示AI Agent五层架构设计. 虎嗅, 2026-04-01.

  • [5] 虎嗅. Claude Code 51万行源码解析:揭秘AI代理的完整执行链路. 虎嗅, 2026-04-07.

  • [6] 站长之家. Claude Code 泄露门:揭开顶级 AI Agent 的五层架构与生存哲学. 站长之家, 2026-04-02.

  • [7] DoNews. Claude“虾化”:杀不死OpenClaw,但划定了它的天花板. DoNews, 2026-03-25.

  • [8] TechGig. AI coding startups struggle with rising costs from “Inference Whales”. TechGig, 2025-08-13.

  • [9] Skywork AI. Claude Code SDK pricing and API limits explained. Skywork AI, 2025-10-15.

  • [10] InfoQ. Anthropic为Claude Code添加了沙箱和Web访问功能. InfoQ, 2025-11-20.

  • [11] Skywork AI. Permission Model in Claude Code: How Permissions Work in VS Code & CLI. Skywork AI, 2025-10-15.

  • [12] InfoWorld. Enterprise developers question Claude Code’s reliability for complex engineering. InfoWorld, 2026-04-07.

  • [13] 腾讯云. Claude Code 核心架构参考. 腾讯云开发者社区, 2026-04-01.

  • [14] 36氪. 刚刚,Claude Code开源了,51万行代码,全网狂欢. 36氪, 2026-04-02.

  • [15] 36氪. Claude Code源码泄露7小时:8大新功能/26个隐藏指令/6级安全架构. 36氪, 2026-04-02.