Claude Code 的源码里只有约 1.6% 是 AI 决策逻辑,其余 98.4% 全部是运营基础设施。
这个数字来自康奈尔大学和阿布扎比人工智能大学的研究团队近期发表的一篇 46 页系统分析论文(arXiv:2604.14228),基于 Claude Code 公开的 TypeScript 源码进行完整逆向分析,并专门设置了与 OpenClaw 的架构对比章节。这是目前对 Claude Code 架构最全面、最深入公开研究。
五大价值观驱动架构
论文从 Anthropic 的安全 Agent 框架出发,识别出驱动 Claude Code 架构的五个核心价值观:
Human Decision Authority(人类决策权威):人类保留对系统所做一切事情的最终决策权。系统设计让人类可以实时观察操作、批准或拒绝提案、在兼容操作进行中中断、以及事后审计。Anthropic 内部调查发现 93% 的权限提示用户选择"同意"——这个数据导致设计方向调整:不是增加更多警告,而是在划定边界(沙箱、auto-mode 分类器)内让 agent 自由工作,而非逐个操作审批(用户一旦习惯就会停止审查)。
Safety, Security, and Privacy:系统保护人类及其代码、数据和基础设施免受伤害,即便人类疏忽或犯错。与"决策权威"的区别在于:权威是人类选择的力量,安全是当这种力量失效时系统的保护义务。
Reliable Execution(可靠执行):agent 做人类真正想要的,保持长期一致性,并在宣布成功前支持验证工作。
Capability Amplification(能力放大):系统在努力和成本单位上实质性增加人类能完成的事情。Anthropic 内部调查约 27% 的 Claude Code 协助任务是"没有这个工具就不会尝试的工作"——说明架构启用的是质上全新的工作流,而非仅仅加速现有流程。
Contextual Adaptability(情境适应性):系统适应用户的特定情境(项目、工具、约定、技能水平),且关系随时间改进。纵向数据显示 auto-approve 比率从 50 个 session 以下的约 20% 增长到 750 个 session 的 40% 以上。
十三项设计原则
价值观向下落实为十三项设计原则(部分):
- Deny-first with human escalation:未识别动作被允许、阻止还是升级给人类?→ 答案:默认拒绝,升级给人类
- Graduated trust spectrum:固定权限级别,还是用户随时间逐步穿越的光谱?→ 答案:光谱式
- Context as scarce resource with progressive management:上下文是稀缺资源,如何管理?→ 五层压缩管线
- Minimal scaffolding, maximal operational harness:投入决策脚手架,还是给模型提供丰富运营环境?→ 答案:最小脚手架,最大化运营 harness
- Isolated subagent boundaries:子 agent 共享父 context 和权限,还是隔离运作?→ 答案:隔离
七个顶层组件
用户 → 接口 → Agent 循环 → 权限系统 → 工具 → 状态与持久化 → 执行环境
所有入口表面(交互式 CLI、headless CLI、Agent SDK、IDE集成)都汇聚到同一个 agent 循环。只有渲染和用户交互层不同。
权限系统:七种模式和 ML 分类器
Claude Code 的权限系统有七种权限模式,以及一个集成在权限流程内的 auto-mode ML 分类器(yoloClassifier.ts),对工具安全性做两阶段快速过滤 + 思维链评估。
七层独立安全层叠加(任一层都可以阻止操作):
- 工具预过滤:全局禁用工具从模型视野中移除
- 拒绝优先规则评估:Deny 规则优先于 Allow 规则
- 权限模式约束:活跃模式决定无匹配请求的基线处理
- Auto-mode 分类器:ML 模型评估工具安全性
- Shell 沙箱:批准的命令在限制文件系统和网络访问的沙箱内执行
- Resume 时不恢复权限:会话级权限在恢复/fork 时不还原
- Hook 拦截:PreToolUse hooks 可以修改权限决策
五层上下文压缩管线
上下文窗口(1M token for Claude 4.6 系列)是核心资源约束。每次模型调用前执行五层压缩策略:
| 层级 | 机制 | 触发条件 |
|---|---|---|
| Budget reduction | 单个工具输出超限截断 | 单工具输出溢出 |
| Snip | 时序深度压缩 | 历史过长 |
| Microcompact | 缓存开销反应 | Prompt Cache 开销过大 |
| Context collapse | 长期历史压缩 | 极长历史 |
| Auto-compact | 语义压缩 | 最后手段 |
越便宜、越轻量的层级越先运行,成本高的层级兜底。
四大扩展机制
Skills、MCP、Plugins、Hooks,四种扩展机制在不同上下文成本上分层组合:
- MCP:Model Context Protocol,连接外部服务(Linux Foundation 旗下标准)
- Skills:SKILL.md 格式的 prompt playbook,按需加载
- Plugins:直接贡献工具和 hooks 到运行时
- Hooks:27 个事件类型的钩子管道,5 个安全相关,22 个生命周期和编排用途
子 Agent:工作树隔离
子 agent 通过 AgentTool 生成,重入 queryLoop(),使用隔离的上下文窗口,返回时只向父 agent 返回摘要文本,不返回完整对话历史,防止子 agent 内容膨胀父上下文。
与 OpenClaw 的对比
这是论文中最值得关注的部分——OpenClaw 被当作多通道个人助手网关,与 Claude Code 进行六个设计维度的对比:
| 维度 | Claude Code | OpenClaw |
|---|---|---|
| 安全评估粒度 | 逐动作安全分类 | 周边级访问控制 |
| 循环结构 | 单一 CLI 循环 | 网关控制平面内的嵌入式运行时 |
| 上下文扩展 | 上下文窗口扩展 | 网关级能力注册 |
| 扩展机制 | MCP/plugins/skills/hooks 分层 | 插件系统 |
| 权限模型 | 七种权限模式 + ML 分类器 | allowlist/denylist |
| 会话持久化 | Append-only JSONL | 网关级状态管理 |
论文指出:相同的设计问题在不同的部署上下文下产生了不同的架构答案。
六大开放方向
论文最后提出六个未来 Agent 系统开放研究方向:
- 可观测性-评估差距:系统内部状态对外部观测的不透明
- 跨会话持久化:长期记忆和上下文积累
- Harness 边界演进:随着模型能力提升,harness 的边界应该在哪里
- 视野 Scaling:如何处理更长期、更复杂的任务
- 治理:谁来审计和问责 Agent 行为
- 评估视角:短期能力放大 vs 长期人类能力保留之间的张力
Anthropic 自己的调查发现"监督悖论":过度依赖 AI 有风险萎缩监督 AI 所需的技能。独立研究发现 AI 辅助条件下的开发者理解测试得分低 17%。然而这个担忧在架构中并没有被显著反映为设计驱动因素。
论文链接:arXiv:2604.14228,代码已公开在 github.com/VILA-Lab/Dive-into-Claude-Code。