论文通过分析 Claude Code 泄露源码,揭示其生产级 Coding Agent 架构的核心是“最小 AI 决策+最大确定性环境”设计。仅约 1.6% 代码为 AI 逻辑,其余 98.4% 用于构建安全、可靠的操作框架。架构围绕人类决策权、安全等五种价值驱动,采用七层独立防御体系保障工具调用安全,并通过五层渐进压缩策略高效管理上下文窗口。其扩展机制按上下文成本分级,子 Agent 采用隔离设计,整体强调透明性与用户可控性,与依赖状态图或显式规划的主流路径形成鲜明对比。
[论文分享] 深入阅读 Claude Code 泄露源代码,结合 Anthropic 官方文档和社区分析,重建出一个生产级 Coding Agent 的完整架构图谱,并以独立开源系统 OpenClaw 作为对照组!
论文地址:https://arxiv.org/pdf/2604.14228
最核心的一个数字:1.6% vs 98.4%
社区估算:Claude Code 整个代码库里,只有约 1.6% 是"AI 决策逻辑"(提示词、模型调用、循环),其余 98.4% 是确定性的运行环境(permission、context、tool routing、recovery)。
这个悬殊比例意味着:
· 模型几乎拥有完全自主决策权(reason 在哪做、调什么工具)
· 但模型从不直接接触文件系统、shell、网络
· 工程复杂度不是为了约束模型,而是为了让模型在一个安全富饶的环境里自由发挥
这和 LangGraph(用状态图约束控制流)、Devin(显式 planner)走的是相反路线:最小脚手架 + 最大化操作型 harness。
团队做设计权衡时的五种人类价值驱动整套架构
· 人类决策权:用户最终拥有控制权;通过原则等级(Anthropic→operators→users)形式化
· 安全/隐私:即使用户不专心,系统也要保护代码、数据与基础设施
· 可靠执行:既要单轮正确,也要跨上下文窗口、跨会话、跨子 agent 保持一致
· 能力放大:让用户做以前根本不会尝试的事(Anthropic 内部数据:~27% 任务是"没有这工具就不会做"的)
· 情境适配:系统适应用户项目、习惯、技能,关系随时间演进
第六个是评估视角而非设计价值:长期人类能力保留——这是论文最重要的批判性观察,后面会展开。
十三条设计原则与架构骨架
· Deny-first with human escalation(默认拒绝、不识别就升级给人)
· Graduated trust spectrum(信任是渐进光谱)
· Defense in depth(多重独立安全层)
· Externalized programmable policy(策略外部化,可配置)
· Context as scarce resource(上下文是稀缺资源)
· Append-only durable state(追加式持久化)
· Minimal scaffolding, maximal harness(最小脚手架 + 最大 harness)
· Values over rules(重价值判断,轻硬规则)
· Composable multi-mechanism extensibility(可组合的多机制扩展)
· Reversibility-weighted risk(按可逆性加权评估风险)
· Transparent file-based config/memory(透明文件而非黑盒数据库)
· Isolated subagent boundaries(子 agent 隔离)
· Graceful recovery and resilience(优雅恢复)
整体架构可以读作两层视图:
· 七组件视图(高层):用户 → 接口 → Agent Loop → 权限系统 → 工具 → 状态/持久化 → 执行环境
· 五层视图(细化):Surface 层(CLI/SDK/IDE)→ Core 层(loop + compaction)→ Safety/Action 层(权限、hooks、tools、sandbox、subagent)→ State 层(context 装配、session、CLAUDE.md)→ Backend 层(shell、MCP、远程执行)
Agent 主循环:一个朴素的 while-true
queryLoop() 是一个 async generator,每一轮固定走 9 步:设置解析 → 状态初始化 → 上下文装配 → 五个 pre-model shaper → 模型调用 → tool_use 派发 → 权限网关 → 工具执行 → 停止判定。
不再做的事:没有显式 planner,没有状态图,没有 tree search。这是 ReAct 的最简实现。
工具执行用 StreamingToolExecutor:模型一边流式输出 tool_use,一边并行执行只读工具,写操作串行。结果按收到顺序回填,保证模型看到的工具结果顺序与它发起请求时的顺序一致。
恢复机制有五种(输出 token 升级、reactive compact、prompt-too-long 处理、流式回退、fallback model),全部是"先静默自救、不行才告诉人"。
安全的"七层防御"
任何工具调用都要穿过这七层,任何一层都可以否决:
1. Tool 预过滤(被全局拒绝的工具甚至不会出现在模型视野里)
2. Deny-first 规则(deny 永远压制 allow,即使 allow 更具体)
3. Permission Mode 约束(plan/default/acceptEdits/auto/dontAsk/bypassPermissions/bubble 共七模式)
4. Auto-mode ML 分类器(yoloClassifier.ts,独立 LLM 调用判定安全性)
5. Shell sandbox(独立于权限系统的文件系统/网络隔离)
6. Resume 不恢复 session 级权限(强制重新授权)
7. Hook 拦截(PreToolUse 可阻断/重写/异步审批)
最关键的设计哲学:Anthropic 自己的研究发现用户对权限提示的批准率高达 93%——这意味着交互式确认在行为上不可靠。所以架构选择是"不靠人盯着",而是用 sandbox + 分类器把需要人决策的次数压低 84%。
上下文管理:五层渐进式压缩
模型的上下文窗口是整套系统的瓶颈资源。每次模型调用前依次跑 5 个 shaper:
· Budget reduction(始终生效):单条 tool 结果超尺寸就替换为引用
· Snip:删掉旧历史段
· Microcompact:缓存友好的细粒度压缩,等 API 返回后再用真实 cache_deleted_input_tokens
· Context collapse:read-time projection——存储不动,模型看到的是投影视图(这是论文里很精彩的设计)
· Auto-compact:兜底的全模型生成式摘要
为什么要 5 层而不是 1 层:每层成本不同,先做便宜的轻压缩,不行才升级。这是 lazy-degradation 思想。代价是用户难以预测系统行为,因为有些层(特别是 context collapse)对用户不可见。
CLAUDE.md 的四级层次(managed→user→project→local)是文件型记忆——刻意拒绝向量数据库,理由是"用户必须能读、能改、能 git commit"。代价是检索粒度只能到文件级(用 LLM 扫文件头选最多 5 个),不如向量检索精细。
重要洞察:CLAUDE.md 是以"用户消息"形式注入而非 system prompt,因此对模型的约束是概率性的。真正的强制力来自 deny-first 的权限规则。这是一个刻意的"指引层(概率) vs 执行层(确定)"分离。
扩展机制:四个、不是一个
论文回答了一个常见困惑——为什么 Claude Code 既有 MCP,又有 plugins、skills、hooks?
答案是这四者承担的上下文成本不同:
· MCP servers:外部服务集成,上下文开销高
· Plugins:多组件打包分发,上下文开销中
· Skills:领域指令 + 元工具,上下文开销低
· Hooks:生命周期拦截,上下文开销默认零
梯度上下文成本意味着便宜的扩展(hooks)可以大量铺开,昂贵的(MCP)保留给真正需要新工具的场景。代价是开发者要学 4 套 API。
Hook 系统极其细致:源码定义了 27 种事件,其中 5 种参与权限决策,22 种用于生命周期/编排。
子 Agent:隔离而非共享
通过 AgentTool(Task 是它的 legacy alias)派遣。子 agent 有三种隔离模式:
· Worktree:临时 git worktree,文件系统隔离
· Remote(仅内部):远端 Claude Code 运行
· In-process(默认):共享 FS,隔离上下文
关键约束:子 agent 只把最终摘要文本回传给父级,完整 transcript 走 sidechain 存独立 .jsonl 文件——既保留可审计性,又不污染父上下文。
代价:每次调用基本都得自包含 prompt(除 fork-subagent 外)。Anthropic 自己披露 agent teams 模式 token 开销约为普通 session 的 7×,这才是为什么"摘要回传"如此关键。
多 agent 协调用文件锁而不是 message broker——零依赖、可调试,但牺牲吞吐。
持久化:append-only JSONL
Session 存为几乎只追加的 JSONL(极少数清理重写除外)。三条独立持久化通道:
1. Session transcript(项目级,每 session 一文件)
2. 全局 prompt history(仅用户输入,supports Up 与 Ctrl+R)
3. 子 agent sidechain(独立 .jsonl + .meta.json)
--resume 重放 transcript 重建会话,但刻意不恢复 session 级权限——这是把"信任"作为会话隔离的安全不变量:用户每次都重新授权,避免旧上下文中的授权决策被带进新的语境。
compact_boundary 标记里嵌入 headUuid/anchorUuid/tailUuid,让 loader 在读取时打补丁拼接消息链——既压缩了上下文,又保留了完整历史的可重建性。
# 与 OpenClaw 的对照:同样的问题,不同的答案
维度:Claude Code vs. OpenClaw
· 系统形态:临时 CLI 进程 vs. 持久化网关 daemon
· 信任模型:每动作 deny-first 评估 + 7 模式 vs. 网关边界鉴权(DM 配对、白名单、可选沙箱)
· Agent runtime:queryLoop() 是系统中心 vs. Pi-agent 嵌入网关 RPC,per-session 队列
· 扩展架构:4 机制按上下文成本梯度 vs. manifest-first 插件,12 种能力,集中注册表
· 内存:CLAUDE.md 4 级 + 5 层压缩 vs. 工作区引导文件 + dreaming 长期记忆推举
· 多 agent:父-子任务委派 vs. 路由(多 agent 服务不同渠道) + 委派两层分离
最有意思的发现是两者可组合:OpenClaw 可以通过 ACP 把 Claude Code 当作外部 coding harness 托管。这暗示 agent 设计空间不是平面分类,而是层级式的——网关层和任务层可以叠在一起。
核心洞察:"Claude Code 把信任边界放在模型与执行环境之间;OpenClaw 把它放在网关周界。"
五大价值张力(最有思想深度的章节)
· Authority × Safety:93% 批准率证明人类督查不可靠,安全要靠分类器/sandbox 补
· Safety × Capability:>50 子命令的 bash 会跳过 per-subcommand 检查(解析慢导致 UI 卡顿)——defense-in-depth 的层共享性能瓶颈
· Adaptability × Safety:多个 CVE 利用"信任对话框出现前"的 hook/MCP 初始化窗口攻击
· Capability × Adaptability:主动式提示让任务完成率 +12-18%,但高频时用户偏好骤降
· Capability × Reliability:上下文有界 + 子 agent 隔离 → 局部好决策 ≠ 全局好结果
第六视角:长期人类能力保留
论文不把它列为价值,而作为评估透镜,外部经验证据汇总:
· Becker et al. 2025(16 名经验丰富开发者 RCT):AI 工具使开发者慢 19%,但他们自我感觉快了 20%
· Shen & Tamkin 2026:AI 辅助组理解力测试低 17%
· He et al. 2025(Cursor 在 807 个仓库的因果分析):代码复杂度 +40.7%,初期速度增益三个月内消散
· Liu et al. 2026:30.4 万 AI 提交审计,约 1/4 引入的问题持续到最新版本,安全问题留存率更高
· Kosmyna et al. 2025(54 人 EEG 研究):LLM 用户神经连接性减弱,且移除 AI 后仍持续
· Rak 2025:2023→2024 入门级技术岗招聘下降 25%
论文的判断是:Claude Code 显著放大短期能力,但提供的支持长期人类成长、深度理解、代码库连贯性的机制非常有限。 论文结尾把"未来系统应当把可持续性差距作为一等公民设计问题"作为最重要的开放挑战。
六个开放方向(未来 agent 系统)
- 可观察性—评估鸿沟:78% 的 AI 失败是隐性的,89% 团队有可观察性但只 52% 做离线评估。需要 generator-evaluator 分离的脚手架。
- 跨会话持久性:CLAUDE.md(静态)和 transcript(单会话)之间的"中间层"是空白
- Harness 边界演化:where/when/what/with whom 四个轴向的扩展(特别是物理 VLA 行动会改变 reversibility-weighted risk 的代价不对称)
- Horizon scaling:从单会话到多周期科学研究的可靠性
- 治理与监管:EU AI Act(2026 年 8 月全面适用)、GPAI Code of Practice 对日志、透明度、人类监督提出外部约束
- 长期人类能力作为一等设计目标:测量层与设计层都是空白
值得记住的几个判断
"模型推理在哪里、harness 执行在哪里——是整个 agent 系统设计的根问题。"
"95% 单步准确率下,100 步任务成功率只有 0.6%。"——这是为什么每一步都要验证。
"前沿模型在编码任务上的能力正在收敛,operational harness 的质量正在成为主要差异化因素。"
"agent 的设计选择不是平面的分类,而是层级化的——任务级 harness 可以被网关级控制平面托管。"
"工程复杂度不是为了限制模型决策,而是为了让模型能更好地决策。"
对工程实践的启示
对正在构建 agent 系统的我们:
· 投入确定性基础设施(context 管理、安全分层、恢复机制)比给越来越强的模型套 planning 脚手架更有回报
· deny-first + 多层独立检查比单一沙箱在生产环境更鲁棒,但要警惕共享性能瓶颈导致的同时降级
· 上下文压缩做成多层渐进式比一次性截断或单步摘要更可靠,但用户需要可观察性
· append-only 持久化 + 不跨会话恢复权限是把审计性和安全不变量同时拿到的便宜做法
· 扩展机制按上下文成本分层:让"贵的"扩展(MCP)只用在真正需要新工具的场景,"便宜的"(hooks)可以铺开
· 子 agent 用摘要回传,不要共享 transcript——否则 token 开销线性爆炸(Claude Code 数据:7×)
· 把用户长期能力保留写进设计目标,而不是只在事后用 metric 衡量
A must read for anyone interested in building practical AI systems in 2026: Dive into Claude Code: The Design Space of Today's and Future AI Agent Systems The paper explains the architecture of a modern production-grade AI agent system (Claude Code) by analyzing its source code. This is what they call a "harness" of an agentic coding system. Learn by reading with an AI tutor: https://www.chapterpal.com/s/9b6bb47a/dive-into-claude-code-the-design-space-of-todays-and-future-ai-agent-systems PDF: https://arxiv.org/pdf/2604.14228在 X 查看被引用的帖子
来源:meng shao · x.com