深度解析Claude Code 51万行源码背后的设计实现

张开发
2026/4/8 9:05:04 15 分钟阅读

分享文章

深度解析Claude Code 51万行源码背后的设计实现
最近发生了一件非常大的事情全球最强的AI编程工具Claude Code因为Anthropic的一个低级失误——打包npm包的时候忘了删source map文件——51万行源代码全部暴露在互联网上。几个小时之内代码就被全世界的开发者下载、镜像、拆解。Anthropic紧急下架了包但互联网没有删除键。因为 Claude Code 意外泄露了 source map这款被无数开发者捧上神坛的最强终端 AI第一次把自己的内部骨架暴露在聚光灯下。一款顶级 AI Coding 产品真正的护城河到底修在哪里。不是单纯卷补全准确率不是再做一个 IDE 插件而是围绕模型搭出一整套运行时系统。Claude Code 的底层是一整套分层系统Claude Code 不是一个单纯调用大模型的命令行工具而是一套分层设计的完整系统。最上面是用户看到的终端界面中间是命令和工具层负责把各种能力暴露给模型再往下是查询处理引擎负责流式调用、工具调度、重试恢复和上下文压缩相当于整个系统的大脑下面还有服务层处理认证、插件、状态管理和分析最底层则是文件系统、Git、配置、权限和安全存储这些基础设施。代码目录也非常重主入口、查询引擎、工具注册表、100 多个 slash commands、146 个 UI 组件、自研 terminal framework、85 hooks、330 utils、多智能体协调、远程管理、任务系统、迁移系统几乎把一个现代复杂应用该有的层全铺齐了。这意味着Claude Code 的思路从一开始就是把 AI 作为系统中心再围绕它重建一套终端交互、执行、安全和扩展框架。它不是一个 prompt wrapper而是一个把模型、工具、状态、上下文和 UI 都统一起来的工程产品。Claude Code 的真正大脑是它的 Query Engine。源码里这套系统分成两层QueryEngine.ts负责会话级编排query.ts负责逐回合状态机。前者管理系统上下文、消息持久化、API 调用、权限统计和成本累计后者则是一个 while(true)的弹性循环先并行预取记忆和 skills再做消息压缩然后流式调用 API处理错误执行工具再判断要不要 compact、collapse、续 token、或者继续下一轮。这套设计最有意思的一点是Claude Code 并不把“一次提问”理解成一次简单请求而是理解成一个可能不断恢复、转向、补执行、续上下文的长生命周期任务。也就是说它不是“问一次、答一次”的模型调用器而是“任务驱动型回合引擎”。比如当模型输出 token 快耗尽但任务还没做完时它不会粗暴停住而是注入一条隐形元消息要求模型“直接继续不要道歉不要回顾”然后把回合自然续下去如果上下文太长就先做 staged collapse不够再 reactive compact如果流式请求中途挂掉就尝试退回非流式如果模型过载还会回退到备用模型。整个过程的目标都不是“严格遵守单次请求边界”而是“尽可能让任务完成而不是把报错抛给用户”。这其实非常像现代浏览器或数据库的思路用户看到的是一个流畅的连续体验底层则在不停做容错、回退和恢复。60 多个工具被统一成一个接口Claude Code 强的地方是它能把工具系统做成一个一致、可调度、可渲染、可控权限的统一层。在源码里每个工具都遵循同一套接口名字、描述、额外 prompt、输入 schema、调用逻辑、权限检查、输入校验、并发安全判断以及四层 UI 渲染方法——工具开始、工具进度、工具结果、工具报错。也就是说在 Claude Code 看来Bash、文件编辑、grep、LSP、Web 搜索、Agent 调度本质上都只是统一工具协议下的不同实现。这种抽象带来的最大好处是系统可以真正按“工具能力”而不是“工具来源”去调度。Anthropic最不担心的恰恰是这51万行代码。他们真正的护城河是代码背后那套用自然语言写成的指令体系——以及这套体系里藏着的产品哲学。那么 Claude Code 究竟是怎么做的呢这篇深度分析文章基于科技博主 Sathwick 对 Claude Code 源码及架构的逆向解剖为你还原这款产品之所以能降维打击的内幕。一、AI不是没有记忆而是你没给它设计记忆很多人觉得AI记性差——聊了半天下次见面全忘了。但是看完Claude Code的记忆系统我发现这根本不是大模型的问题是产品设计的问题。Claude Code把记忆分成了4种类型第一种叫用户记忆——你是谁、你擅长什么、你喜欢什么方式沟通。一个资深工程师和一个编程小白AI应该用完全不同的方式跟你协作。第二种叫反馈记忆——你纠正过它什么。你说过别给我写总结它就记住了下次不再犯。而且不光记纠正还记认可——你说对就这样它也记下来知道这条路是对的。第三种叫项目记忆——当前在做什么、谁负责什么、deadline是什么时候。第四种叫参考记忆——哪里能找到什么资料Jira在哪、监控大盘在哪。它用一个小模型来当记忆检索员。你每说一句话小模型先拿着你的问题去翻记忆库最多挑5条最相关的喂给大模型。大模型不浪费算力搜索只负责思考。更狠的是它还有一个后台记忆提取Agent——你们在聊天的时候后台有另一个AI在默默分析对话把值得记住的东西提取出来存好。你都不知道它已经帮你记下了。源码里有一段Prompt专门教这个后台Agent怎么判断该记什么只记那些无法从代码和Git历史中推导出来的信息。代码模式、架构、文件结构——这些不用记grep一下就有了。要记的是人的偏好、人的决策、人的反馈。为什么大家总说龙虾太耗钱Claude Code却可以200美金一个月随便用没有好的记忆系统每次对话都要把所有上下文重新喂一遍token烧得快还不准确。这套记忆系统很可能就是关键差异。记忆系统才是AI产品的护城河。模型大家都能调API但你的AI能不能记住用户、越用越懂用户这才是真正的竞争壁垒。二、管AI和管人居然一模一样Claude Code有一个Coordinator模式——一个AI当项目经理管一群AI worker干活。研究、写代码、测试、验证全由worker完成Coordinator负责拆任务、派活、验收。管理逻辑不是写在代码里的是写在Prompt里的。370行自然语言就是一个完整的项目管理手册。关于派活永远不要写根据你的发现去修复这个bug。这种话是在把理解力外包给下属。你必须自己理解了研究结果然后写清楚改哪个文件、第几行、为什么改、改成什么。关于验收不要橡皮图章式地验收工作。验收意味着证明代码能用不是确认代码存在。要跑测试、查类型、试边界情况。如果什么看起来不对要深挖不要轻描淡写说应该没关系。永远不要把理解力外包给下属。AI时代最重要的能力不是写代码是写指令。写指令就是做管理。 你能不能把任务说清楚、说准确、说完整决定了你手下的AI和人能不能把事做对。三、安全不是加个确认按钮Claude Code的安全系统有多偏执每一条命令要经过23道安全检查。它有一个模块名字就叫YOLO分类器——You Only Live Once。干什么的用AI来判断这个操作该不该自动放行。1500行代码就干这一件事。它不是简单的黑白名单而是把对话上下文、用户配置、操作内容全部扔给AI模型让模型判断风险等级。低风险自动放行高风险弹确认极高风险直接拦截。真正的安全是从系统层面设计的不是亡羊补牢不是加个按钮。四、Token就是钱——AI产品的隐藏战场你以为顶级AI公司不差钱看看它源码里那些省钱的痕迹。Claude Code追踪了14种缓存失效的原因。有一个函数名字就叫DANGEROUS_未缓存系统提示区——意思是碰这个地方之前你得想清楚改了缓存就炸了。为了保护缓存Claude Code把Agent列表从工具描述里移到了对话消息里——就这一个优化省了全平台缓存创建Token的10.2%。还有一个更生猛的源码注释写着——每天25万次无效API调用。修复方案3行代码加个计数器连续失败3次就停止重试。3行代码一天省25万次调用。在AI时代缓存策略不是技术细节是财务问题。 每一个Token都是钱烧钱速度会超出你的想象。五、藏在源码里的秘密武器源码里有个叫KAIROS的功能——AI可以7×24小时在后台运行自己设定时任务自己监听GitHub事件比如有人提了PR、CI跑完了主动给你发推送通知每天还自动做记忆蒸馏——把一天学到的东西整理归档。这已经不是编程工具了这是一个AI操作系统的雏形。六、还有反蒸馏机制——如果有人偷录Claude Code的API流量想拿去训练自己的模型它会往请求里注入假的工具定义污染你的训练数据。用技术手段反偷师。最魔幻的是Undercover Mode隐身模式——Anthropic的工程师用AI写开源代码时AI会自动隐藏所有AI痕迹commit message写得跟人写的一模一样。源码里有一句注释There is NO force-OFF——这个功能没有强制关闭的开关。Claude Code的核心不是代码是Prompt。它最核心的算法是那些用自然语言写的管理指令——怎么拆任务、怎么派活、怎么验收、怎么记住用户、怎么保护安全。这些指令任何一个好的管理者看了都会觉得这不就是我干的事吗。

更多文章