Skip to content

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 可以调整策略
概念英文解释为什么重要
AgentAI Agent [2:1]能自主规划、执行任务的 AI 系统理解 Claude Code 的本质
ReActReasoning + Acting [4:1]Thought-Action-Observation 循环Agent 的核心工作模式
工具使用Tool UseAgent 调用外部功能的能力没有工具,Agent 只是聊天机器人

2.6.2 Cursor / Aider:IDE 级 Agent 的先驱

在 Claude Code 之前,CursorAider 是 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 对比

特性CursorAiderClaude 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 CodingVibe 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 ToolsAI 能调用的功能读文件、写文件、运行命令

为什么 Context Engineering 比 Prompt Engineering 更重要?

Andrej Karpathy 有一个比喻:「LLM 就像 CPU,Context Window 就像 RAM」

  • CPU 再强,RAM 不够或者装错东西,程序也跑不好
  • 模型再聪明,Context 给错了,输出也不会对

Context Rot 问题

研究发现,Context 越长,准确率下降越明显(可达 24.2%)。这意味着:

  • Context 是有限资源
  • 有边际递减效应
  • 不是「塞越多越好」,而是「塞对的东西」
概念英文解释为什么重要
Context EngineeringContext Engineering [8:1]为 AI 准备最优上下文的艺术现代 AI 编程的核心技能
Context RotContext RotContext 越长准确率越低理解为什么不是「越多越好」
CLAUDE.mdClaude 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 在选择工具时更容易出错
概念英文解释为什么重要
MCPModel Context Protocol [10:1]AI 连接外部工具的标准协议扩展 AI 能力边界
MCP ServerMCP Server提供特定功能的轻量程序写一次,所有 Client 可用
MCP ClientMCP ClientAI 应用中管理连接的组件用一个 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。

概念英文解释为什么重要
SubagentSubagent [11:1]被主 Agent 调用的专门化 Agent复杂任务分解,Context 管理
OrchestratorOrchestrator协调多个 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 的时候就能共享了。

概念英文解释为什么重要
SkillsSkills [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 并行处理示意图

参考资料


  1. 🔬 L1 | Claude 3.7 Sonnet and Claude Code | Anthropic - Anthropic 于 2025 年 2 月 24 日发布 Claude 3.7 Sonnet 和 Claude Code。 ↩︎

  2. 📰 L2 | What Are AI Agents? | IBM - IBM 对 AI Agent 的定义:具有推理和规划能力、能够自主采取行动的智能实体。 ↩︎ ↩︎

  3. 📝 L3 | LLM Powered Autonomous Agents | Lil'Log - Lilian Weng 的经典文章,详解 Agent 的规划、记忆、工具使用等核心组件。 ↩︎

  4. 📝 L3 | ReAct Prompting | Prompt Engineering Guide - ReAct(Reasoning + Acting)模式详解,Agent 的核心工作循环。 ↩︎ ↩︎

  5. 🔬 L1 | Cursor | AI Code Editor - Anysphere 开发的 AI-native IDE,基于 VS Code,核心功能是 Composer 多文件编辑。 ↩︎

  6. 🔬 L1 | Aider | AI pair programming in your terminal - 开源命令行 AI 编程助手,特点是深度 Git 集成。 ↩︎

  7. 📝 L3 | Andrej Karpathy on Vibe Coding | X - 2025 年 2 月 2 日,Karpathy 定义 Vibe Coding,观看量超 450 万,被评为 Collins Dictionary 2025 年度词汇。 ↩︎ ↩︎

  8. 📝 L3 | The New Skill in AI is Not Prompting, It's Context Engineering | Phil Schmid - Context Engineering 概念详解,由 Tobi Lütke 和 Andrej Karpathy 于 2025 年 6 月推广。 ↩︎ ↩︎

  9. 🔬 L1 | Effective context engineering for AI agents | Anthropic - Anthropic 官方文章:「大多数 Agent 失败不再是模型失败,而是 Context 失败」。 ↩︎

  10. 🔬 L1 | Introducing the Model Context Protocol | Anthropic - Anthropic 于 2024 年 11 月发布 MCP,AI 连接外部工具的开放标准,2025 年 3 月 OpenAI 正式采用。 ↩︎ ↩︎

  11. 💬 L4 | Claude Code Subagents | ClaudeLog - Claude Code Subagent 机制详解,支持 Explore、Plan 等专门化子 Agent。 ↩︎ ↩︎

  12. 🔬 L1 | Skills explained | Claude Blog - Skills 是包含说明、脚本和资源的文件夹,Claude 在任务相关时动态发现和加载,采用渐进式信息披露架构。 ↩︎ ↩︎

基于 VitePress 构建