一、引言
在AI编程工具百花齐放的今天,Anthropic推出的Claude Code以其独特的「终端原生+代理式」架构,迅速成为开发者社区的焦点。截至2026年3月,其GitHub仓库已获得82.6k+ Stars,成为最受欢迎的AI编程工具之一。
与传统的代码补全工具(如GitHub Copilot)不同,Claude Code不是一个被动的「建议者」,而是一个主动的「执行者」——它能理解自然语言指令,自主规划任务步骤,直接在终端中读写文件、执行命令、运行测试,形成完整的「感知-决策-执行-验证」闭环。
🔗 仓库地址:https://github.com/anthropics/claude-code
📜 语言构成:Shell 47.0% | Python 29.3% | TypeScript 17.7%
本文将从架构设计、核心机制、工具系统、多Agent协作等维度,对Claude Code进行全面的技术剖析。
二、整体架构概览
2.1 架构分层
Claude Code采用清晰的分层架构,自顶向下可分为四个层次:
┌─────────────────────────────────────────────────────┐
│ 用户接口层 (Surfaces) │
│ Terminal CLI │ VS Code │ Desktop App │ JetBrains │ Web │
├─────────────────────────────────────────────────────┤
│ Agentic Loop 核心层 │
│ Gather Context → Take Action → Verify Results │
├─────────────────────────────────────────────────────┤
│ 工具系统层 │
│ File Ops │ Search │ Execution │ Web │ Code Intelligence │
├─────────────────────────────────────────────────────┤
│ 上下文管理层 │
│ CLAUDE.md │ Auto Memory │ Context Compression │ Sub-agents │
└─────────────────────────────────────────────────────┘
核心设计哲学可以概括为一句话:
模型即Agent,工程即Harness。
Claude Code的核心智能来自Claude大模型本身(Agent),而工程团队构建的是一个Harness(套件)——为模型提供工具、知识、观察、动作接口和权限治理的运行环境。
Harness = Tools + Knowledge + Observation + Action Interfaces + Permissions
2.2 仓库结构
anthropics/claude-code/
├── .claude-plugin # 插件配置
├── .claude/commands/ # 自定义命令目录
├── .devcontainer/ # 开发容器配置
├── Script/ # 脚本目录
├── examples/ # 使用示例
├── plugins/ # 插件扩展
├── scripts/ # 工具脚本
├── README.md # 主文档
├── CHANGELOG.md # 版本变更
└── SECURITY.md # 安全策略
2.3 多Surface统一体验
Claude Code的一大亮点是跨Surface一致性:无论用户通过终端CLI、VS Code扩展、桌面应用还是Web界面使用,底层引擎、指令配置、MCP服务器设置均保持共享和同步。
| Surface | 特点 |
|---|---|
| Terminal CLI | 终端原生,直接访问完整开发工具链 |
| VS Code Extension | 内联diff、计划审查、历史记录 |
| Desktop App | 可视化diff审查、会话管理 |
| Web | 无需本地环境,浏览器即可使用 |
| JetBrains IDE | 完整的JetBrains套件集成 |
三、核心机制:Agentic Loop
3.1 循环原理
Agentic Loop是Claude Code的心脏。与简单的「输入-输出」对话不同,它是一个持续自适应的循环,包含三个交织的阶段:
- Gather Context(收集上下文):搜索文件、读取代码、探索项目结构
- Take Action(采取行动):编辑文件、执行Shell命令、运行代码
- Verify Results(验证结果):运行测试、检查输出、审查变更
3.2 循环的核心代码模式
用伪代码表示,整个Agentic Loop的骨架极其精简:
def agent_loop(messages):
while True:
# 1. 调用 LLM 获取下一步决策
response = client.messages.create(
model=MODEL,
system=SYSTEM_PROMPT,
messages=messages,
tools=TOOLS,
)
messages.append({"role": "assistant", "content": response.content})
# 2. 检查是否需要使用工具
if response.stop_reason != "tool_use":
return # 无需工具调用,返回文本结果
# 3. 执行工具并收集结果
results = []
for block in response.content:
if block.type == "tool_use":
output = TOOL_HANDLERS[block.name](**block.input)
results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": output,
})
# 4. 将工具结果作为新消息追加,继续循环
messages.append({"role": "user", "content": results})
关键洞察:
- 整个循环的控制权在模型手中——模型决定是否使用工具、使用哪个工具、以什么参数调用
- Harness代码只负责执行模型的决策,然后将结果反馈回去
- 循环会一直持续,直到模型认为任务完成(
stop_reason != "tool_use")
3.3 实际执行示例
当用户输入「修复失败的测试」时,Claude Code的典型执行路径:
用户: "修复失败的测试"
│
▼
[Gather] 运行测试套件,识别失败用例
│
▼
[Gather] 读取错误输出,分析失败原因
│
▼
[Gather] 搜索相关源文件
│
▼
[Gather] 读取这些文件内容
│
▼
[Action] 编辑文件修复问题
│
▼
[Verify] 重新运行测试验证修复
│
├─ 通过 → 输出结果给用户
│
└─ 失败 → 回到 [Gather] 继续分析
每一步的工具调用结果都会反馈回模型,模型根据最新信息动态调整下一步策略。这种自适应能力是Claude Code与传统脚本化工具的根本区别。
四、工具系统
4.1 工具设计原则
工具是将Claude从「文本生成器」转变为「代理系统」的关键。Claude Code的工具设计遵循三大原则:
| 原则 | 说明 |
|---|---|
| 原子性 | 每个工具只做一件事,职责单一 |
| 可组合性 | 工具可以自由组合,形成复杂工作流 |
| 描述清晰 | 每个工具有详尽的文档,模型能准确理解其能力边界 |
4.2 内置工具清单
Claude Code包含18个内置工具,覆盖开发全流程:
文件操作类
| 工具 | 功能 |
|---|---|
Read / ReadFile |
读取文件内容 |
Write |
创建或覆盖文件 |
Edit |
精确的字符串替换编辑 |
MultiEdit |
批量编辑多个文件 |
搜索类
| 工具 | 功能 |
|---|---|
Glob |
按模式搜索文件路径 |
Grep |
基于正则表达式搜索文件内容 |
CodebaseSearch |
语义化代码搜索 |
执行类
| 工具 | 功能 |
|---|---|
Bash |
执行Shell命令(构建、测试、Git等) |
Web类
| 工具 | 功能 |
|---|---|
WebSearch |
互联网搜索 |
WebFetch |
获取网页内容 |
任务管理类
| 工具 | 功能 |
|---|---|
TodoWrite |
创建和管理任务列表(2,161 tokens描述) |
EnterPlanMode |
进入计划模式 |
Agent协作类
| 工具 | 功能 |
|---|---|
SendMessageTool |
Agent间消息传递 |
TeammateTool |
管理团队和子Agent |
4.3 工具注册与分发机制
工具通过一个注册表(Registry)进行管理,循环中通过名称分发到具体的处理函数:
TOOL_HANDLERS = {
"bash": execute_bash,
"read_file": read_file,
"write_file": write_file,
"edit": edit_file,
"glob": glob_search,
"grep": grep_search,
"codebase_search": semantic_search,
"web_search": web_search,
"web_fetch": web_fetch,
"todo_write": todo_write,
# ...
}
模型在每次API响应中返回工具调用请求(tool_use block),Harness提取工具名称和参数,从注册表中查找对应处理函数并执行,最后将结果以tool_result格式追加到消息历史中。
4.4 MCP扩展工具
除了内置工具,Claude Code还支持通过Model Context Protocol (MCP) 接入外部工具和数据源。MCP是Anthropic提出的一个开放标准,允许连接:
- 数据库(PostgreSQL、MySQL等)
- 项目管理工具(Jira、Linear)
- 通信平台(Slack、Discord)
- 文档系统(Google Drive、Notion)
这使得Claude Code的工具能力具备了无限扩展性。
五、上下文管理
5.1 上下文窗口
Claude Code的上下文窗口承载了所有必要的信息:
| 内容类型 | 说明 |
|---|---|
| 对话历史 | 用户与Agent的完整交互记录 |
| 文件内容 | 读取的源代码、配置文件 |
| 命令输出 | Shell命令执行结果 |
| CLAUDE.md | 项目级别的持久化指令 |
| Auto Memory | 自动学习的项目模式和偏好 |
| 系统指令 | 内置的系统提示词 |
5.2 CLAUDE.md:项目记忆
CLAUDE.md是Claude Code的核心配置机制。它是一个放在项目根目录的Markdown文件,每次会话开始时自动加载,为模型提供项目特定的上下文:
# CLAUDE.md
## 项目架构
- 前端:React + TypeScript
- 后端:Go + gRPC
- 数据库:PostgreSQL
## 编码规范
- 使用 ESLint + Prettier
- 提交信息遵循 Conventional Commits
- 测试覆盖率要求 > 80%
## 常用命令
- `make build` - 构建项目
- `make test` - 运行测试
- `make lint` - 代码检查
5.3 上下文压缩(Compaction)
长会话会导致上下文窗口逐渐填满。Claude Code采用三层压缩策略:
- 清理旧工具输出:移除早期的工具调用结果(通常是最占空间的内容)
- 对话摘要:将历史对话压缩为核心要点的摘要
- 持久化关键信息:将重要规则和模式写入
CLAUDE.md,而非依赖对话记忆
用户也可以通过/compact命令手动触发压缩。
5.4 子Agent隔离
为了避免复杂任务污染主对话上下文,Claude Code可以生成子Agent:
主 Agent(协调者)
├── 子 Agent A(独立上下文)→ 返回摘要
├── 子 Agent B(独立上下文)→ 返回摘要
└── 子 Agent C(独立上下文)→ 返回摘要
每个子Agent拥有独立的消息列表,完成任务后仅向主Agent返回结果摘要。这一机制有效控制了上下文膨胀。
六、多Agent协作架构
6.1 协作模式
Claude Code支持高级的多Agent协作模式,这是其区别于大多数AI编程工具的重要特性:
6.2 Task系统
Task系统是多Agent协作的基础,提供基于文件系统的任务CRUD和依赖图管理:
任务看板
├── task-001: 实现用户认证模块 [completed]
├── task-002: 编写认证API测试 [in_progress] → 依赖 task-001
├── task-003: 集成前端登录页面 [pending] → 依赖 task-001
└── task-004: 部署到测试环境 [pending] → 依赖 task-002, task-003
6.3 异步邮箱通信
Agent之间通过JSONL格式的异步邮箱进行通信,支持以下消息类型:
| 消息类型 | 说明 |
|---|---|
message |
发送给特定队友的直接消息 |
broadcast |
广播给所有队友 |
shutdown_request |
请求队友关闭 |
shutdown_response |
响应关闭请求 |
plan_approval_response |
审批计划 |
6.4 Worktree隔离
为避免多个Agent在同一目录下产生文件冲突,每个Agent可在独立的Git Worktree中工作:
项目仓库
├── worktree-agent-A/ # Agent A 的独立工作目录
├── worktree-agent-B/ # Agent B 的独立工作目录
└── worktree-agent-C/ # Agent C 的独立工作目录
任务ID与Worktree绑定,确保每个Agent的文件操作互不干扰。
6.5 自主认领机制
在高级模式下,Agent无需中央调度,可自主扫描任务看板并认领未分配的任务。这大幅提升了并行效率,减少了协调开销。
七、系统提示词架构
7.1 模块化提示词
Claude Code并不使用单一的系统提示词,而是采用模块化、条件组装的策略。根据对v2.1.81版本的分析,其系统提示词由110+个字符串组成,包括:
| 类别 | 数量 | 典型Token数 |
|---|---|---|
| Agent提示词(子Agent、工具类) | ~15 | 384 - 5,667 tks |
| 内置工具描述 | 18 | 129 - 2,161 tks |
| 数据引用(SDK/API文档) | ~12 | 2,837 - 5,106 tks |
| 系统提醒 | 40+ | 30 - 1,297 tks |
| Skills | ~5 | 2,625 - 5,379 tks |
7.2 条件注入
不同的提示词片段根据以下条件动态注入:
- 运行环境:Terminal / VS Code / Desktop等
- 当前模式:Normal / Plan / Auto
- 功能状态:是否启用了团队协作、学习模式等
- 用户配置:Hooks、MCP服务器、自定义命令等
这种设计在控制Token消耗的同时,确保了模型获得最相关的指令上下文。
八、安全与权限治理
8.1 权限模式
Claude Code提供四种权限模式,平衡自主性与安全性:
| 模式 | 文件编辑 | Shell命令 | 适用场景 |
|---|---|---|---|
| Default | 需确认 | 需确认 | 日常开发 |
| Auto-accept edits | 自动 | 需确认 | 信任编辑操作 |
| Plan mode | 只读 | 只读 | 仅生成计划 |
| Auto mode | 自动 | 自动+后台安全检查 | 高度自动化 |
8.2 检查点机制
在编辑文件之前,Claude Code会自动创建快照(Checkpoint)。用户可随时通过按两次Esc键回退到修改前的状态。
⚠️ 注意:检查点机制仅覆盖文件变更,不涵盖外部副作用(如数据库写入)。
8.3 安全边界
- 沙箱:限制文件访问范围,默认只能访问当前项目目录
- 审批工作流:破坏性操作(删除文件、Git force push等)需人工批准
- 信任边界:在Agent和外部系统之间执行严格的边界控制
- 安全审查:内置
/security-review命令(2,607 tokens的专用提示词),可对代码进行安全审计
九、扩展机制
9.1 自定义命令
用户可在.claude/commands/目录下创建自定义斜杠命令:
<!-- .claude/commands/review-pr.md -->
请审查当前PR的所有变更:
1. 检查代码风格
2. 识别潜在bug
3. 评估测试覆盖率
4. 生成审查报告
使用时直接输入/review-pr即可调用。
9.2 Hooks
Hooks允许在特定事件前后触发Shell命令:
{
"hooks": {
"before_commit": "npm run lint && npm test",
"after_edit": "prettier --write ${file}"
}
}
9.3 Skills
Skills是更高级的扩展机制——包含指令、脚本和资源的文件夹,Claude根据需要动态加载:
skills/
├── frontend-dev/
│ ├── SKILL.md # 技能描述和指令
│ ├── templates/ # 模板文件
│ └── scripts/ # 辅助脚本
└── api-design/
├── SKILL.md
└── examples/
Skill不通过系统提示词预加载,而是在工具执行结果中按需注入,有效节省Token。
9.4 Agent SDK
对于需要深度定制的场景,Claude Code提供Agent SDK,允许开发者构建完全自定义的Agent,精细控制:
- 编排逻辑(Orchestration)
- 工具访问权限
- 权限边界
- 上下文管理策略
十、与其他AI编程工具对比
| 特性 | Claude Code | Cursor | GitHub Copilot |
|---|---|---|---|
| 运行环境 | 终端原生 | 编辑器内 | 编辑器插件 |
| 工作模式 | 代理式(Agentic) | 半代理式 | 补全式 |
| 文件操作 | 直接读写 | 编辑器内 | 编辑器内 |
| Shell执行 | ✅ 原生支持 | 部分支持 | ❌ |
| Git集成 | ✅ 深度集成 | 部分支持 | 基础支持 |
| 多Agent协作 | ✅ | ❌ | ❌ |
| 自定义工具 | MCP + Hooks + Skills | 有限 | 有限 |
| 上下文管理 | 自动压缩+子Agent | 编辑器上下文 | 文件级上下文 |
十一、总结
Claude Code的技术架构体现了一个深刻的设计哲学:让模型做决策,让工程做执行。其核心创新可以概括为:
- 极简的Agentic Loop:一个循环+工具分发,就是整个Agent系统的骨架
- 丰富的工具生态:18个内置工具 + MCP无限扩展,覆盖开发全链路
- 精巧的上下文管理:CLAUDE.md持久化 + 自动压缩 + 子Agent隔离
- 完整的多Agent协作:任务图 + 异步邮箱 + Worktree隔离 + 自主认领
- 分层的安全治理:四种权限模式 + 检查点 + 沙箱 + 审批工作流
Claude Code证明了一个重要观点:构建一个强大的AI编程Agent,关键不在于复杂的框架或提示词链,而在于为一个已经足够聪明的模型提供合适的工具和环境。正如learn-claude-code项目所总结的:
“Bash is all you need” —— 一个循环和Bash,就足以构建令人惊叹的Agent系统。
参考资料
- Claude Code GitHub仓库
- Claude Code官方文档 - How Claude Code Works
- Claude Code官方文档 - Overview
- learn-claude-code: Bash is all you need
- Claude Code System Prompts
- Claude Code: Deep Dive into the Agentic CLI Workflow - SitePoint
「真诚赞赏,手留余香」
真诚赞赏,手留余香
使用微信扫描二维码完成支付