Claude Code 总体架构鸟瞰图
分析对象:
@anthropic-ai/claude-code(CLI 终端编程助手)。技术栈:TypeScript + React + Ink 终端 UI + Commander.js。
cc 能够学到的
1.agent 主循环
1.1 退出条件 completed、aborted、max_turns、prompt_too_long 1.2 子 Agent 编排:同步异步子Agent/Worktree
1.3 core:while model-》工具执行 ,很薄 1.4 edit:搜索替换而不是行号编辑,安全机制(备份,时间戳,读写判断)
2. 消息压缩,渐进式的压缩,并且会用一个fork agent 异步的来做这件事
2.1 Tool Result
2.2 History Compact
2.3 Auto Compact :摘要继续压缩
3. 权限系统
3.1 规则语法:命令/路径/mcp (静态检查) 3.2 返回值:deny / ask / 自身权限检查 (工具专属检查) 3.3 路径防护+ LLM 分类器对本次行为评估 () 4. 插件 skill,区分内部/外部/文件/权限策略,通过.skill 扩展
1. 分层总览
text
CLI 入口 main / Commander 选项与生命周期
对话循环 query() 异步生成器 → API 流式 → 工具执行
工具 / Task / 命令 45+ 工具、7 种 Task、80+ 斜杠命令
上下文与扩展 CLAUDE.md、plugins、skills、MCP
服务基础设施 API/Auth、Settings、History、Cost、LSP
终端 UI 自定义 Ink + 大量 components2. 核心数据流
mermaid
flowchart TB
U[用户输入] --> R[REPL / 斜杠命令]
R --> Q[query 生成器]
Q --> C[上下文 + system prompt]
C --> API[callModel 流式]
API --> T{tool_use?}
T -->|是| P[权限 + Hooks + tool.call]
P --> Q
T -->|否| End[结束本轮]3. 关键设计决策(摘要)
| 决策 | 原因 |
|---|---|
async generator query() | 流式事件、可取消、UI 逐步渲染 |
| 统一 Tool 接口 | 内置工具与 MCP 工具同一执行管线 |
| 多层权限 | 规则 → Hook → 分类器 → UI,fail-closed |
| 多态 Task | 子代理本地/远程/进程内多种形态 |
| 插件清单 | skills、commands、hooks、MCP 可扩展 |
| 自定义 Ink | 复杂 TUI(Vim、diff、60fps 差分) |
| Prompt cache 复用 | 子代理 fork 与父请求前缀一致以省 token |
| 多 API 后端 | Anthropic / Bedrock / Vertex 等 |
4. 阅读顺序
01 启动 → 02 对话循环 → 03 工具 → 11 权限 → 07 上下文 → 04 Task → 05 命令 → 08 插件 → 09 MCP → 06 UI → 10 服务 → 12 专题索引。
5. 源码入口(表)
| 角色 | 典型路径(概念) |
|---|---|
| 入口 | entrypoints/cli.tsx → main.tsx |
| 对话循环 | query.ts |
| 工具 | tools/、Tool.ts |
| 命令 | commands/ |
| UI | ink/、components/ |
不贴行级实现;按需在本机 source map 跳转。