Claude Code 源码拆解:循环只占 1.6%,权限与五层压缩才是主体

Dive into Claude Code: The Design Space of Today's and Future AI Agent Systems

Jiacheng Liu, Xiaohan Zhao, Xinyi Shang, Zhiqiang Shen

cs.SE, cs.AI, cs.CL, cs.LG

2026-04-15

MBZUAI 拆解 Claude Code v2.1.88 约 51 万行源码:核心只是模型-工具循环,真正工程量在七种权限、五层压缩和四套扩展,并对照 OpenClaw 与 Hermes 的部署差异。

这篇在解决什么

生产级 coding agent 已经从补全建议走到能自己跑命令、改文件、迭代修 bug。官方文档会讲「agentic loop」,但 Anthropic 不公开架构细节。MBZUAI VILA Lab 和 UCL 对着公开 npm 包里抽出来的 Claude Code v2.1.88 TypeScript 源码做了一次设计空间拆解,规模大约 1884 个文件、51.2 万行,并拿 OpenClaw 和 Hermes Agent 当对照。

真正要回答的不是循环怎么写。每个 coding agent 都得选:推理放模型还是脚手架、默认安全姿态是什么、上下文窗口怎么扛、扩展面怎么切、子代理怎么隔离、会话怎么持久化。这篇把 Claude Code 的答案钉到具体文件上。

方法

证据分三档。Tier A 是官方文档和工程博客,只能说明产品意图。Tier B 是源码里的文件和函数,这是最硬的一层。Tier C 是社区还原和跨系统对照,文中会加限定语。

五个价值抽自 Anthropic 的安全 agent 框架和 Constitution:人类决策权、安全隐私、可靠执行、能力放大、情境适配。再落到十三条设计原则,最后对着 query.ts、permissions.ts、tools.ts 把原则钉到实现。贯穿例子是「修 auth.test.ts 里失败的测试」,一次请求穿过查询循环、权限门、工具池、压缩管线、子代理和会话恢复。

对照系统选得很刻意。OpenClaw 是多通道个人助手网关,Hermes 是单进程、角色由入口决定的助手。三个系统面对同一组设计问题,部署场景不同,答案就不同。

结果

核心循环确实薄。queryLoop() 是一个 async generator:调模型、跑工具、把结果塞回去,直到模型只吐文本。社区对抽取源码的估计是,大约 1.6% 的代码是 AI 决策逻辑,其余 98.4% 是权限、路由、压缩、恢复这些确定性基础设施。

权限默认 deny-first,未识别动作升给用户。七种模式覆盖 plan、default、acceptEdits、auto(ML 分类器)、dontAsk、bypassPermissions,以及子代理内部用的 bubble。Anthropic 测过用户会批准大约 93% 的权限提示,单靠弹窗不可靠;沙箱把提示频率大约降了 84%。工具池最多 54 个内置,19 个无条件在,35 个看 feature flag 和用户类型。hooks 有 27 种事件,其中 5 种直接进权限流。

上下文是紧约束。旧模型 200K,Claude 4.6 系列 1M。每次调模型前过五层压缩:预算裁剪、snip、microcompact、context collapse,最后才是模型摘要的 auto-compact。扩展面按上下文成本拆成四套:hooks 默认零成本,skills 只占描述,plugins 负责打包分发,MCP 带着完整 tool schema 最贵。子代理走隔离上下文,只把摘要交回父会话;agent teams 在 plan 模式下大约吃掉标准会话 7 倍 token。会话是近似 append-only 的 JSONL;resume 和 fork 不恢复会话级权限。

维度Claude CodeOpenClawHermes
部署按会话的 CLI/IDE持久 WebSocket 网关单进程,角色看入口
信任按动作、七种模式网关周界、配对与白名单按动作,多界面同一套批准
上下文五层压缩结构化长期记忆单次摘要加注入前扫描

为什么重要

给做 agent 产品的人,这篇相当于一份生产级 harness 地图。循环可以简单,能上线的是权限分层、压缩分级、扩展按成本拆开。

对已经在用 Claude Code 的人,有几条可落地。CLAUDE.md 是用户消息不是系统提示,遵守是概率性的;真正挡得住的是 deny 规则。resume 不会把上次点过的允许带回来。子代理默认不继承父会话历史,prompt 必须自包含。零成本拦截走 hooks,真要新工具再上 MCP。

对照部分判断清楚:三个系统不是互斥选项。OpenClaw 能通过 ACP 托管 Claude Code,Hermes 自己也能当宿主或被 IDE 托管。设计空间是分层可组合的。

这是架构论文,不是新算法。价值在把一个闭源产品的实现选择摊开,并指出短板:架构几乎不显式保护开发者的长期理解力。Anthropic 对 132 人的内部调查里,约 27% 的任务是没有这个工具就不会做的;独立研究则发现 AI 辅助条件下理解测试低 17%。短板被写成未来问题,不是已经做成的功能。

局限与存疑

分析钉在 v2.1.88 一个快照上。TRANSCRIPTCLASSIFIER、CONTEXTCOLLAPSE 这类 feature flag 会在构建时整段剪掉,不同构建目标功能可以不一样。源码能证明结构,证明不了线上开了哪些 flag、实际调用有多频繁。

1.6% 对 98.4% 这个比例来自社区估计,不是官方数字。比较用的 OpenClaw 和 Hermes 也是各自某个开发快照。

安全层之间并不独立。超过 50 个子命令的 bash 会退化成一条笼统提示,因为逐条解析会把 UI 卡死。独立安全研究还指出,项目初始化阶段(hooks、MCP 连接、settings 解析)会在交互式信任对话框出现之前执行,这段时间 deny-first 管道还没接上。分析窗口内还报告过沙箱 DNS 的解析器差分,影响范围包含 v2.1.88,没有分配 CVE。

压缩对用户基本不可见。外部研究还指出基于摘要的压缩会卡住一轮推理,而且不确定,同样输入留下的内容会变。有界上下文会不会导致更多模式复制和规范破坏,源码分析回答不了,论文把它留成可测预测。

术语

原文与代码

社区讨论

相关论文

全部论文解读