2026年3月31日,Anthropic 因一个
.npmignore配置遗漏,意外将 Claude Code 的 512,000 行 TypeScript 源码发布到 npm。伦敦大学学院(UCL)与 MBZUAI 的研究团队随后发表了一篇系统性的设计空间分析论文(arXiv:2604.14228),将这次事故转化为了迄今为止对生产级 AI Agent 系统最深入的学术剖析。本文基于该论文及社区分析,完整梳理 Claude Code 的架构设计哲学与工程实现。
一、事件背景
2026年3月31日凌晨,Anthropic 发布 @anthropic-ai/claude-code v2.1.88 到 npm 公共仓库。由于 .npmignore 中遗漏了 *.map 条目,一份 59.8MB 的 source map 文件(cli.js.map)被一同发布,其中包含了约 1,906 个文件、512,000 行未混淆的 TypeScript ****源码——注释完整、可直接阅读。
安全研究员 Chaofan Shou 在凌晨发现并发推,推文获得超过 2,100 万浏览。Claude Code 负责人 Boris Cherny 确认这是纯粹的人为打包错误,不是安全入侵。数小时内 Anthropic 撤下了 npm 包并开始对 GitHub 镜像发送 DMCA 通知——但初期波及面过广,误伤了数千个无关仓库。
韩国开发者 Sigrid Jin 用 clean-room 方法发起的 Python 重写项目 claw-code 在 2小时内获得5万 star,可能是 GitHub 历史上最快的仓库。
讽刺的是,这是 Anthropic 五天内的第二次泄漏——3月26日一次 CMS 配置错误已泄露了关于未发布模型 Mythos 的博客草稿。正如一条病毒式传播的评论所说:"Nothing says 'agentic future' like shipping the source by accident."
二、论文概览
论文:Dive into Claude Code : The Design Space of Today's and Future AI Agent Systems 作者:Jiacheng Liu, Xiaohan Zhao, Xinyi Shang, Zhiqiang Shen 机构:VILA Lab(MBZUAI)& University College London 定位:对 Claude Code v2.1.88 的 512K 行源码进行系统性设计空间分析,识别五大价值观和十三条设计原则,追踪从价值观到实现选择的映射,并与开源 Agent 系统 OpenClaw 对比,提出六个未来方向。
三、五大价值观
| 价值观 | 核心含义 |
|---|---|
| Human Decision Authority | 人类保有最终决策权,通过主体层级(Anthropic → Operator → User)形式化。用户 93% 的审批通过率不是取消审批的理由,而是引入沙箱让 Agent 在边界内自由运作 |
| Safety, Security & Privacy | 即使用户疏忽也要保护其代码/数据/基础设施。Auto-mode 威胁模型针对四类风险:过度积极、诚实错误、prompt 注入、模型偏差 |
| Reliable Execution | 做到用户"真正的意图",跨上下文窗口/会话恢复/多 Agent 委托保持连贯。三阶段循环:收集上下文 → 执行 → 验证 |
| Capability Amplification | 27% 的任务是"没有工具就不会尝试"的全新工作。设计哲学:"Unix 工具"——最小构建块,有用、可理解、可扩展 |
| Contextual Adaptability | 系统适配用户项目/工具/惯例/技能水平,关系随时间改善。Auto-approve 率从 50 次会话的 ~20% 增长到 750 次会话的 40%+ |
论文还提出了一个评估性透镜:长期人类能力保持。Anthropic 自己的调查发现了"监督悖论"——过度依赖 AI 可能侵蚀监督所需的技能。独立研究发现 AI 辅助条件下开发者理解测试得分低 17%。
四、十三条设计原则
| # | 设计原则 | 服务的价值观 | 回答的设计问题 |
|---|---|---|---|
| 1 | Deny-first with human escalation | 权威、安全 | 未识别的操作应该允许、阻止还是上报? |
| 2 | Graduated trust spectrum | 权威、适应性 | 固定权限级别,还是随时间推进的信任频谱? |
| 3 | Defense in depth | 安全、权威、可靠 | 单一安全边界,还是多层叠加的不同机制? |
| 4 | Externalized programmable policy | 安全、权威、适应性 | 硬编码策略,还是外部化配置 + 生命周期钩子? |
| 5 | Context as scarce resource | 可靠、能力 | 单次截断还是渐进管道? |
| 6 | Append-only durable state | 可靠、权威 | 可变状态、快照,还是仅追加日志? |
| 7 | Minimal scaffolding, maximal harness | 能力、可靠 | 投资脚手架侧推理,还是让模型自由推理? |
| 8 | Values over rules | 能力、权威 | 刚性程序,还是确定性护栏支撑的情境判断? |
| 9 | Composable multi-mechanism extensibility | 能力、适应性 | 统一扩展 API,还是分层机制? |
| 10 | Reversibility-weighted risk | 能力、安全 | 所有操作相同监管,还是对可逆操作更轻? |
| 11 | Transparent file-based config & memory | 适应性、权威 | 不透明数据库,还是用户可见的版本可控文件? |
| 12 | Isolated subagent boundaries | 可靠、安全、能力 | 子 Agent 共享父级,还是隔离运行? |
| 13 | Graceful recovery | 可靠、能力 | 硬失败,还是静默恢复? |
Claude Code 与三大替代设计形成鲜明对比——LangGraph 的规则化 编排、SWE-Agent 的容器隔离执行、Aider 的版本控制即安全。Claude Code 独特地将最少决策脚手架 + 分层策略执行 + 价值观驱动判断 + deny-first 默认组合在一起。
五、核心架构
5.1 Agent Loop:while-true 循环
核心是一个 queryLoop() 异步生成器(query.ts),无论交互式 CLI、headless CLI、Agent SDK 还是 IDE 集成,都走同一个循环。
社区分析发现:Claude Code 约 1.6% 的代码是 AI 决策逻辑,98.4% 是操作基础设施。模型通过 tool_use 块表达意图,harness 解析、权限检查、分发执行、收集结果。模型永远不会直接访问文件系统、运行 shell 命令或发起网络请求。
| 设计问题 | Claude Code 的回答 | 替代方案 |
|---|---|---|
| 推理在哪里? | 模型推理做什么;harness 执行行动 | Devin 维护显式规划;LangGraph 状态图路由 |
| 多少执行引擎? | 单一 queryLoop(),所有 surface 共享 | 模式特定引擎 |
| 默认安全姿态? | Deny-first + 人类上报;多安全层并行 | SWE-Agent 容器隔离;Aider Git 回滚 |
| 绑定资源约束? | 上下文窗口(200K~1M);五层压缩管道 | 计算预算或显式 scratchpad |
5.2 权限系统:7种模式 + ML 分类器
| 模式 | 描述 | 安全级别 |
|---|---|---|
plan | 用户审批所有计划 | 最高 |
default | 标准 deny-first | 高 |
acceptEdits | 自动接受文件编辑 | 中高 |
auto | ML 分类器自动决策 | 中 |
dontAsk | 跳过大部分提示 | 低 |
bypassPermissions | 跳过大部分但保留安全关键检查 | 最低 |
bubble(内部) | 员工内部模式 | 特殊 |
Auto-mode ML 分类器(yoloClassifier.ts)是两阶段系统:快速过滤 → chain-of-thought 评估,本质上是独立的 LLM 调用。
安全研究人员发现了时序漏洞:hooks、MCP 连接、settings 解析在信任对话框展示之前就执行(CVE-2025-59536, CVSS 8.7),创造了 "pre-trust 执行窗口"。另一发现:超过 50 个子命令的命令退化为单一通用审批(逐子命令解析导致 UI 冻结),证明纵深防御的独立性假设被违反时会失效。
5.3 五层压缩管道
| 层 | 功能 | 成本 |
|---|---|---|
| Budget Reduction | 裁剪超限的单个工具输出 | 最低 |
| Snip | 截断较旧的历史 | 低 |
| Microcompact | Cache-aware 压缩 | 中 |
| Context Collapse | 整体总结("读时投影") | 高 |
| Auto-compact | 语义压缩(最后手段) | 最高 |
关键设计: "读时投影"系统——完整历史保留,压缩只是给模型看的视图,支持 resume / fork / audit。
泄漏还揭示了 autoDream 模式——空闲时后台记忆整合(合并观察、去重、修剪矛盾、将模糊洞察转化为绝对事实)。
5.4 四种可扩展性机制
| 机制 | 上下文成本 | 适用场景 |
|---|---|---|
| MCP Servers | 高 | 外部服务集成 |
| Plugins | 中 | 第三方能力包 |
| Skills | 低(lazy 加载) | 项目级可复用工作流 |
| Hooks | 最低(零 context) | 确定性控制流 |
不同机制在上下文成本-灵活性-安全性轴上处于不同位置。
5.5 Subagent 委托与隔离
- 上下文隔离:每个 subagent 独立 context window + 独立 tool pool
- Worktree 隔离:可选 git worktree 文件系统隔离
- Sidechain 记录:独立文件存储,防止膨胀父级上下文
- 仅返回摘要:不将完整上下文注入父级
- KV 缓存复用:利用 prompt caching 的 fork-join 模式——并行 subagent 几乎免费
六、争议性发现
Undercover Mode(卧底模式)
约 90 行的 undercover.ts,对 Anthropic 员工自动激活,指示 Claude 不暴露 AI 身份并剥除 Co-Authored-By 归属,无强制关闭开关。Hacker News 高赞评论:"如果一个工具愿意在 commit 中隐藏自己的身份,它还愿意隐藏什么?"
Anti-Distillation(反蒸馏)
ANTI_DISTILLATION_CC flag 注入虚假工具定义毒化竞争对手训练数据,并用加密签名摘要 chain-of-thought。社区认为可通过代理轻松绕过。
KAIROS:自主守护进程
源码引用超 150 次。接收周期性 <tick> 提示决定是否主动行动;autoDream 后台记忆整合;ULTRAPLAN 远程 Opus 4.6 最长 30 分钟深度规划。通过终端焦点感知 + SleepTool 经济节流解决"主动 AI 降低用户偏好"的矛盾。
内部模型代号
| 代号 | 模型 |
|---|---|
| Capybara | Claude 4.6 |
| Fennec | Opus 4.6 |
| Numbat | 未发布 |
Capybara v8 虚假声明率 29-30% (v4 为 16.7%,显著退步)。每天 25万次浪费 API 调用(autocompact 失败)。内部 vs 外部 Prompt 实质性不同:内部用显式字数限制,比 "be concise" 减少约 1.2% 输出 token。
七、与 OpenClaw 的对比
| 维度 | Claude Code | OpenClaw |
|---|---|---|
| 系统范围 | 单用户 CLI 编码代理 | 多渠道个人助手网关 |
| 安全模型 | 每次操作 deny-first + ML 分类器 | 边界级访问控制 |
| Agent 运行时 | 单 CLI 循环 | 嵌入网关控制平面 |
| 上下文管理 | 五层压缩管道 | 结构化长期记忆 |
| 可组合性 | 独立系统 | 通过 ACP 可托管 Claude Code |
核心洞察:设计问题是稳定的,答案是上下文依赖的。
八、六个未来方向
| # | 方向 | 核心问题 |
|---|---|---|
| 1 | Observability-Evaluation Gap | 78% AI 失败不可见;观察能力 89% 采用率 vs 离线评估仅 52.4% |
| 2 | Memory 持久化 | 从"上下文副产品"升级为一等认知基底,经验层是下一步 |
| 3 | Harness 边界演进 | 哪里/何时/做什么行动?反应式 → 主动式(KAIROS 方向) |
| 4 | Horizon Scaling | 从单 session 扩展到跨数天/数周的科学级计划 |
| 5 | Governance | EU AI Act 2026年8月生效;仅 13.3% Agent 系统有安全卡片 |
| 6 | Long-term Human Capability | 如何在放大短期能力的同时保持长期人类理解? |
九、关键启示
架构层面:Agent 的核心不是 AI 决策逻辑(1.6%),而是操作基础设施(98.4%)。"多 Agent 编排装进一个 prompt" 让 LangChain/LangGraph 看起来像"寻找问题的解决方案"。
实践层面:CLAUDE.md 是"预算"而非"文档",重要规则应移到 Hooks。信任不是状态而是轨迹。Deny-first + Defense in depth 是正确默认姿态,但注意层间独立性假设。
战略层面:代码可以一周内重构,路线图无法取消泄漏。Feature flag 名称比代码本身更具战略价值。Model 是护城河,CLI 不是。
如论文结尾所述:
"The code can be refactored. The trust deficit cannot."
参考链接
- 论文原文:arxiv.org/abs/2604.14…
- 论文 GitHub:github.com/VILA-Lab/Di…
- Layer5 技术分析:layer5.io/blog/engine…
- Varonis 安全分析:www.varonis.com/blog/claude…
- Sabrina.dev 全面分析:www.sabrina.dev/p/claude-co…
- Engineer's Codex 拆解:read.engineerscodex.com/p/diving-in…