第 10 章:Agent 模式与自动化
🎯 本章目标:
从 Copilot (副驾驶) 升级到 Autopilot (自动驾驶)。
了解什么是 Agentic Coding,并学会使用 Cursor Composer 和 Windsurf Cascade 来自动化执行复杂的跨文件任务。
10.1 什么是 Agentic Coding?
传统的 Copilot 模式是:你写一行,AI 补一行;或者你问一个问题,AI 给一段代码。这依然需要你主导每一步。
而 Agentic Coding (代理编程) 是指:你给 AI 一个模糊的高级目标,AI 像一个独立的工程师一样,自己规划步骤、读写文件、运行终端、查看报错、修正代码,直到目标达成。
核心区别
#zXIPbIkvCTZI text { white-space: pre; }#zXIPbIkvCTZI .fb0 { stroke: var(--N900-FG, 0.15); }#zXIPbIkvCTZI .fb0 {stroke: rgba(31,35,41, 0.15)}#zXIPbIkvCTZI .fx0 { stroke-miterlimit: 10; }#zXIPbIkvCTZI .fx0 {stroke-miterlimit: 10}#zXIPbIkvCTZI .fa1 { fill: rgb(187, 191, 196); }#zXIPbIkvCTZI .fa1 {fill: rgb(187, 191, 196)}#zXIPbIkvCTZI .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#zXIPbIkvCTZI .fx1 {font-style: normal}#zXIPbIkvCTZI .fx2 { text-anchor: middle; }#zXIPbIkvCTZI .fx2 {text-anchor: middle}#zXIPbIkvCTZI .fx3 { dominant-baseline: central; }#zXIPbIkvCTZI .fx3 {dominant-baseline: central}#zXIPbIkvCTZI .fx4 { stroke: none; }#zXIPbIkvCTZI .fx4 {stroke: none}#zXIPbIkvCTZI .fc0 { fill: var(--text-caption); }#zXIPbIkvCTZI .fc0 {fill: #646a73}#zXIPbIkvCTZI .fa2 { fill: var(--text-link-disabled); }#zXIPbIkvCTZI .fa2 {fill: rgb(187, 191, 196)}#zXIPbIkvCTZI .fx5 { font: 700 13px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#zXIPbIkvCTZI .fx5 {font-style: normal}#zXIPbIkvCTZI .fx6 { text-anchor: start; }#zXIPbIkvCTZI .fx6 {text-anchor: start}#zXIPbIkvCTZI .fx7 { dominant-baseline: alphabetic; }#zXIPbIkvCTZI .fx7 {dominant-baseline: alphabetic}#zXIPbIkvCTZI .fc1 { fill: rgb(0, 0, 0); }#zXIPbIkvCTZI .fc1 {fill: rgb(0, 0, 0)}#zXIPbIkvCTZI .fx8 { font: 400 13px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#zXIPbIkvCTZI .fx8 {font-style: normal}#zXIPbIkvCTZI .fb1 { fill: var(--N900-FG, 0.15); }#zXIPbIkvCTZI .fb1 {fill: rgba(31,35,41, 0.15)}#zXIPbIkvCTZI .fb2 { fill: rgb(209, 217, 224); }#zXIPbIkvCTZI .fb2 {fill: rgb(209, 217, 224)}#zXIPbIkvCTZI .fa3 { fill: var(--bg-body); }#zXIPbIkvCTZI .fa3 {fill: #fff}ABC12345维度Chat / CopilotAgent指令能力交互主动性"帮我写这个函数"生成文本单次问答被动等待"把整个登录模块从 JS 迁移到 TS"生成文本 + 操作工具 (读写文件/运行命令)多步循环执行 (Loop)主动探索与修复
10.2 Cursor Composer 的 Agent 模式
Cursor 的 Composer 不仅仅是一个多文件编辑器,它本身就是一个初级的 Agent。
而在 2025 年的版本中,这一能力被大大增强。
如何开启?
在 Composer 窗口 (Ctrl+I) 中,你可以选择 "Agent Mode" (通常在输入框旁边有一个开关或模型选择中包含 "Agent" 字样)。
Agent 的超能力:工具调用 (Tool Use)
当你给 Composer 一个指令时,它不仅能写代码,还能:
🔍 List Files / Search:自己去翻你看不到的文件,理解项目结构。
📝 Read / Write:同时修改 10 个文件而不会搞混。
🖥️ Terminal:可以运行 npm install 或 ls。注意:出于安全考虑,运行命令通常需要你点击 "Allow" 确认。
⚠️ 危险操作警示 Agent 拥有修改甚至删除文件的权限。在开启 Agent 模式进行大规模操作前,务必先 Git Commit。如果 Agent 搞砸了(信我,它会的),你可以一键回滚。
竞品:Windsurf Cascade
在 Agent 领域,Codeium 出品的 Windsurf 也是一个强劲对手。它的 "Cascade" 模式对上下文的流动理解非常深刻,如果你觉得 Cursor Agent 卡住了,不妨试试 Windsurf。
10.3 自动化任务实战
让我们看看 Agent 能做哪些 Chat 做不到的事。
场景 1:大规模重构 (The Refactor Agent)
指令: "将 src/components 下的所有 React 类组件 (Class Components) 重构为函数式组件 (Functional Components)。确保保留所有 Props 和 State 逻辑。"
Agent 的执行过程:
列出 src/components 下的所有文件。
逐个读取文件内容。
识别出类组件。
编写重构后的代码并写入。
(高级 Agent) 甚至会运行 npm test 看看重构坏了没有。
💡 如何手动刹车? 如果你发现 Agent 陷入了 "修改 -> 报错 -> 修改 -> 报错" 的死循环(Loop),请果断点击输入框旁边的 Stop (⏹️) 按钮。Agent 有时候会钻牛角尖,这时候需要人类介入 "拍醒" 它。
场景 2:环境排错 (The DevOps Agent)
指令: "我的项目启动报错了,好像是 Node 版本不兼容。请帮我检查环境,可以运行 node -v 和查看 package.json,然后帮我修复。"
Agent 的执行过程:
运行 node -v 获取当前版本。
读取 package.json 的 engines 字段。
发现不匹配。
建议你安装 nvm 或直接修改 package.json。
10.4 多文件协同编辑实战
Agent 最强大的地方在于对文件依赖关系的理解。
案例:给博客添加"评论通知"功能
这个功能涉及:
数据库:schema.prisma (添加 Notification 表)。
API:app/api/comments/route.ts (并在创建评论时写入通知)。
UI:app/components/Navbar.tsx (显示小红点)。
Agent 提示词: "请实现评论通知功能。
更新 Prisma Schema,添加 Notification 模型。
当有人发表评论时,给文章作者创建一条通知。
在导航栏的用户头像旁显示未读消息数。 请一步步执行,每改完一个模块让我确认一下(或者自动继续)。"
Agent 会怎么做? 它可以一次性规划好这三个文件的修改,并按照依赖顺序执行:先改数据库 -> 再改逻辑 -> 最后改 UI。这如果在 Chat 里,你得手动来回粘贴好几次。
10.5 MCP 协议入门:连接外部工具 (Model Context Protocol)
如果说 Agent 是"大脑",那么 MCP 就是它的"USB 接口"。 Model Context Protocol (MCP) 是 Anthropic 推出的一项开放标准,旨在让 AI 能够安全、统一地连接本地数据和工具。
为什么要用 MCP?
以前,如果你想让 AI 读取你的本地 SQLite 数据库,或者操作你的 Notion,你需要把数据 Copy 出来给它。现在,通过 MCP,你可以给 Cursor 安装一个 "SQLite Server",AI 就能实时查询数据库了。
实战:连接本地数据库
安装 MCP Server: (以 Cursor 为例,需在 Settings -> MCP 中配置)
使用: 在 Composer 中,直接告诉 AI:
"请连接我的 SQLite 数据库,查询 User 表的前 10 条数据,并分析用户的注册趋势。"
MCP 将是未来 Vibe Coding 的核心基础设施。 掌握它,你的 AI 就不再是被困在聊天框里的孤岛,而是能触达真实世界的章鱼。
📝 本章小结
Agentic Coding 代表了编程的未来趋势。虽然目前的 Agent 还不能完全脱离人类(经常会卡在死循环或改错文件),但对于确定性高、繁琐、跨文件的任务,它们已经是不可或缺的帮手。