Claude Code Architecture
一份生产级 AI Agent 工程实践的完整解析。基于泄露的 Claude Code 源码, 深度剖析其架构设计、核心算法、系统模块与工程哲学。
| Category | Technology |
|---|---|
| Runtime | Bun |
| Language | TypeScript (strict) |
| Terminal UI | React + Ink |
| CLI Parsing | Commander.js |
| Schema Validation | Zod v4 |
| Code Search | ripgrep |
| Protocol | MCP SDK, LSP |
| API | Anthropic SDK |
| State Management | Zustand (custom impl) |
- 并行预取: MDM配置、Keychain OAuth、API预连接
- 初始化: 配置验证、CA证书、优雅关闭、事件日志、LSP服务器、遥测
- 功能特性加载: 20+ feature flags (PROACTIVE、KAIROS、COORDINATOR_MODE等)
| Layer | Mechanism | Description |
|---|---|---|
| 1 | API 级指数退避重试 | 网络抖动、API 过载 |
| 2 | 529 过载处理 | Anthropic 专用错误码 |
| 3 | 输出 Token 恢复 | 截断后自动扩容 |
| 4 | 响应式压缩 | 上下文溢出时紧急压缩 |
| 5 | 上下文排空 | 分批处理过长上下文 |
| 6 | 模型 Fallback | 降级到其他模型 |
| 7 | 无人值守持久重试 | 最大退避 5 分钟,6 小时重置 |
最大退避 5 分钟,重置上线 6 小时 — 真正考虑长时间运行场景的设计
| Site | Description |
|---|---|
collapse_drain_retry | 上下文折叠排空后重试 |
reactive_compact_retry | 反应式压缩后重试 |
max_output_tokens_escalate | 输出token升级后重试 |
max_output_tokens_recovery | 输出token恢复后重试 |
stop_hook_blocking | Stop Hook阻塞后重试 |
token_budget_continuation | Token Budget续费后继续 |
(normal) | 正常工具执行后下一轮 |
- 写操作先写入临时覆盖层
- 确认后复制回真实文件系统
- 拒绝后直接删除覆盖层
- 在确认当前建议时,下一条已经开始预执行
像 CPU 指令流水线一样,极大隐藏等待延迟
每个工具都有完整的描述 Prompt,包含:
- 描述: 工具用途
- 使用限制: 何时使用/何时避免使用
- 参数说明: 各参数含义
- 示例: 最佳实践
| Level | Name | Trigger | Strategy |
|---|---|---|---|
| 1 | Snip | 每轮调用前 | 轻量裁剪旧消息头尾 |
| 2 | Micro Compact | Token 占用高 | 缓存感知 / 基于时间 / API级压缩 |
| 3 | Auto Compact | 超过阈值 | AI 全量摘要,浓缩成结构化摘要 |
| 4 | Reactive Compact | 413 错误 | 紧急压缩 + 重试 |
压缩后不是暴力丢弃,而是智能恢复优先级(最近读取文件 > plan 文件 > 已调用技能)
| Type | Description | Content |
|---|---|---|
| user | 用户角色、目标、偏好 | 角色、偏好、协作方式 |
| feedback | 用户反馈指导 | 规则偏好、避免重复的错误 |
| project | 项目状态、目标 | 谁在做什么、为什么、截止时间 |
| reference | 外部系统指针 | URL、位置、如何找到信息 |
Complete the task fully—don't gold-plate, but don't leave it half-done.
=== CRITICAL: READ-ONLY MODE - NO FILE MODIFICATIONS ===
=== CRITICAL: READ-ONLY MODE ===
Your job is not to confirm the implementation works—it's to try to break it.
| Model | Description |
|---|---|
| Fork Agent | 子 agent 继承父 agent 完整上下文,独立分支执行 |
| In-process Teammate | 同进程内异步执行,用 async local storage 隔离 |
| Split-pane Teammate | 在 tmux/iTerm2 里开分窗格 |
Coordinator 角色: 指导 workers 进行 research/implement/verify
Agent tool: 生成异步 workersSendMessage tool: 继续现有 workersTaskStop tool: 取消 workers- Worker 结果: 以
<task-notification>XML 到达
| Category | Checks |
|---|---|
| 命令完整性 | 不完整命令检测 |
| 注入攻击 | JQ 函数注入 |
| IFS 注入 | |
| Token 注入 | |
| Unicode 伪装 | |
| 危险字符 | SH 元字符嵌入 |
| 换行攻击 | |
| 命令替换模式 | |
| 解释器黑名单 | Python、Node、Ruby、Perl、PHP 默认禁止自动执行 |
| Event | Timing | Usage |
|---|---|---|
| PreToolUse | 工具执行前 | 修改输入、阻止执行 |
| PostToolUse | 工具执行后 | 修改输出 |
| PostToolUseFailure | 工具错误后 | 错误处理 |
| PreCompact | 压缩前 | 准备压缩 |
| PostCompact | 压缩后 | 后处理 |
| SessionStart/End | 会话开始/结束 | 初始化/清理 |
| Stop | 模型停止时 | 停止钩子 |
企业用户可以在不修改源码的情况下深度定制行为
不信任任何东西,层层验证 — 这是被真实安全事件教训后才有的设计
| Priority | Type |
|---|---|
| 1 (Highest) | Override system prompt |
| 2 | Coordinator system prompt |
| 3 | Agent system prompt |
| 4 | Custom system prompt (--system-prompt) |
| 5 | Default system prompt |
| 6 (Lowest) | Append |
Anthropic API 有提示缓存机制,缓存命中可大幅降低成本。精确切割静态/动态内容,最大化缓存命中率
错误和成功使用完全相同的消息格式,唯一区别是 is_error: true
| Layer | Error Type | Recovery Strategy |
|---|---|---|
| 1 | PTL (Prompt Too Long) | 上下文折叠 → 反应式压缩 → 用户报告 |
| 2 | 输出 Token 超限 | 升级到 64K → 恢复消息 → 最多3次 |
| 3 | 模型过载 (529) | 切换 fallbackModel → 重试 |
| 4 | 工具执行错误 | 错误反馈 → Claude 分析 → 调整策略 |
| Type | Description |
|---|---|
| prompt | AI 驱动,展开为提示文本 |
| local-jsx | Ink UI 组件 |
| local | 同步本地操作 |
| Aspect | Recommendation |
|---|---|
| 工具设计 | 每个工具提供完整描述 Prompt,包含使用限制 |
| 错误处理 | 成功/失败使用相同格式,仅用 is_error 区分 |
| 反馈循环 | 工具结果必须反馈给模型让其调整策略 |
| 上下文管理 | 实现自动压缩防止上下文溢出 |
| 记忆系统 | 分离四种记忆类型,定期提取和更新 |
| 权限控制 | 实现多层权限检查和确认机制 |
| 自愈能力 | 诊断原因再行动,而非盲目重试 |
| 智能体分工 | 不同任务使用不同类型的专业智能体 |
| 验证机制 | 验证智能体应该试图破坏,而非确认工作 |
| 提示词组织 | 静态/动态分离,支持缓存优化 |
- 反馈循环 (最核心) - 工具执行结果都作为 tool_result 返回
- 精心设计的 System Prompt - "诊断原因再行动"而非"盲目重试"
- 四层错误恢复 - PTL恢复 → 输出超限恢复 → 模型过载回退 → 工具错误自然恢复
- 防错设计 - EditTool 的"必须先读取"、"唯一性检查"
- 错误记忆保持 - Compact 显式保留 "Errors and fixes" 段
- 对抗性验证 - Verification Agent 专门设计为"试图破坏实现"
- 多智能体分工 - Explore → Plan → Implementation → Verification
- 权限安全网 - 分类器 + 沙箱 + Hook 系统
- 上下文管理 - 自动压缩 + 微压缩 + 上下文折叠
- Prompt Cache 优化 - 静态/动态分界线 + Fork 共享缓存