Appearance
2.6 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 生成代码,不审查不理解 | 理解风险和边界 |
[!TODO] 素材准备
- [ ] Andrej Karpathy Vibe Coding 原推文截图
- [ ] Cursor vs Aider vs Claude Code 功能对比表
参考资料
🔬 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 年度词汇。 ↩︎ ↩︎