每一代开发者工具都围绕一个看不见的架构赌注建立。Unix赌小而可组合的程序通过管道连接会胜过单体系统。Git赌分布式版本控制胜过中央服务器。Docker赌文件系统隔离胜过虚拟机。Claude Code的赌注现在可见了——从公开npm包的sourcemap文件恢复了512,664行TypeScript,分布在1,332个文件中。它的论点是:AI辅助编程的难题不是生成质量,而是执行可靠性。

核心架构:while(true)循环

Claude Code的核心是一个while(true)循环,位于query.ts。一个generator函数在每次API调用后yield控制权,检查响应,决定是否继续,然后再次循环。一切都是harness。 架构不是一个创新,而是12个机制的组合,每个机制处理不同的失败模式。

Layer 1-3解决基本问题:可靠地调用API、流式返回、重试、错误处理。 Layer 4-6解决工具问题:组装正确上下文、注册工具、安全解析命令。 Layer 7-9解决信任问题:沙盒执行、权限分类、对话过长时压缩上下文。 Layer 10-12解决自主性问题:跨会话记忆、不被询问就行动、协调多个agent完成单一任务。

大多数竞品停在Layer 6。它们能调用工具和执行命令。区分Claude Code的是栈的上半部分——处理会话运行数小时、用户不盯着、多个agent需要共享状态时的那些层。这是一个完全不同的产品类别的基础设施。

40+工具:刻意为可扩展而设计

Claude Code配备了40+工具,通过buildTool()工厂模式注册。每个工具声明指定名称、描述、输入schema、权限要求和执行函数。模式足够一致,添加一个新工具大约需要30行代码——这是有意为之的设计:系统是为增长而构建的。

Bash工具是最能说明问题的。Claude Code没有用正则表达式来判断shell命令是否安全,而是包含了一个完整的Bash AST解析器,跨越2,679行TypeScript。它将shell命令lex和parse成抽象语法树,然后遍历树提取每个可执行文件、flag、管道目标和重定向。这是pattern matching和understanding之间的区别。

构建在这个解析器之上的权限系统使用ML分类器——一个side-query给Claude本身——将命令分类为allow、deny或ask-the-user层级。这不是静态allowlist。模型在上下文中评估每个命令,考虑当前工作目录、用户最近指令和工具声明的风险级别。

工具注册表还揭示了一个与行业惯例不同的知识注入策略。大多数agent把知识塞进system prompt。Claude Code通过tool_result消息注入知识——将合成响应作为工具返回值放入对话。这保持了system prompt精简,并把知识放在模型最会注意的地方:格式化后的工具输出,在最近上下文窗口内。这是一个小的架构选择,但对可靠性有巨大的下游影响。

三个未发布功能:KAIROS、Dream、BUDDY

源码包含108个内部模块——被员工检查或编译时feature flag门控的代码。其中三个揭示了Anthropic认为编程agent将走向何方。

KAIROS:永在运行的Agent

KAIROS是一个自主agent daemon。它不等待用户输入。在tick-based心跳上运行,定期唤醒检查事件:新的PR、CI失败、代码审查评论、依赖更新。当发现可操作的事项时,它主动行动——打开PR、推送修复、发布评论——并向用户设备发送推送通知。

架构把编程agent当作监视项目的同事,而非响应命令的工具。转变是从助手到daemon。KAIROS包含自己的调度系统、通知基础设施,以及关于什么需要自主行动、什么需要人类批准的决定逻辑。权限模型是细粒度的:用户可以允许KAIROS自动修复linting错误,但对触及生产配置的任何操作要求批准。

如果KAIROS发布,交互单位从"对话"变为"订阅"。用户不是打开Claude Code去做事。Claude Code已经在做事了。用户打开它只是去review做了什么。

Dream System:后台记忆整合

Dream系统是代码库里最大胆的功能。它实现了后台记忆整合——一个在用户空闲时运行的AI进程,重新组织和压缩agent积累的知识。

触发机制使用三级门控系统。三个条件同时满足时Dream周期才激活:自上次整合以来过了足够时间、最少会话数已达到、没有其他进程持有整合锁。

Dream周期执行四个阶段:Orient(fork subagent读取当前记忆状态和近期会话历史)、Gather(从跨会话收集模式、重复主题和已解决问题)、Consolidate(将收集的知识合成为更新的记忆条目,合并重复项、解决矛盾)、Prune(删除过时或低价值条目,保持记忆在token预算内)。

名字不是随便取的。神经科学研究早已确定人类记忆整合发生在睡眠期间——大脑重播和重组一天的经历。Dream系统是一个工程类比。Agent在空闲时处理自己的经历,在下次会话开始时带着更清晰、更有结构的知识出现。这更接近于学习,而非缓存。

BUDDY:电子宠物

源码里最意外的发现:一个完整实现的虚拟宠物系统。BUDDY是一个确定性电子宠物,有gacha机制。18个物种、5个稀有度层级、1%的闪光几率。宠物根据编码活动进化,有情绪、饥饿状态和与用户使用Claude Code频率挂钩的幸福值。

为什么一个专业编程工具要包含虚拟宠物?答案是留存。开发者工具在某个与能力无关的维度上竞争:每日习惯形成。VS Code赢不是因为它是最好的编辑器,而是因为开发者每天早晨无意识地打开它。BUDDY是一个伪装成趣怪的参与机制。Gacha机制创造了变比强化——与手游变现驱动相同的心理模式——应用于编程工具。

无论BUDDY是否发布,Anthropic的工程团队构建了一个留存机制这个事实,揭示了该组织对注意力经济有多认真。开发者工具之战在早上9点让开发者打开某个工具而非另一个工具的那件事上取胜。Benchmark在9:05就被遗忘了。

多Agent编排:真正的协调器模式

Claude Code的coordinator模式实现了大多数agent框架承诺但很少交付的东西:单一会话内的真正多agent编排。单个coordinator agent生成worker agent,分配任务,综合输出。Coordinator不只是分发工作并收集结果——它管理一个四阶段工作流。

scratchpad目录是关键基础设施。Worker将中间发现写入共享目录中的文件。其他Worker读取它们。Coordinator读取所有这些。这解决了多agent系统的根本问题:agent如何在不破坏彼此上下文窗口的情况下共享状态。答案是——磁盘上的文件——这是最古老的协调机制,应用于最新问题。

系统支持两种worker类型。进程内teammate共享父节点的Node.js进程。它们是轻量级和快速的,但共享内存,适合只读任务如代码搜索。基于进程的teammate作为独立进程运行,具有完全隔离。它们有自己的上下文窗口、自己的工具注册表和自己的权限范围。它们更重,但对修改文件系统的任务更安全。

这个双worker架构反映了务实的工程权衡。大多数多agent框架强迫在轻量但脆弱和隔离但慢之间选择。Claude Code两者都提供,根据任务选择合适的模式。

六种架构模式

源码揭示了值得关注的六种架构模式:

Pattern 1: Generator-based Query Loop — 可中断AI工作流的正确抽象。每个工具使用后yield,让外部逻辑决定下一步。适合需要长期运行的自主agent。

Pattern 2: 三层上下文压缩(最重要)- autoCompact处理宏观层(总结对话前半部分)、snipCompact处理微观层(3000行文件输出可被50 token摘要替代)、contextCollapse处理中间层(8个连续工具调用可合并为一个块)。三层组合意味着会话可以运行数小时而不降级。

Pattern 3: AST级别安全分析 — 自主操作的基础。在模型执行命令之前,对命令进行AST分析。没有这个,任何自主操作都是不安全的。

Pattern 4: 通过工具结果的知识注入 — 比system prompt更精确、更高保真度。

Pattern 5: Build时特性消除 — Anthropic使用Bun的编译时intrinsics来定义在构建时而非运行时求值的功能。公开发布的npm包构建时,每个被内部feature flag门控的代码路径被完全移除——不只是不可达,而是从bundle中不存在。Sourcemap泄露正是因为这个系统太好了,工程师停止了思考sourcemap里包含什么。

Pattern 6: 双worker架构 — 为每种任务类型选择正确隔离级别的务实方式。

竞争启示录

Cursor:用户体验最接近,但架构更简单。它用自定义VS Code fork实现紧密编辑器集成——这是Claude Code从终端无法匹配的优势。但Cursor缺乏多agent协调、没有后台整合、权限模型更简单。优势是IDE亲密度,劣势是架构深度。

GitHub Copilot:有分发优势——内置在世界上最流行的代码编辑器里。但Copilot的agent模式即使经过多次迭代,仍然更接近带工具访问的自动补全引擎,而非真正的自主agent。没有Bash AST解析器,没有多阶段上下文压缩,没有证据表明有自主功能在开发中。

Windsurf(Codeium):在Cascade上投入巨资,其多步推理引擎处理上下文良好,提供精致的编辑体验。但架构不透明,公开行为中没有任何东西表明具有Claude Code所展示的那种harness深度。

Cline和Aider:开源阵营。Cline是VS Code扩展,有干净的agent循环和工具支持。Aider是专注于git感知代码编辑的终端agent。两者在其范围内都很优秀。两者都不尝试多agent协调、后台记忆或自主操作。

真正的护城河

Claude Code的护城河不是任何一个功能,而是功能之间的交互

Dream系统让KAIROS更聪明,因为它在自主行动之间整合知识。Bash AST解析器让权限系统成为可能,权限系统让自主操作安全,授权系统让KAIROS可行。三层压缩让长会话成为可能,长会话让多agent协调变得实用。移除任何一层,其他层都会降级。这是良好组合架构的本质:整体比部分更难复制。

源码揭示的比实现细节更重要。它揭示了一个关于编程agent将走向何方的论点。

轨迹很清楚:跨会话整合知识、协调并行worker、在开发者离开时主动行动的自主agent。12层harness是一张路线图。KAIROS是目的地。Dream系统是agent如何随时间发展项目级理解。Coordinator是它如何扩展到单一工作线程之外。

每个编程agent最终都会构建类似的东西。Generator-based query loop是可中断AI工作流的正确抽象。三层上下文压缩是运行数小时的会话所必需的。AST级别安全分析是自主操作(模型无监督执行命令)所必需的。后台记忆整合是跨天、跨周存在的agent所必需的。这些都是这个领域的每个团队最终都会遇到的工程约束。