乐于分享
好东西不私藏

深度拆解Claude Code泄漏源码:顶级AI Agent的架构秘密,全在这里

深度拆解Claude Code泄漏源码:顶级AI Agent的架构秘密,全在这里

Claude Code 这次最值得行业研究的,不是“泄了多少行代码”,而是它把一个事实提前摊开在了所有人面前:

顶级 AI Coding Agent 的竞争,已经不只是模型能力的竞争,而是系统工程能力的竞争。

很多人以为,做一个 AI 编程产品,无非是接一个强模型、配几个工具、写一套提示词、再包一层界面。

但真正把 Claude Code 的整体结构梳理完之后,会发现它根本不是这么回事。

它更像一套完整的Agent 运行时系统

  • 有多入口的平台化设计
  • 有长任务驱动的主循环
  • 有可治理的工具系统
  • 有角色分工明确的多 Agent 协作
  • 有彼此制衡的安全层
  • 有让模型真正“感知能力”的扩展生态

还有一整套围绕上下文成本、后台任务、状态恢复和遥测构建起来的产品化基础设施

Claude Code 最值得借鉴的地方,不是某个功能,而是它已经把“AI 工程师”做成了一套可运行、可扩展、可治理、可长期工作的系统。

一、第一层值得借鉴的设计:系统化、平台化设计

很多 AI 产品最开始的思路都是:

  • 先做一个 CLI,能跑起来再说;
  • 先做一个插件,功能够用再补;
  • 先有一个对话框,后面慢慢加能力。

Claude Code 不是。

它从架构层面就表现出很强的平台化意识:同一套运行时,同时服务终端、协议接入、SDK 调用、IDE 集成,甚至后台常驻和远程控制。

更关键的是,它没有把所有调用路径都粗暴塞进一个完整启动流程,而是针对不同场景做了明显的“快速路径”分流,

不需要完整运行时的命令,不走完整初始化;

需要后台会话管理的,走独立路径;需要远程控制的,也不走普通交互链路。

如果一开始只是当成一个单点工具来做,后面就一定会被性能、耦合和扩展性反噬。

Claude Code 最聪明的地方,就是它在一开始就默认:这不是一个功能产品,而是一个运行时平台。

二、第二层值得借鉴的设计:它的核心不是“回答”,而是“持续执行”

Claude Code 的整个运行方式,有一个非常重要的特点:它不是“一问一答”式工作的,而是靠一个持续运转的主循环,把任务不断推进下去。

每一次迭代都不是简单回复文本,而是按固定顺序处理上下文、拼装规则、调用模型、执行工具、处理异常,再决定要不要继续下一轮。

这个设计特别关键,因为它代表了一种根本性的抽象变化:

传统聊天产品的基本单位是“消息”,而 Claude Code 的基本单位是“任务回路”。

这带来什么好处?

第一,它天然更适合长任务。

系统不会把一次复杂工作拆成很多彼此割裂的对话回合,而是始终把它看成同一个持续推进中的任务。

第二,它天然更适合工具调用。

工具执行完,不是结束,而是把结果重新喂回系统,进入下一轮判断和执行。

第三,它天然更适合异常恢复。

上下文过长、输出超限、模型中断、需要继续执行,这些都不是“意外”,而是状态流转的一部分。

这一层最值得借鉴的经验是:

想做真正能干活的 Agent,就不要把系统设计成“会聊天的工具”,而要把它设计成“会持续推进任务的执行器”。

这是 Claude Code 和很多“聪明但不耐用”的产品之间最大的差别之一。

三、第三层值得借鉴的设计:它没有迷信 Prompt,而是把 Prompt 做成基础设施

很多人对 Prompt 的理解还停留在“写一段提示词”。

Claude Code 更进一步。

它不是写一个超长提示词,而是把系统规则拆成了静态部分和动态部分:稳定不变的内容尽量固定下来,按会话变化的内容再动态注入;静态部分尽量保持一致,以提高缓存命中率;动态部分则按实际状态决定是否加入。

这个设计为什么厉害?

因为它解决了两个经常被忽略的问题。

一个是成本问题。

系统提示越长、变化越频繁,缓存效率越差,调用成本越高。Claude Code 明显不是“能跑就行”,而是在系统层面认真优化前缀缓存。

另一个是组织问题。

当一个 Agent 系统越来越复杂时,提示词就不再只是“写给模型看的自然语言”,而是一种运行时资源。它需要分层、复用、缓存、按状态拼装,而不是一次性硬塞。

这背后最值得借鉴的,不是某段提示词写得多漂亮,而是这个认知:

Prompt 不该只是文本,而应该是系统配置的一部分。

真正成熟的 Agent 系统,拼的是 prompt infrastructure,不是单次 prompt 灵感。

四、第四层值得借鉴的设计:它不相信模型会“自觉守规矩”

Claude Code 的一个非常成熟的地方,是它并不假设模型天然会克制、会诚实、会遵守工程纪律,它明确把很多“好习惯”写成制度:

  • 先读代码再改代码
  • 不要擅自增加用户没要求的功能
  • 不要过度抽象
  • 不要乱加注释和文档
  • 不要盲目重试
  • 没验证过的结果不要说成已经验证过

这个思路特别值得借鉴。

因为很多人做 Agent 时,默认假设模型足够强之后,这些行为问题会自然改善。

但现实刚好相反:能力越强,越容易“多做”、“乱做”、“自作主张”。

Claude Code 给出的答案非常朴素:

不要赌模型会临场发挥出正确工程习惯,而要把工程习惯写进系统。

这件事听起来简单,但其实非常重要。

因为 AI 系统真正难落地的地方,往往不是“不会做”,而是“做得太多”“做偏了”“做得不受控”。

所以,Claude Code 第一条最值得借鉴的设计原则,其实不是技术,而是工程哲学:

好行为不能靠模型悟出来,只能靠制度约束出来。

五、第五层得借鉴的设计:工具不是外挂,而是必须被治理的执行接口

Claude Code 当然有很多工具能力,但真正厉害的不是工具多,而是工具怎么被系统接纳和管理

它不是模型一说“我要调用工具”,工具就直接执行。

相反,每一次工具调用都要经过一整套治理流程:先做输入校验,再做更细粒度检查,再做风险预判,再执行前置策略,再做权限决策,再执行,再做成功或失败后的收尾处理。

甚至对于高风险操作,系统还会提前启动风险分类,在权限决策前就开始分析,尽量减少等待时间。

这一层特别值得所有做 Agent 的团队借鉴。

因为工具真正难的,从来不是“能不能接进去”,而是:

  • 参数能不能乱传
  • 风险能不能提前识别
  • 高危操作会不会绕过审批
  • 失败后系统怎么恢复
  • 大量工具同时调用时,系统会不会失控

Claude Code 的答案非常明确:

工具不是“能力清单”,而是“必须纳入治理体系的执行接口”。

如果没有这层治理,模型越强,风险越大。

因为模型会越来越主动地调用工具,而不是越来越克制。

这也是为什么 Claude Code 的工具系统看起来更像一条“治理流水线”,而不是简单的“工具箱”。

六、第六层值得借鉴的设计:多 Agent 的关键不是多,而是分工和隔离

Claude Code 的多 Agent 设计,最有价值的地方不在于“有好几个 Agent”,而在于它明确做了角色拆分

它不是把探索、规划、实现、验证都塞给同一个智能体,而是把这些职责拆开,让不同角色承担不同任务。

尤其重要的是,它不是只在提示词里说“你现在扮演验证者”,而是在工具权限、行为边界和任务目标上都做了明确限制。

这件事为什么这么重要?

因为如果一个 Agent 既负责写,又负责验,它天然会高估自己的成果。

而 Claude Code 通过角色分离,解决了这个问题:

  • 探索角色只负责看,不负责改
  • 规划角色只负责想,不负责执行
  • 实现角色负责交付
  • 验证角色的唯一目标是找问题,而不是替实现者证明正确

尤其是验证这件事,Claude Code 的设计非常值得借鉴。

它不是让验证者“看看像不像对”,而是强迫验证者去主动找失败点、跑真实检查、给出实际结果,而不是凭感觉判断。

这背后最值得借鉴的原则非常简单:

多 Agent 的价值,不是把一个模型复制几份,而是把职责拆开,把偏见拆开,把权限拆开。

如果没有这三层拆分,多 Agent 大概率只是多开几个窗口。

而 Claude Code 显然不是这么做的。

七、第七层值得借鉴的设计:它把“子任务”做成了有成本意识的调度系统

Claude Code 在子任务调度上有一个很值得学习的细节:它不仅考虑“子任务能不能独立运行”,还考虑“子任务如何尽可能复用已有上下文和缓存”。

这说明它的调度思路不是“开个分支让它去跑”,而是:

  • 能继承的状态尽量继承
  • 能复用的上下文尽量复用
  • 能共享的缓存尽量共享
  • 不为了形式上的独立而牺牲系统效率

这个设计非常成熟。

很多系统一做多 Agent,就会迅速出现一个问题:

每个子任务都像重启了一次世界,重复加载、重复拼装、重复消耗 token。

Claude Code 的做法明显更工程化,它在调度层就开始思考成本,而不是等成本炸了再补救。

这一点的启发很大:

真正好的多 Agent 系统,不只是会分工,还要会节流。

子任务调度不是单纯的并发问题,而是上下文复用、缓存复用和执行成本问题。

八、第八层值得借鉴的设计:安全层不是“一个开关”,而是互不绕过的三层防护

Claude Code 在安全上的成熟度,非常值得行业重视。

它不是只有一个权限系统,也不是只有一个 hook 机制,而是把风险预判、运行时策略和最终权限决策拆成三层,而且这三层彼此配合,但互不绕过

这背后最有价值的点在于:

  • 预判层负责尽早判断风险
  • 策略层负责动态调整和阻断
  • 最终权限层负责拍板

更重要的是,即便中间某一层说“可以”,也不代表它能跳过核心安全规则。

这意味着即使某个扩展机制出了问题,或者某个策略组件被误用,整个系统也不会因为单点失效而直接失控。

这个思路特别值得借鉴。

很多产品也会说自己有“安全设计”,但真正的难点从来不是“有没有安全层”,而是:

安全层之间会不会互相穿透。

Claude Code 给出的答案是:

  • 可以分层,但不能串权;
  • 可以协同,但不能越级;
  • 可以动态调整,但不能把底线让出去。

这就是成熟系统和实验性系统之间的差别。

九、第九层值得借鉴的设计:扩展体系最关键的,不是插件多,而是模型自己知道能做什么

Claude Code 有技能、有插件、有协议扩展,但它最关键的一步不是“接入能力”,而是让模型感知能力

这听起来像一句废话,但实际上很多产品恰恰卡死在这里。

很多平台当然也能接十个插件、几十个工具,但问题是模型根本不知道当前有哪些能力可用,也不知道什么场景该调用哪个。那这些扩展对模型来说就像不存在。

Claude Code 做得更进一步:

扩展能力不是藏在系统后台,而是通过能力清单、会话指引、动态说明和按需注入机制,明确让模型“知道自己现在能做什么”。而且扩展能力不只是提供新工具,还能附带使用说明,让模型不仅知道“有”,还知道“怎么用、何时用”。

这一点特别值得借鉴。

因为 Agent 生态真正难的,从来不是技术接入,而是认知接入

系统接进去了,不代表模型会用。

模型会用,生态才真正活起来。

所以,Claude Code 在扩展体系上最值得学习的一条原则是:

扩展的终点,不是注册成功,而是被模型真正感知和调用。

十、第十层值得借鉴的设计:它非常清楚“上下文就是预算”

Claude Code 对上下文的态度,非常像成熟操作系统对内存的态度。

它不是等上下文爆了再救火,而是一开始就按预算来管理:

历史消息太长先轻量裁剪,再做细粒度压缩,再对不活跃内容做折叠,必要时再触发更重的压缩,如果还不够,再做应急压缩。

对于大结果,不直接塞回上下文,而是落盘后只保留摘要。

技能和外部说明也都按需注入,不做一股脑预装。

这件事特别重要,因为它揭示了一个现实:

在 Agent 系统里,token 从来不是“附属消耗”,而是第一性约束。

谁对上下文没有预算意识,谁就不可能把 Agent 真正做大。

因为一旦任务变长、工具变多、角色变多、扩展变多,如果没有上下文经济学,系统迟早会失控。

Claude Code 这一层最值得借鉴的,不是具体压缩策略,而是这个认知:

上下文不是无限资源,必须像预算一样精打细算。

十一、第十一层值得借鉴的设计:它从一开始就在解决“系统如何长期稳定运行”

Claude Code 的成熟,不只体现在它能不能把任务做出来,更体现在它有没有把“长期稳定运行”当成核心问题来设计。
很多 Agent 产品初看都很亮眼:能理解任务、能调用工具、能改代码、能执行流程,看起来已经很强了。
但真正进入持续使用阶段之后,挑战才刚刚开始。系统要面对的,不再只是“这次能不能跑通”,而是:
任务中断之后能不能继续接上
后台执行的进程能不能被正确管理和清理
运行过程中留下的脏状态会不会影响后续任务
外部连接和资源会不会不断泄漏
会话能不能恢复,历史能不能追踪
成本、性能和限流能不能被持续监控
Claude Code 的可贵之处就在于,它显然不是把这些问题当成上线之后再慢慢补的边角料,而是直接纳入了主架构。
它有后台任务机制,有生命周期管理,有统一状态管理,有远程桥接能力,也有完整的遥测、成本追踪和运行监控。
这意味着它关注的不只是“功能是否存在”,而是“功能能否在复杂、连续、真实的使用环境中一直稳定运转”。
一个系统能完成一次任务,并不代表它已经可用;
只有当它能够在中断、恢复、清理、追踪、监控这些环节上都保持稳定时,它才真正具备产品价值。
Claude Code 在这一层给行业的启发非常明确:
AI Agent 要走向真实生产环境,必须从一开始就按“长期运行的系统”来设计,而不是按“偶尔跑一次的智能工具”来设计。

十二、Claude Code 最值得借鉴的是一整套系统方法

如果一定要把 Claude Code 这套架构设计压缩成 10 条最值得借鉴的原则,我会总结成下面这些。它们不是零散技巧,而是一整套把 AI Agent 做成真正可用系统的方法。

第一,不要相信模型会天然守规矩,要把好行为写成制度。
模型会聪明,但不一定会克制;会执行,但不一定会守边界。真正成熟的系统,不会把“先读代码再改”“不要擅自加需求”“没验证过别说验证过”这种事交给模型临场发挥,而是直接写进系统规则里。这样做的价值,不是让模型更聪明,而是让模型更稳定。
第二,不要把 Agent 当成一次性对话助手,而要把它当成持续执行的任务系统。
普通聊天式产品的基本单位是“一次回复”,Claude Code 更像是围绕“任务推进”来组织运行。它的核心不是答一句话,而是反复处理上下文、调用工具、接收结果、继续执行,直到任务真正完成。真正能干活的 Agent,必须从一开始就按“持续执行”而不是“即时回答”来设计。
第三,不要让一个 Agent 什么都干,要把角色拆开。
探索、规划、实现、验证,本来就是不同类型的工作。如果全塞给同一个 Agent,它很容易一边写一边说自己写得对。更合理的做法,是把“做事的人”和“验收的人”拆开,把不同职责交给不同角色,这样系统会更稳,判断也会更客观。
第四,不要把工具当外挂,要把工具调用纳入治理流程。
工具不是越多越强,关键是调用过程有没有治理。成熟系统在工具真正执行之前,会经过输入校验、风险预判、权限判断、前后处理这些环节。这样做的意义,不只是安全,更是让系统在异常情况下依然可控。工具调用如果没有治理,模型越强,风险反而越大。
第五,不要做“能用就行”的权限系统,要做互不绕过的多层防护。
单点权限开关很容易失效,真正成熟的安全设计一定是分层的。风险预判是一层,运行时策略是一层,最终权限决策还是一层,而且这些层之间必须协同但不能互相越权。只有这样,即便其中某一层出问题,整个系统也不会直接失控。
第六,不要只追求功能覆盖,要追求默认保守。
一个成熟系统最值得借鉴的地方,往往不是功能强,而是默认值足够谨慎。并发不确定时先按不安全处理,只读属性没声明就按可能写入处理,风险没看清就先拦住,这些“默认严格”的设计,决定了系统上线以后会不会因为配置遗漏而出大问题。
第七,不要把扩展只做给开发者看,要让模型自己感知到扩展能力。
很多平台也能接插件、接工具、接外部协议,但模型根本不知道现在有哪些能力可用,也不知道什么时候该用哪个。那这些扩展在实际运行里就几乎等于不存在。真正高明的做法,是把能力清单、使用说明和会话状态一起显式提供给模型,让模型“知道自己现在能做什么”。
第八,不要把上下文当空气,要把它当预算。
上下文不是无限资源,token 也不是免费的。能缓存的要缓存,能按需注入的不要预装,能轻压缩就别重压缩,超大结果要摘要化而不是原样塞回去。上下文管理做得好不好,决定了 Agent 是只能短跑,还是能真正跑长任务。
第九,不要只考虑任务如何开始,要提前设计任务如何中断、恢复和切换。
一个真实的 Agent 系统,一定会面对前台转后台、任务中断、异步继续、状态恢复这些问题。谁只设计“怎么开始”,不设计“怎么继续”,谁最后都只能停留在演示阶段。任务生命周期管理,决定的是系统有没有办法在复杂环境里持续工作。
第十,不要只关注功能做没做出来,更要关注系统能不能长期稳定运行。
真正的产品化,不只是把能力堆出来,而是把状态管理、资源清理、后台任务、远程桥接、监控追踪、成本控制这些支撑层一起做出来。
系统是不是可长期运行,往往不取决于它第一次表现有多惊艳,而取决于它在连续使用、复杂场景、异常恢复里的稳定性。
Claude Code 最值得借鉴的地方,恰恰就在这里:它做的不是一个偶尔灵光一现的聪明工具,而是一套可以长期工作、持续交付结果的系统。