Appearance
2.6 2025.2: Claude Code / Agent 时代 — 我们现在在这里
2025 年 2 月 24 日,Anthropic 发布了 Claude 3.7 Sonnet,同时推出了 Claude Code——一个命令行 AI 编程工具 [1]。这标志着 AI 编程从「辅助」进入了「自主执行」时代。
text
┌─────────────────────────────────────────────────────────────────────┐
│ 2025: Agent 时代 — AI 从「回答问题」到「执行任务」 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 【2021: Copilot 时代】 │
│ 人类写代码 → AI 补全几行 → 人类继续 │
│ │
│ 【2022: ChatGPT 时代】 │
│ 人类提问 → AI 回答 → 人类复制粘贴 → 人类修改 │
│ │
│ 【2024: Cursor 时代】 │
│ 人类描述 → AI 生成多文件 → 人类审核 Diff → 人类 Accept/Reject │
│ │
│ 【2025: Agent 时代】 │
│ 人类定目标 → AI 规划 → AI 读文件 → AI 写代码 → AI 运行测试 │
│ ↑ │ │
│ └────────────── AI 自我纠错 ◄────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘这一节会详细解释 Agent 时代的核心概念。每个概念都很重要,因为它们构成了 Claude Code 这类工具的工作原理。
2.6.1 Agent:从「问答」到「自主执行」
什么是 Agent?
「Agent 是一个具有推理和规划能力、能够自主采取行动的智能实体。」[2]
简单说:传统 LLM 优化的是「生成最有说服力的下一句话」,而 Agent 优化的是「执行最有效的下一个动作」。
text
┌─────────────────────────────────────────────────────────────────────┐
│ 传统 LLM vs Agent │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 【传统 LLM】—— 语言系统 (System of Language) │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ 输入 │ ──────────────────────▶ │ 输出 │ │
│ │ (问题) │ 生成文本 │ (回答) │ │
│ └──────────┘ └──────────┘ │
│ │
│ · 单次交互 │
│ · 只能生成文字 │
│ · 不能执行动作 │
│ · 不能访问外部信息 │
│ │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 【Agent】—— 行为系统 (System of Behavior) │
│ │
│ ┌──────────┐ ┌─────────────────┐ ┌──────────┐ │
│ │ 目标 │ ──▶ │ LLM │ ──▶ │ 动作 │ │
│ └──────────┘ │ (大脑) │ └────┬─────┘ │
│ └────────┬────────┘ │ │
│ │ ▼ │
│ │ ┌──────────────┐ │
│ │ │ 工具/环境 │ │
│ │ │ · 读文件 │ │
│ │ │ · 写文件 │ │
│ │ │ · 运行命令 │ │
│ │ │ · 搜索代码 │ │
│ │ └──────┬───────┘ │
│ │ │ │
│ │ ┌──────▼───────┐ │
│ │ │ 观察结果 │ │
│ │ └──────┬───────┘ │
│ │ │ │
│ ◄─────────────────┘ │
│ (循环直到任务完成) │
│ │
└─────────────────────────────────────────────────────────────────────┘Agent 的核心组件(来自 Lilian Weng 的经典文章 [3]):
| 组件 | 英文 | 作用 | Claude Code 中的体现 |
|---|---|---|---|
| 规划 | Planning | 把大任务拆成小步骤 | 自动分解「实现登录功能」为多个子任务 |
| 记忆 | Memory | 记住之前的操作和结果 | 对话历史、项目 context |
| 工具使用 | Tool Use | 调用外部能力 | 读文件、写文件、运行命令、搜索 |
| 反思 | Reflection | 从错误中学习 | 运行测试失败后自动修复 |
ReAct 模式:Agent 的工作循环
大多数 Agent(包括 Claude Code)都采用 ReAct(Reasoning + Acting)模式 [4]:
text
┌─────────────────────────────────────────────────────────────────────┐
│ ReAct 循环:Thought → Action → Observation │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 用户: 「帮我修复 login.py 中的 bug」 │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 循环 1 │ │
│ │ │ │
│ │ Thought: 我需要先看看 login.py 的内容,了解有什么 bug │ │
│ │ │ │
│ │ Action: read_file("login.py") │ │
│ │ │ │
│ │ Observation: [文件内容显示第 42 行有一个未处理的异常] │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 循环 2 │ │
│ │ │ │
│ │ Thought: 第 42 行缺少 try-catch,我需要添加异常处理 │ │
│ │ │ │
│ │ Action: edit_file("login.py", ...) │ │
│ │ │ │
│ │ Observation: [文件已修改] │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 循环 3 │ │
│ │ │ │
│ │ Thought: 修改完成,我应该运行测试确认 bug 已修复 │ │
│ │ │ │
│ │ Action: run_command("pytest test_login.py") │ │
│ │ │ │
│ │ Observation: [所有测试通过] │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ 最终回答: 「已修复 login.py 第 42 行的 bug,添加了异常处理, │
│ 测试全部通过。」 │
│ │
└─────────────────────────────────────────────────────────────────────┘为什么 ReAct 比直接回答更好?
- 减少幻觉:决策基于真实的工具调用结果,而不是「猜测」
- 可追溯:每一步都有 Thought,方便 debug
- 自我纠错:如果某步失败,Agent 可以调整策略
| 概念 | 英文 | 解释 | 为什么重要 |
|---|---|---|---|
| Agent | AI Agent [2:1] | 能自主规划、执行任务的 AI 系统 | 理解 Claude Code 的本质 |
| ReAct | Reasoning + Acting [4:1] | Thought-Action-Observation 循环 | Agent 的核心工作模式 |
| 工具使用 | Tool Use | Agent 调用外部功能的能力 | 没有工具,Agent 只是聊天机器人 |
2.6.2 Cursor / Aider:IDE 级 Agent 的先驱
在 Claude Code 之前,Cursor 和 Aider 是 AI 编程工具的两个重要里程碑。
Cursor(2023 年发布)[5]:
Cursor 是一个基于 VS Code 的 AI-native IDE,由 Anysphere 公司开发。它的核心创新是 Composer——可以同时编辑多个文件。
text
┌─────────────────────────────────────────────────────────────────────┐
│ Cursor 的工作流程 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ Cursor IDE │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ 编辑器 │ │ Chat │ │ Composer │ │ │
│ │ │ (VS Code) │ │ (单文件) │ │ (多文件) │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ │ │ │ │ │ │
│ │ ▼ ▼ ▼ │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ Context 收集 │ │ │
│ │ │ · 当前文件 · 选中代码 · @引用的文件 · 项目结构 │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ LLM 调用 │ │ │
│ │ │ (Claude / GPT-4 / Gemini / 自定义模型) │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ Diff 预览 │ │ │
│ │ │ 用户可以逐个 Accept / Reject 每处修改 │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
│ 🆕 多文件编辑 (Composer) 🆕 Diff 预览 UI │
│ 🆕 代码库理解 🆕 Tab 预测编辑 │
│ │
└─────────────────────────────────────────────────────────────────────┘Aider(开源命令行工具)[6]:
Aider 是一个终端里的 AI 编程助手,特点是深度 Git 集成——每次 AI 修改都会自动提交。
text
┌─────────────────────────────────────────────────────────────────────┐
│ Aider 的工作流程 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ Terminal │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ $ aider │ │
│ │ │ │
│ │ Aider v0.50.0 │ │
│ │ Model: claude-3-5-sonnet │ │
│ │ Git repo: /path/to/project │ │
│ │ │ │
│ │ > Add authentication to the API endpoints │ │
│ │ │ │
│ │ [Aider 开始工作...] │ │
│ │ · 读取 api/routes.py │ │
│ │ · 读取 api/auth.py │ │
│ │ · 修改 api/routes.py (+45 lines) │ │
│ │ · 创建 api/middleware.py │ │
│ │ │ │
│ │ Commit: feat: add JWT authentication to API endpoints │ │
│ │ ▲ │ │
│ │ │ │ │
│ │ 自动 Git 提交 ──┘ │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
│ 🆕 终端原生 🆕 自动 Git 提交 │
│ 🆕 支持多种 LLM 🆕 语音输入支持 │
│ 🆕 开源可自部署 🆕 多文件编辑 │
│ │
└─────────────────────────────────────────────────────────────────────┘Cursor vs Aider vs Claude Code 对比:
| 特性 | Cursor | Aider | Claude Code |
|---|---|---|---|
| 界面 | GUI (VS Code fork) | 终端 | 终端 |
| 多文件编辑 | ✅ Composer | ✅ | ✅ |
| 自动 Git | ❌ 需手动 | ✅ 自动提交 | ❌ 需手动 |
| 模型选择 | 多种 | 多种 | Claude 系列 |
| 开源 | ❌ | ✅ | ❌ |
| Agent 能力 | ✅ Agent Mode | 基础 | ✅ 完整 |
| 运行命令 | ✅ | 有限 | ✅ |
| 定价 | $20/月 | 免费 (需 API) | $20/月 或 API |
2.6.3 Vibe Coding:一种危险的工作方式
2025 年 2 月 2 日,Andrej Karpathy(前 OpenAI 联合创始人、前 Tesla AI 负责人)发了一条推文 [7],定义了一个新词:Vibe Coding。
「有一种新的编程方式,我称之为 'vibe coding'——你完全沉浸在氛围中,拥抱指数级增长,忘记代码的存在。」
他描述的工作方式是:
text
┌─────────────────────────────────────────────────────────────────────┐
│ Vibe Coding 工作流 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌─────────────────┐ ┌──────────┐ │
│ │ 描述需求 │ ──▶ │ AI 生成代码 │ ──▶ │ Accept All│ │
│ │ (语音/文字)│ │ │ │ (不看 Diff)│ │
│ └──────────┘ └─────────────────┘ └────┬─────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ 运行 │ │
│ └──────┬───────┘ │
│ │ │
│ ┌──────────────────┴──────────────┐ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐│
│ │ 成功 │ │ 报错 ││
│ └──────────┘ └────┬─────┘│
│ │ │ │
│ ▼ ▼ │
│ 继续下一个功能 复制粘贴报错给 AI │
│ │ │
│ ▼ │
│ AI 尝试修复 │
│ │ │
│ ▼ │
│ 还是报错? │
│ │ │ │
│ ▼ ▼ │
│ 「随便改改直到能跑」 │
│ │
│ ⚠️ 关键问题: │
│ · 不看 Diff │
│ · 不理解生成的代码 │
│ · 代码增长到「超出理解范围」 │
│ · 遇到 bug「绕过它或随机改改直到消失」 │
│ │
└─────────────────────────────────────────────────────────────────────┘Karpathy 自己说:「这对周末的一次性项目还行,但还是挺有趣的。」
这条推文的影响力:
- 观看量超过 450 万次
- 一个月后被 Merriam-Webster 收录为「slang & trending」词条
- 被 Collins Dictionary 评为 2025 年度词汇
Vibe Coding 的风险(Part 5 会详细讲):
| 风险 | 说明 |
|---|---|
| 安全漏洞 | 不审查代码,可能引入 SQL 注入、XSS 等 |
| 技术债务 | 「两个工程师能创造五十个人的技术债」 |
| 调试困难 | 不理解代码,出 bug 就完全失控 |
| 技能退化 | 跳过学习过程,遇到复杂问题无法应对 |
| 概念 | 英文 | 解释 | 为什么重要 |
|---|---|---|---|
| Vibe Coding | Vibe Coding [7:1] | 完全依赖 AI 生成代码,不审查不理解 | 理解风险和边界 |
2.6.4 Context Engineering:现代 AI 编程的核心技能
2025 年 6 月,Context Engineering 这个术语开始流行 [8],由 Shopify CEO Tobi Lütke 和 Andrej Karpathy 在 X 上推广。
Prompt Engineering vs Context Engineering:
text
┌─────────────────────────────────────────────────────────────────────┐
│ Prompt Engineering vs Context Engineering │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 【Prompt Engineering】—— 关于「你问什么」 │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ "Write a professional email to decline a meeting" │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌──────────┐ │ │
│ │ │ LLM │ │ │
│ │ └──────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ [回复] │ │
│ │ │ │
│ │ · 单次交互 │ │
│ │ · 优化问题的措辞 │ │
│ │ · 静态字符串 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 【Context Engineering】—— 关于「如何准备模型来回答」 │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ System │ │ 对话历史 │ │ 检索到的 │ │ │
│ │ │ Prompt │ │ (Memory) │ │ 文档 (RAG) │ │ │
│ │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │
│ │ │ │ │ │ │
│ │ └────────────────┼────────────────┘ │ │
│ │ ▼ │ │
│ │ ┌─────────────┐ ┌──────────────┐ ┌─────────────┐ │ │
│ │ │ 可用工具 │ │ LLM │ │ 用户输入 │ │ │
│ │ │ 定义 │──│ │──│ │ │ │
│ │ └─────────────┘ └──────────────┘ └─────────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ [回复/动作] │ │
│ │ │ │
│ │ · 系统设计 │ │
│ │ · 动态信息组装 │ │
│ │ · 确保模型始终获得相关信息 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘Tobi Lütke 的定义:
「Context Engineering 是为任务提供所有必要上下文的艺术,使 LLM 有可能解决它。」
Anthropic 的观点 [9]:
「大多数 Agent 失败不再是模型失败,而是 Context 失败。」
Context 的组成部分:
| 组件 | 英文 | 作用 | Claude Code 中的体现 |
|---|---|---|---|
| 系统提示 | System Prompt | 定义 AI 的行为规则 | CLAUDE.md 文件 |
| 短期记忆 | Short-term Memory | 当前对话历史 | 对话 context |
| 长期记忆 | Long-term Memory | 持久化的知识 | 项目文档、代码库 |
| 检索信息 | Retrieved Info (RAG) | 动态获取的相关内容 | 搜索到的代码片段 |
| 可用工具 | Available Tools | AI 能调用的功能 | 读文件、写文件、运行命令 |
为什么 Context Engineering 比 Prompt Engineering 更重要?
Andrej Karpathy 有一个比喻:「LLM 就像 CPU,Context Window 就像 RAM」。
- CPU 再强,RAM 不够或者装错东西,程序也跑不好
- 模型再聪明,Context 给错了,输出也不会对
Context Rot 问题:
研究发现,Context 越长,准确率下降越明显(可达 24.2%)。这意味着:
- Context 是有限资源
- 有边际递减效应
- 不是「塞越多越好」,而是「塞对的东西」
| 概念 | 英文 | 解释 | 为什么重要 |
|---|---|---|---|
| Context Engineering | Context Engineering [8:1] | 为 AI 准备最优上下文的艺术 | 现代 AI 编程的核心技能 |
| Context Rot | Context Rot | Context 越长准确率越低 | 理解为什么不是「越多越好」 |
| CLAUDE.md | — | Claude Code 的项目配置文件 | 团队共享 AI 使用规范 |
2.6.5 MCP:AI 连接外部世界的标准协议
2024 年 11 月,Anthropic 发布了 MCP(Model Context Protocol)[10]——一个让 AI 连接外部工具和数据源的开放标准。
MCP 解决什么问题?
在 MCP 之前,每个 AI 应用要连接外部服务,都需要写专门的连接器。假设你有 N 个 AI 应用和 M 个数据源,就需要 N × M 个连接器。
text
┌─────────────────────────────────────────────────────────────────────┐
│ 没有 MCP:N × M 集成问题 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ AI 应用 数据源/工具 │
│ ┌──────────┐ ┌──────────┐ │
│ │ Claude │────专用连接器 1────────│ GitHub │ │
│ │ Code │────专用连接器 2────────│ Slack │ │
│ │ │────专用连接器 3────────│ Database │ │
│ └──────────┘ └──────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ Cursor │────专用连接器 4────────│ GitHub │ │
│ │ │────专用连接器 5────────│ Slack │ │
│ │ │────专用连接器 6────────│ Database │ │
│ └──────────┘ └──────────┘ │
│ │
│ ⚠️ 每个 AI 应用 × 每个数据源 = 大量重复工作 │
│ │
└─────────────────────────────────────────────────────────────────────┘有了 MCP:
text
┌─────────────────────────────────────────────────────────────────────┐
│ 有 MCP:标准化协议 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ MCP Client MCP Protocol MCP Server │
│ (AI 应用) (标准协议) (数据源/工具) │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ Claude │ │ GitHub │ │
│ │ Code │─┐ ┌───│ Server │ │
│ └──────────┘ │ │ └──────────┘ │
│ │ ┌──────────────┐ │ │
│ ┌──────────┐ │ │ │ │ ┌──────────┐ │
│ │ Cursor │─┼──────│ MCP 协议 │────────┼───│ Slack │ │
│ │ │ │ │ (JSON-RPC) │ │ │ Server │ │
│ └──────────┘ │ │ │ │ └──────────┘ │
│ │ └──────────────┘ │ │
│ ┌──────────┐ │ │ ┌──────────┐ │
│ │ ChatGPT │─┘ └───│ Database │ │
│ │ │ │ Server │ │
│ └──────────┘ └──────────┘ │
│ │
│ ✅ 写一次 MCP Server,所有 MCP Client 都能用 │
│ ✅ 用一个 MCP Client,能连接所有 MCP Server │
│ │
└─────────────────────────────────────────────────────────────────────┘MCP 的比喻:MCP 就像 USB-C 接口——不管是什么设备,只要支持 USB-C,就能互相连接。
MCP 架构详解:
text
┌─────────────────────────────────────────────────────────────────────┐
│ MCP 架构 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ MCP Host │ │
│ │ (如 Claude Code, Cursor) │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ MCP Client │ │ │
│ │ │ (管理与 Server 的连接) │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ │ JSON-RPC 2.0 │
│ │ (stdio / HTTP+SSE) │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ MCP Server │ │
│ │ (轻量级程序,提供特定功能) │ │
│ │ │ │
│ │ 提供三种「原语」(Primitives): │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Prompts │ │ Resources │ │ Tools │ │ │
│ │ │ 预定义提示 │ │ 数据资源 │ │ 可调用功能 │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 外部服务/数据 │ │
│ │ GitHub / Slack / PostgreSQL / 文件系统 / ... │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘行业采用情况:
- 2025 年 3 月,OpenAI 正式采用 MCP,集成到 ChatGPT 桌面应用
- Block、Apollo 等公司已在生产环境使用
- Zed、Replit、Codeium、Sourcegraph 等开发工具都在集成 MCP
注意事项:
MCP 不能装太多!每个 MCP Server 的工具定义都会占用 Context,装太多会:
- 消耗大量 Token
- 可能触发 Context Rot
- 让 AI 在选择工具时更容易出错
| 概念 | 英文 | 解释 | 为什么重要 |
|---|---|---|---|
| MCP | Model Context Protocol [10:1] | AI 连接外部工具的标准协议 | 扩展 AI 能力边界 |
| MCP Server | MCP Server | 提供特定功能的轻量程序 | 写一次,所有 Client 可用 |
| MCP Client | MCP Client | AI 应用中管理连接的组件 | 用一个 Client 连所有 Server |
2.6.6 Subagent:Agent 调用 Agent
当任务变得复杂时,单个 Agent 的 Context Window 可能不够用。这时候就需要 Subagent——主 Agent 可以调用专门的子 Agent 来处理特定任务 [11]。
text
┌─────────────────────────────────────────────────────────────────────┐
│ Subagent 架构 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 用户: 「帮我重构这个项目,优化性能,并添加测试」 │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 主 Agent (Orchestrator) │ │
│ │ │ │
│ │ Thought: 这个任务很复杂,我需要分解成多个子任务 │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ 1. 分析代码结构 → 调用 Explore Subagent │ │ │
│ │ │ 2. 设计重构方案 → 调用 Plan Subagent │ │ │
│ │ │ 3. 执行重构 → 自己处理或调用 Code Subagent │ │ │
│ │ │ 4. 性能优化 → 调用 Performance Subagent │ │ │
│ │ │ 5. 编写测试 → 调用 Test Subagent │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Explore │ │ Plan │ │Performance│ │ Test │ │
│ │ Subagent │ │ Subagent │ │ Subagent │ │ Subagent │ │
│ │ │ │ │ │ │ │ │ │
│ │ 专注于 │ │ 专注于 │ │ 专注于 │ │ 专注于 │ │
│ │ 代码探索 │ │ 方案设计 │ │ 性能分析 │ │ 测试编写 │ │
│ │ │ │ │ │ │ │ │ │
│ │ 独立 │ │ 独立 │ │ 独立 │ │ 独立 │ │
│ │ Context │ │ Context │ │ Context │ │ Context │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ [探索结果] [设计方案] [优化建议] [测试代码] │
│ │ │ │ │ │
│ └──────────────┴──────────────┴──────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 主 Agent 整合结果 │ │
│ │ 返回给用户 │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘Subagent 的好处:
| 好处 | 说明 |
|---|---|
| Context 隔离 | 每个 Subagent 有独立的 Context Window,不会互相干扰 |
| 专业化 | 每个 Subagent 可以专注于特定领域 |
| 并行处理 | 多个 Subagent 可以同时工作 |
| 防止 Context 溢出 | 只把相关结果返回主 Agent,而不是全部细节 |
Claude Code 内置的 Subagent:
| Subagent | 功能 | 特点 |
|---|---|---|
| Explore Subagent | 代码库搜索和探索 | 使用 Haiku(更快更便宜) |
| Plan Subagent | 任务规划和方案设计 | 支持计划恢复 |
并行处理能力:
Claude Code 支持最多 10 个并行任务。社区实现甚至可以通过智能队列系统管理 100+ Agent。
| 概念 | 英文 | 解释 | 为什么重要 |
|---|---|---|---|
| Subagent | Subagent [11:1] | 被主 Agent 调用的专门化 Agent | 复杂任务分解,Context 管理 |
| Orchestrator | Orchestrator | 协调多个 Subagent 的主 Agent | 理解多 Agent 架构 |
2.6.7 Skills:可复用的专业能力包
Skills 是 Claude 的一个重要概念——它是「包含说明、脚本和资源的文件夹,Claude 在任务相关时动态发现和加载」[12]。
简单说:Skills 就像专业培训手册,为 AI 赋予特定领域的专业知识。
text
┌─────────────────────────────────────────────────────────────────────┐
│ Skills vs 其他概念的对比 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 【Prompts】—— 即时指令 │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ "帮我写一封拒绝会议的邮件" │ │
│ │ │ │
│ │ · 单次对话有效 │ │
│ │ · 每次都要重新输入 │ │
│ │ · 告诉 AI「现在做什么」 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ 【Projects】—— 背景知识 │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 项目文档、API 规范、代码库结构... │ │
│ │ │ │
│ │ · 项目内始终可用 │ │
│ │ · 提供上下文信息 │ │
│ │ · 告诉 AI「你需要知道什么」 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ 【Skills】—— 程序化知识 │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 代码审查流程、品牌指南应用、数据分析方法... │ │
│ │ │ │
│ │ · 跨对话持久有效 │ │
│ │ · 动态按需加载 │ │
│ │ · 告诉 AI「如何完成任务」 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ 【MCP】—— 工具连接 │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ GitHub、Slack、数据库、文件系统... │ │
│ │ │ │
│ │ · 持续连接外部服务 │ │
│ │ · 提供执行能力 │ │
│ │ · 让 AI「能够操作什么」 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ 【Subagents】—— 任务委派 │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Explore Agent、Plan Agent、专门化 Agent... │ │
│ │ │ │
│ │ · 调用时启动 │ │
│ │ · 独立 Context │ │
│ │ · 让 AI「委派给谁」 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘Skills 的独特之处:渐进式加载
Skills 采用「渐进式信息披露」架构,这是它与其他概念最大的区别:
text
┌─────────────────────────────────────────────────────────────────────┐
│ Skills 的渐进式加载机制 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 用户: 「帮我审查这段代码」 │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 第 1 步:加载元数据 (~100 tokens) │ │
│ │ │ │
│ │ 发现可用 Skills: │ │
│ │ · code-review-skill (相关性: 高) │ │
│ │ · writing-assistant (相关性: 低) │ │
│ │ · git-workflow (相关性: 中) │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 第 2 步:按需加载完整指令 (最多 ~5000 tokens) │ │
│ │ │ │
│ │ 加载 code-review-skill 的完整内容: │ │
│ │ · 审查流程 │ │
│ │ · 检查清单 │ │
│ │ · 常见问题模式 │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 第 3 步:必要时加载相关文件和脚本 │ │
│ │ │ │
│ │ 如果需要,加载: │ │
│ │ · 团队编码规范文档 │ │
│ │ · 自动化检查脚本 │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ ✅ 只加载需要的内容,节省 Context │
│ ✅ 动态判断相关性,避免信息过载 │
│ │
└─────────────────────────────────────────────────────────────────────┘什么时候用 Skill?
「如果发现自己在多个对话中重复输入相同的提示词,就应该把它转换成 Skill。」
| 场景 | 示例 | 为什么适合用 Skill |
|---|---|---|
| 重复工作流 | 代码审查、PR 提交、发布流程 | 避免每次重复解释流程 |
| 组织规范 | 品牌指南、合规程序、编码规范 | 确保执行一致性 |
| 领域专业技能 | 数据分析方法、安全审计清单 | 封装专业知识 |
Skills 与其他概念的协作:
text
┌─────────────────────────────────────────────────────────────────────┐
│ 一个完整的 Claude Code 工作流 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 用户: 「帮我审查这个 PR 并提交」 │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ Claude Code Agent │ │
│ │ │ │
│ │ 1. 加载 Skill: code-review-skill │ │
│ │ → 知道「如何审查代码」 │ │
│ │ │ │
│ │ 2. 读取 Project Context: CLAUDE.md + 项目文档 │ │
│ │ → 知道「这个项目的规范」 │ │
│ │ │ │
│ │ 3. 调用 MCP: GitHub Server │ │
│ │ → 能够「读取 PR、提交评论」 │ │
│ │ │ │
│ │ 4. 委派 Subagent: Explore Agent │ │
│ │ → 让专门的 Agent「搜索相关代码」 │ │
│ │ │ │
│ │ 5. 加载 Skill: git-workflow-skill │ │
│ │ → 知道「如何提交 commit」 │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ Projects = 「你需要知道什么」(背景知识) │
│ Skills = 「如何完成任务」(程序化知识) │
│ MCP = 「能够操作什么」(工具连接) │
│ Subagent = 「委派给谁」(任务分解) │
│ │
└─────────────────────────────────────────────────────────────────────┘我正在用的 Skill 示例:
说起来,我昨天刚好弄了一个写作辅助的 Skill。这篇分享稿就是用 /writing-assistant 命令启动,然后边聊边写出来的。
后面计划把性能优化、代码审查、安全性检查这些也做成 Skill,团队一起用 Claude Code 的时候就能共享了。
| 概念 | 英文 | 解释 | 为什么重要 |
|---|---|---|---|
| Skills | Skills [12:1] | 可复用的专业能力包,动态按需加载 | 避免重复 prompt,确保一致性 |
| 渐进式加载 | Progressive Disclosure | 先加载元数据,按需加载完整内容 | 节省 Context,提高效率 |
2.6.8 我的亲历视角:从 Cursor 到 Claude Code
作者观点
以下是我个人的 AI 编程工具使用历程和感受。
我从 Copilot 用到 Cursor,再用到 Claude Code,每次切换都是因为「之前的工具不够用了」。
Cursor 阶段(2024):
Cursor 的 Composer 让我第一次体验到「多文件编辑」的威力。以前用 Copilot,每次只能补全几行;用 Cursor,可以一次性改几个文件。但 Cursor 的问题是:
- 它是 GUI,有时候我更想在终端里工作
- 它的 Agent 能力有限,复杂任务还是需要手动介入很多
Claude Code 阶段(2025):
切换到 Claude Code 后,最大的感受是自主性。我可以说「帮我把这个功能实现了」,然后去泡杯茶,回来代码就写好了(当然,还是要审查的)。
但 Claude Code 也有问题:
- Token 消耗很快,需要经常
/clear - MCP 装多了会出问题
- 有时候它会「过度自信」,做一些不必要的修改
一个教训:
刚开始用 Claude Code 的时候,我确实有段时间在「Vibe Coding」——Accept All,不看 Diff,出错就让它再改。结果就是 Part 3 会讲的那些踩坑经历。现在我的原则是:可以让 AI 写代码,但必须理解它写了什么。
[!TODO] 素材准备
- [ ] Andrej Karpathy Vibe Coding 原推文截图
- [ ] Context Engineering 概念图(Anthropic 博客)
- [ ] MCP 架构图(官方文档)
- [ ] Claude Code 工作流程演示 GIF
- [ ] Cursor vs Aider vs Claude Code 功能对比表
- [ ] Subagent 并行处理示意图
参考资料
🔬 L1 | Claude 3.7 Sonnet and Claude Code | Anthropic - Anthropic 于 2025 年 2 月 24 日发布 Claude 3.7 Sonnet 和 Claude Code。 ↩︎
📰 L2 | What Are AI Agents? | IBM - IBM 对 AI Agent 的定义:具有推理和规划能力、能够自主采取行动的智能实体。 ↩︎ ↩︎
📝 L3 | LLM Powered Autonomous Agents | Lil'Log - Lilian Weng 的经典文章,详解 Agent 的规划、记忆、工具使用等核心组件。 ↩︎
📝 L3 | ReAct Prompting | Prompt Engineering Guide - ReAct(Reasoning + Acting)模式详解,Agent 的核心工作循环。 ↩︎ ↩︎
🔬 L1 | Cursor | AI Code Editor - Anysphere 开发的 AI-native IDE,基于 VS Code,核心功能是 Composer 多文件编辑。 ↩︎
🔬 L1 | Aider | AI pair programming in your terminal - 开源命令行 AI 编程助手,特点是深度 Git 集成。 ↩︎
📝 L3 | Andrej Karpathy on Vibe Coding | X - 2025 年 2 月 2 日,Karpathy 定义 Vibe Coding,观看量超 450 万,被评为 Collins Dictionary 2025 年度词汇。 ↩︎ ↩︎
📝 L3 | The New Skill in AI is Not Prompting, It's Context Engineering | Phil Schmid - Context Engineering 概念详解,由 Tobi Lütke 和 Andrej Karpathy 于 2025 年 6 月推广。 ↩︎ ↩︎
🔬 L1 | Effective context engineering for AI agents | Anthropic - Anthropic 官方文章:「大多数 Agent 失败不再是模型失败,而是 Context 失败」。 ↩︎
🔬 L1 | Introducing the Model Context Protocol | Anthropic - Anthropic 于 2024 年 11 月发布 MCP,AI 连接外部工具的开放标准,2025 年 3 月 OpenAI 正式采用。 ↩︎ ↩︎
💬 L4 | Claude Code Subagents | ClaudeLog - Claude Code Subagent 机制详解,支持 Explore、Plan 等专门化子 Agent。 ↩︎ ↩︎
🔬 L1 | Skills explained | Claude Blog - Skills 是包含说明、脚本和资源的文件夹,Claude 在任务相关时动态发现和加载,采用渐进式信息披露架构。 ↩︎ ↩︎