第 6–7 章

AI Agent:原理、架构与开发实战

从理解原理,到亲手构建

先弄清 Agent 为什么不只是聊天机器人,再沿着“架构 → 模式 → 工具 → 工程实践”的路径,把一个能思考、会行动的智能系统真正搭建起来。

在上一章中,我们认识了以脉冲神经网络为代表的类脑智能——它尝试模仿人脑的生物学机制,以更贴近真实神经元的方式处理信息。然而,无论单个模型多么精妙,它们本质上仍然是在做"感知"或"预测":识别图片中的物体、预测下一个词是什么。

但真正的智能不止于感知与预测——它还意味着在真实世界中采取行动、使用工具、面对不确定性并不断调整策略。随着大模型推理与工具调用能力成熟,AI 的边界开始从“能理解”延伸到“能行动”——这就是AI Agent(人工智能体)。

AI Agent 不是简单的聊天机器人,也不是传统的自动化脚本。它是一种能够感知环境、规划任务、调用工具、根据反馈调整行动的智能系统。本文不会在“扫盲”和“开发”之间突然换挡,而是从工作原理一路讲到工程实现。

什么是 AI Agent?

要准确理解 AI Agent,我们可以将其与相关概念进行对比——它们有什么区别,又在哪里交汇?

被动

语言模型

Large Language Model (LLM)
接收输入,生成输出。它是被动的——你问它答,你不问它不动。它"想"不出下一步该做什么,只能根据你给的提示词回应。典型行为:对话、总结、翻译。
主动

AI Agent

AI Agent / Intelligent Agent
接收目标,自主规划和执行。它是主动的——你告诉它目标,它会自己思考"怎么做",使用各种工具,遇到困难时调整策略,直到达成目标。
规则驱动

自动化脚本

Script / Automation
按照预设规则顺序执行固定流程。它没有"思考"能力——如果流程中某个环节与预期不符,脚本就会出错或停止。它不会自适应,也不会学习。
决策中心

AI Agent vs 传统 AI

Key Difference
传统 AI 的核心是"理解"和"预测"——看懂图片、听懂语音。AI Agent 的核心则是"行动"和"达成"——不仅理解,还能使用工具、规划步骤、完成复杂任务。

如果说大语言模型是 AI 的"大脑",那么 AI Agent 就是 AI 的"完整身体"——它拥有感知、思考、行动的能力,能够在真实世界中完成复杂任务。

—— AI 研究社区

哲学家怎么定义"智能体"?

"智能体"这个概念最早来自哲学和认知科学。计算机科学家 Stan Franklin 和 Art Graesser 在 1996 年给出了一个被广泛引用的经典定义——

"一个智能体(Agent)就是这样一个实体:它存在于一个代理环境(agent-environment)中,能够自主行动以影响当前的处境以满足自己的设计目标。"

—— Stan Franklin & Art Graesser, 1996

这个定义揭示了 Agent 的四个核心属性:自主性(不依赖外部干预)、感知能力(对环境有某种观测手段)、行动能力(能通过某种行动模式影响环境)和持续性(在一段时间内持续存在)。

AI Agent 的发展历程

AI Agent 典型工作流

一个 AI Agent 从接受任务到完成任务,通常经历以下核心步骤:

1

感知理解

接收用户的目标和上下文信息,理解任务意图和约束条件

2

规划分解

将复杂目标拆解为可执行的子任务序列,制定行动计划

3

执行行动

调用工具(搜索、代码执行、浏览器等)完成每个子任务

4

反思调整

检查当前状态,若目标未达成则分析原因并调整策略,循环迭代

5

交付结果

将完成任务的最终结果以清晰的方式反馈给用户

不管 AI Agent 的外壳多么花哨,它本质上都是由几个核心模块组成的系统——大脑(Brain)、记忆(Memory)、规划(Planning)、工具(Tools)。理解了这些模块,你就理解了 Agent 的本质。

🧠

大脑(Brain)

Agent 的"思考中心",通常由大语言模型担任。它负责理解任务、推理规划、做出决策、生成回复。可以说,没有大脑就没有 Agent——LLM 的质量直接决定了 Agent 的"智商"上限。
GPT-4o Claude Gemini Llama
📦

记忆(Memory)

记忆系统让 Agent 能够记住过去的交互和知识,从而做出更明智的决策。它分为短期记忆(工作记忆)和长期记忆,类似于人类的记忆系统。
短期记忆 长期记忆 向量数据库
🗺️

规划(Planning)

规划模块负责将复杂任务分解为可执行的步骤。常见方法包括思维链(Chain of Thought)、任务分解(ReAct)、思维树(ToT)、反思(Reflexion)等。
CoT ReAct ToT GoT
🛠️

工具(Tools)

工具是 Agent 与外部世界交互的手段。有了工具,Agent 不再只是一个"会说"的智能体,而是一个能够"去做"的智能体——搜索信息、执行代码、操控浏览器、操作文件。
搜索 代码执行 浏览器 API

大脑:LLM 如何成为 Agent 的推理引擎?

大语言模型之所以能成为 Agent 的大脑,是因为它具备几种关键能力——从"只会说"到"会思考"的转变,依赖于这些推理技术。

🔗 思维链(Chain of Thought)

在回答之前,让模型逐步展示思考过程。"让我们一步步想"——这句简单的提示词能显著提升模型处理复杂推理任务的能力。CoT 让 Agent 能够将多步推理过程显式化,便于检查和修正。

🔄 思维树(Tree of Thoughts)

在 CoT 的基础上进一步扩展——不是只想一条路径,而是同时探索多条推理路径,像一棵思维树一样分叉、评估、回溯。这让 Agent 在面对复杂问题时能做出更好的策略选择。

🔍 ReAct 推理

Reason + Act——让模型交替进行"推理"和"行动"。Agent 先想"我需要查什么",然后查,再看结果想"接下来怎么做",再行动。这种循环让它能利用外部信息不断修正自己的推理。

🪞 反思(Reflexion)

Agent 在执行任务后回头审视自己的表现——"我刚才做对了什么?哪里出了问题?"通过自我反思和总结,Agent 能够在下一次尝试中改进策略,类似于人类从经验中学习的机制。

记忆系统:Agent 的"大脑皮层"

记忆是 Agent 能够持续学习和积累的关键。一个好的记忆系统让 Agent 不再"记不住"——每次对话、每次经验都能被保留和调用。

🔵 短期记忆(工作记忆)

类似于人类的"工作记忆"——在对话过程中临时存储和调用信息。通常通过上下文窗口(Context Window)实现,即大模型的 Token 限制内可以"记住"的内容。

特点:容量有限(数千到数十万 Token)、更新快、时效性强。新对话中通常为空,随着对话推进不断累积。

🔗 典型实现:对话历史、当前任务的中间状态

🟢 长期记忆

让 Agent 能够跨会话持久存储和检索信息——类似人类的长期记忆。核心方案是使用向量数据库(如 Chroma、Pinecone、Milvus)存储语义嵌入,通过相似性检索召回相关信息。

特点:容量无限、持久存在、支持语义检索。可以存储用户偏好、项目知识、历史决策等。

🔗 典型实现:向量数据库、知识图谱、结构化存储

记忆系统的工作流程

A

编码(Encode)

将对话内容、经验教训编码为向量或结构化数据

B

存储(Store)

存入向量数据库或持久化存储,标注时间、上下文等元信息

C

检索(Retrieve)

根据当前任务上下文,从记忆中检索最相关的历史信息

D

遗忘(Forgetting)

选择性遗忘过时或不重要的信息,保持记忆系统的精简和高效

工具:Agent 的"双手和双眼"

工具是 Agent 从"纸上谈兵"走向"真枪实弹"的关键。有了工具,Agent 不再只是在一个封闭的对话世界里"空谈"——它可以去搜索、去写代码、去操控浏览器、去访问数据库。

🔍 搜索工具
让 Agent 获取最新信息,突破训练数据的时间局限
SerpAPI · Tavily · DuckDuckGo · Google Search
💻 代码执行
让 Agent 编写并运行代码,完成计算、数据处理等任务
Python REPL · Jupyter · Code Interpreter
🌐 浏览器控制
让 Agent 操控浏览器完成网页操作——填表、点击、抓取数据
Playwright · Selenium · Puppeteer
📁 文件操作
让 Agent 读写文件、管理目录、处理文档
文件读写 · CSV/JSON · PDF 处理
🔌 API 调用
让 Agent 与外部服务交互——发邮件、查天气、订机票
REST API · GraphQL · Webhook
🗄️ 数据库
让 Agent 查询和写入数据库,进行数据分析
SQL · MongoDB · Redis

Function Calling:大模型如何"学会"使用工具?

工具之所以能被 Agent 调用,核心在于Function Calling(函数调用)技术——它让大语言模型能够理解工具的定义,并在合适的时机生成调用工具的请求。

它的工作原理并不复杂:首先,开发者为每个工具定义一个函数签名——包括函数名、参数描述、参数类型。然后将这些定义"告诉"大模型。当用户提出需求时,模型判断是否需要调用工具,并生成结构化的调用请求。

// 给模型的"工具定义"
function search_web(
  query: string,    // 搜索关键词
  max_results: int  // 最多返回结果数
) => string

// 用户提问
"今天 AI 领域有什么重大新闻?"

// 模型生成工具调用请求
{
  tool: "search_web",
  arguments: {
    query: "AI major news today",
    max_results: 5
  }
}

// 系统执行工具,返回结果
// 模型根据结果生成最终回复

根据任务复杂度、自主程度和协作方式,AI Agent 可以分为多种类型。了解这些类型有助于我们在不同场景下选择合适的 Agent 架构。

🎯

简单响应型 Agent

Simple Reflex Agent
最基本的 Agent 形式——接收到输入后直接做出反应。类似于"如果-那么"规则。例如:收到用户问题 → 调用 LLM → 返回回答。没有记忆,没有规划。
🧩

单 Agent

Single Agent
一个 Agent 独立完成从规划到执行的全流程任务。它有记忆、有规划能力、可以调用工具。例如:AutoGPT 可以自主完成"写一个网页"的完整任务。
👥

多 Agent 系统

Multi-Agent System
多个 Agent 分工协作完成复杂任务——就像一支团队。每个 Agent 有自己擅长的领域,通过通信和协调共同完成任务。例如:CrewAI、Microsoft AutoGen
🤝

人机协作 Agent

Human-in-the-Loop Agent
Agent 在执行过程中主动请求人类审核或决策。在关键步骤(如代码部署、发送重要邮件)暂停,等待人类确认。平衡了效率和安全
🚀

自主 Agent

Autonomous Agent
能够在较长时间内独立运行,自主设定子目标、调整策略、学习改进。不需要人工干预就能完成复杂项目。是 Agent 的终极形态,目前仍处于早期探索阶段。

多 Agent 系统就像是一个 AI 团队,每个 Agent 都有自己的专长,通过协作能够完成单一个体无法完成的复杂任务。

—— 微软研究院

多 Agent 协作模式

在多 Agent 系统中,Agent 之间可以采用不同的协作模式来完成复杂任务:

📋 顺序执行(Sequential)

Agent 按顺序依次完成任务,后一个 Agent 依赖前一个 Agent 的输出作为输入。适合流水线式的任务——先写代码、再测试、再部署。每个 Agent 专注于自己的环节。

🤝 协作(Collaborative)

多个 Agent 同时工作、共享信息,共同朝着目标前进。每个 Agent 有自己的子目标,但会与其他 Agent 保持沟通,确保方向一致。适合需要跨领域知识的项目。

⚔️ 竞争(Competitive)

Agent 之间存在竞争或辩论关系。例如一个 Agent 负责生成方案,另一个 Agent 负责批判和挑错——类似"红队测试"(Red Teaming)。这种模式能有效提升输出质量。

AI Agent 正在从概念走向大规模实践。以下是一些正在发生或即将发生的典型应用场景——每个场景都展示了 Agent 在"行动"方面的独特能力。

💻

软件开发

自动写代码、调试、审查、部署。Agent 可以读取项目代码、理解架构、修改文件、运行测试。代表项目:Devin、Cursor Agent、Claude Code
🔍

研究助手

自动搜索文献、整理资料、生成报告、对比观点。Agent 可以读取大量论文、提取关键信息、形成结构化分析。
📧

办公自动化

处理邮件、安排会议、管理任务、生成文档。Agent 可以连接日历、邮件、文档工具,独立完成一系列办公流程。
🛒

电商与营销

自动选品、生成产品描述、优化广告文案、管理客服。Agent 能实时分析市场数据并做出营销决策。
📊

数据分析

自动收集数据、清洗、分析、可视化、生成报告。Agent 可以编写 SQL 查询、运行 Python 分析脚本、制作图表。
🎮

游戏与模拟

在游戏环境中自主探索、学习策略、与人对战。Agent 通过"试错-奖励"机制在游戏中展现出超越人类的水平。

软件开发 Agent:目前最成熟的 Agent 应用

软件开发是 Agent 落地最快、最成熟的领域之一。Agent 可以参与的环节贯穿整个软件开发生命周期——从需求分析到代码实现、测试、部署、运维。

📝 代码生成

根据自然语言描述生成代码片段或完整函数。从 GitHub Copilot 的行内补全,到 Devin 的"给我一个网站"的全程生成,Agent 的代码能力越来越强。

🐛 自动调试

读取错误日志 → 分析代码 → 定位 bug → 修复代码 → 运行验证。一个完整的调试闭环,Agent 可以独立完成,不再需要人类逐行排查。

📦 项目管理

读取整个代码库、理解架构、修改多个相关文件、提交 commit。Agent 不再只写"一段代码",而是像真正的开发者一样管理整个项目。

🚀 部署运维

编写 Dockerfile、配置 CI/CD 流水线、部署到服务器、监控系统状态。Agent 正在成为全栈工程师——不仅是写代码,更是交付一个完整的产品。

代表性 AI Agent 产品一览

产品名称 公司/团队 核心能力 典型场景
AutoGPT 开源社区 自主规划、工具调用、持续学习 市场调研、内容创作、自动化工作流
Devin Cognition AI 全栈开发、代码调试、项目管理 从需求到部署的完整开发流程
CrewAI CrewAI Inc. 多 Agent 角色编排、任务协作 复杂项目的多角色团队协作
AutoGen 微软研究院 多 Agent 对话、人机协同 复杂推理任务、代码生成与验证
LangGraph LangChain 有向图编排 Agent 流程、状态管理 自定义 Agent 工作流、复杂多步骤任务
Computer Use Anthropic 操控电脑桌面、模拟鼠标键盘 不需要 API 的系统操作、GUI 自动化
Dify Dify 团队 低代码 Agent 平台、RAG 集成 快速搭建企业级 AI 应用

在使用和开发 AI Agent 时,有一些核心概念和技术你需要了解——它们决定了 Agent 的行为模式和最终效果。

🧩 Prompt(提示词)
给 Agent 的指令或"大脑中的想法"。好的 Prompt 决定了 Agent 能否理解任务并高效完成。Prompt 工程是 Agent 开发的核心技能。
📋 Context Window(上下文窗口)
大模型一次性能"记住"的 Token 上限。常见的有 8K、32K、128K 等。上下文窗口越大,Agent 能同时处理的信息就越多。
🔄 Loop(循环)
Agent 工作的核心模式——"思考→行动→观察→再思考"的循环。典型的如 ReAct Loop、Plan-and-Execute 循环等。
⚙️ System Prompt(系统提示词)
给 Agent 的"身份设定"和"行为准则"。例如:"你是一个专业的 Python 程序员,你的任务是修复用户提出的 bug。"
📦 Tool Definition(工具定义)
告诉大模型"有哪些工具可用、每个工具怎么用"的 JSON 格式描述。包含函数名、参数说明、返回类型等。
🧠 Embedding(嵌入)
将文本转换为高维向量,使相似内容的向量在空间中距离更近。是实现语义搜索和长期记忆的基础技术。
🔐 Guardrails(护栏)
给 Agent 设置的安全边界——什么能做、什么不能做。防止 Agent 执行危险操作、生成有害内容或偏离任务目标。
📐 Chain / Pipeline(工作流)
将多个 Agent 或 LLM 调用按顺序编排成一条流水线。每个环节的输出是下一个环节的输入,适合处理复杂的多步骤任务。

LLM 关键参数对 Agent 的影响

调整 LLM 的参数会显著影响 Agent 的行为——这些参数决定了模型的"性格"和"风格"。

temperature
范围:0.0 ~ 2.0(默认 0.7)
控制输出的随机性。值越低,输出越确定和一致;值越高,输出越随机和多样化。Agent 做确定性任务时建议设低(0.1-0.3),创意任务可设高。
top_p
范围:0.0 ~ 1.0
核采样参数,控制模型从概率分布的顶部选取 token。与 temperature 类似但更精细,通常设为 0.9 左右。
max_tokens
范围:1 ~ 数十万
单次回答的最大 Token 数。Agent 的规划步骤需要足够的 max_tokens 来完整表达。
presence_penalty
范围:-2.0 ~ 2.0
鼓励模型使用新词。正值有助于减少重复,对 Agent 多轮推理中避免循环很有帮助。

理解之后,开始构建

前面的定义、架构和工具解释了 Agent 如何工作;接下来把这些组件落到工程中:先看开发方式如何演进,再学习框架选择、设计模式、能力扩展与生产实践,最后完成一个可运行的 Agent。

阅读主线:不要先追逐最复杂的框架。先明确目标与边界,再选择最小可行架构;只有当状态、分支、协作或可观测性变复杂时,才逐步引入图编排、多 Agent、MCP 与 Skill。

从"手动组装"到"框架赋能"的演进之路

Agent 的开发方式经历了三次重大跃迁——从最初的"从零手写",到"链式封装",再到如今的"图编排+自主协作"。理解这个演进过程,能帮助你更好地选择适合的工具。

2022-2023 · 第一阶段

手动组装(Hand-Coded Chains)

Hardcoded Chains
在 LLM 应用初期,开发者需要从头编写每一个步骤——发送 prompt、解析返回结果、根据条件调用下一个 LLM 或工具。每个 Agent 都是"烟囱式"的,无法复用。一个多步骤任务可能需要几十行 if-else 代码,修改任何一步都要重写整个流程。

代表:早期的 LangChain Chain 模式、手写 Prompt 链
2023-2024 · 第二阶段

链式封装(Chains & Tools)

Chains + Tool Use
框架开始提供标准化的"链"抽象——将 LLM 调用、工具使用、输出解析封装为可复用的组件。开发者像搭积木一样组合 Chain。Function Calling 技术的成熟让 LLM 可以稳定调用外部工具,Agent 开始真正"能用工具"。

代表:LangChain Agent Executor、Semantic Kernel、OpenAI Function Calling
2024-2025 · 第三阶段

图编排与自主 Agent(Graphs & Autonomous Agents)

Graph-Based Orchestration
从线性链到有向图——Agent 不再是一条直线,而是可以有分支、循环、并行、条件判断的复杂网络。框架开始内置状态管理、持久化、人机协同等生产级特性。多 Agent 协作成为主流范式,Agent 可以像团队一样分工。

代表:LangGraph、CrewAI、AutoGen、Microsoft Semantic Kernel (Agent)

关键里程碑

从 ChatGPT 点燃大模型浪潮,到 Agent 进入生产环境,不过短短三年——这场变革的节奏远超以往任何技术周期。

2022
ChatGPT 发布
大语言模型走向大众,点燃 AI 浪潮
2023
GPT-4 · LangChain — 推理能力飞跃,Chain 概念诞生 AutoGPT · Function Calling — 自主 Agent 尝试,工具调用标准化
2024
LangGraph · CrewAI · AutoGen — 图编排 + 多 Agent 协作兴起 Computer Use — Agent 开始操控真实系统
2025
生产环境时代
可靠性、可观测性、成本控制成为焦点,Agent 从实验走向落地

为什么需要框架?

直接调用 LLM API 当然可以做 Agent,但面对复杂的业务逻辑、错误处理、状态管理、并发控制时,框架能帮你解决重复造轮子的问题。它们提供标准化的抽象——工具管理、循环控制、记忆系统、持久化等——让你专注于业务逻辑而非基础设施。

框架三大类别

🔧 全栈框架

提供端到端的 Agent 开发工具——从 prompt 管理、工具集成、记忆系统到部署监控一应俱全。适合需要快速构建完整 Agent 应用的场景。

代表:LangChain / LangGraph、LlamaIndex

优势:生态庞大、文档丰富、社区活跃  |  劣势:学习曲线较陡、组件较多

👥 多 Agent 协作框架

专注于多个 Agent 如何分工协作。提供角色定义、任务编排、通信机制、协作模式(顺序、并行、辩论)。适合复杂项目需要"团队作战"的场景。

代表:CrewAI、Microsoft AutoGen、CAMEL

优势:天然适合复杂任务分解  |  劣势:调试复杂度高、通信开销大

🪶 轻量工具库

提供最小化的 Agent 构建基元——一个 Agent 类、工具注册、简单的 ReAct 循环。不强制你的架构设计,灵活性极高。

代表:OpenAI Agents SDK、LangChain Expression Language (LCEL)、SmolAgents

优势:简单灵活、易于理解  |  劣势:复杂场景需要自己组合

🖥️ 低代码 / 无代码平台

通过可视化界面拖拽组装 Agent——选择模型、添加工具、配置流程,无需写代码即可创建可用的 Agent 应用。适合非技术人员或快速原型。

代表:Dify、Coze、LangSmith、Flowise

优势:上手快、部署简单  |  劣势:灵活性受限、深度定制难

主流框架对比一览

框架 类型 核心优势 适用场景 语言
LangGraph 全栈图编排 状态管理、有向图、持久化、生产就绪 复杂工作流、需要精细控制的 Agent Python / JS
CrewAI 多 Agent 协作 角色分工、流程编排(顺序/层次)、API 简洁 需要多角色协作的复杂项目 Python
AutoGen 多 Agent 对话 多 Agent 对话机制、代码执行、人机协同 复杂推理、代码生成与验证 Python / .NET
OpenAI Agents SDK 轻量 SDK 极简 API、内置搜索和代码执行工具 快速构建单 Agent 应用 Python / TS
SmolAgents 轻量框架 极简设计、支持 Code Agent、内置沙箱 快速原型、教育演示 Python
Dify 低代码平台 可视化编排、RAG 内置、开箱即用 企业级 AI 应用快速搭建 Web / Docker

如何选择框架?一句话原则:简单任务选轻量,复杂任务选图编排,团队任务选多 Agent。

🧭 框架选择速查

根据你的任务复杂度、团队规模和上手需求,快速锁定目标框架——

🥇 简单
OpenAI Agents SDK
SmolAgents
单 Agent,搜索+回答,快速原型
🥈 中等
LangGraph
LlamaIndex
复杂工作流,精细控制,有向图编排
🥉 复杂
CrewAI
AutoGen
多 Agent 协作,角色分工,团队作战

Agent 不是单一设计——它有多种"思维模式"

就像不同的人用不同的方式解决问题,Agent 也有多种架构模式。理解这些模式,能帮你在不同场景下选择最合适的策略。

🔄 ReAct 模式

Reasoning + Acting 的交替循环——Agent 在"思考→行动→观察→再思考"的循环中逐步逼近目标。这是最经典、使用最广泛的 Agent 模式。适用于需要动态调整策略的任务,如信息搜索、代码调试。

📋 Plan-and-Execute

先计划,后执行——LLM 先生成一个完整的任务分解计划,然后按步骤逐一执行。优点是路径清晰、可回溯;缺点是对意外情况适应性差,需要"反思-修正"机制来应对偏离。

⚡ Code as Agents

让 Agent 生成代码而非自然语言——代码本身就是一种结构化、可执行的 Agent 行为。Agent 通过编写和执行 Python 代码来完成任务(如搜索、计算、数据聚合)。优点是结果可验证、可复用。

👥 Multi-Agent

多个 Agent 各司其职——规划 Agent 制定策略,执行 Agent 完成任务,审查 Agent 检查质量。通过角色分离,每个 Agent 都足够专精,组合后又能完成复杂项目。

Agent 设计的三个核心问题

在设计任何 Agent 之前,有三个根本性问题必须想清楚——它们决定了你的 Agent 的"基因"。

🎯

目标是什么?

Agent 需要达成的最终目标。一个好的 Agent 目标应该是明确的、可衡量的——不是"帮我工作",而是"帮我每天早上自动汇总昨晚的 AI 新闻并发送简报"。
🛠️

有什么工具?

Agent 能用的外部工具——搜索、代码执行、文件操作、API 调用。工具的丰富度和可靠性直接影响 Agent 的能力边界。
🔒

边界在哪?

Agent 不能做什么——这是最容易被忽视但最重要的设计要素。安全护栏、权限控制、人工审批机制,决定了 Agent 是否能安全地上线运行。

一个负责“连接世界”,一个负责“沉淀做法”

当 Agent 从演示走向真实工作,仅有 LLM 和几个手写函数还不够:它既需要一种统一方式连接文件、数据库、浏览器和企业系统,也需要把成熟的操作步骤保存下来,避免每次都从零探索。MCPSkill 正好解决这两个不同层面的问题。

🔌 MCP:标准化的能力连接协议

MCP(Model Context Protocol,模型上下文协议)是一套开放协议,用统一的客户端—服务器方式,把 AI 应用连接到外部数据和工具。它像 Agent 世界的“通用接口”:接入一次,兼容 MCP 的客户端就能发现并使用服务端暴露的能力。

  • Tools:可执行动作,如查询数据库、发送消息、创建工单
  • Resources:可读取上下文,如文件、文档、数据记录
  • Prompts:服务端提供的可复用提示模板或交互入口

🧠 Skill:可复用的任务方法与操作手册

Skill(技能)是面向特定任务的知识包:它告诉 Agent 在什么情况下应该采用哪套方法、按什么步骤执行、需要读取哪些参考资料,以及何时调用脚本或工具。它更像一份可以被 Agent 主动加载的“标准作业程序”。

  • Instructions:任务目标、规则、步骤和检查清单
  • Scripts:稳定、可重复执行的辅助程序
  • References / Assets:按需加载的资料、模板与资源

MCP 的基本架构:Host、Client 与 Server

MCP 采用客户端—服务器架构。Host 是承载 Agent 的 AI 应用;Host 内部创建一个或多个 Client,每个 Client 与一个 MCP Server 保持连接;Server 再负责访问本地或远程系统,并向 Agent 暴露可发现的能力。

MCP 如何把 Agent 与外部系统连接起来
🤖 MCP Host AI 应用 / Agent
🔗 MCP Client 协议连接与能力发现
🧰 MCP Server Tools · Resources · Prompts
📁 文件 / 数据库
☁️ API / SaaS
本地服务常通过 stdio 通信,远程服务通常通过 Streamable HTTP 通信。MCP 负责“如何连接和交换上下文”,但不替 Agent 决定任务目标与业务流程。

Skill 如何工作:按需发现,而不是一次塞进 Prompt

一个设计良好的 Skill 会采用渐进式披露(Progressive Disclosure):先只暴露名称与用途,让 Agent 判断是否匹配;命中任务后再读取完整说明;真正执行到某一步时,才继续加载脚本、模板或参考资料。这样既节省上下文,也减少无关指令干扰。

1

发现

浏览 Skill 名称与描述,判断它能解决什么问题

2

激活

任务匹配时读取 SKILL.md 中的完整流程与规则

3

执行

按步骤调用工具、运行脚本、读取参考资料

4

验证

依据 Skill 的检查清单确认结果是否达标

Tool、MCP、Skill 到底有什么区别?

概念 它解决的问题 典型形态 复用粒度
Tool Agent 能执行什么动作? 一个函数、API 或命令 原子能力:搜索、写文件、发邮件
MCP Agent 如何统一发现并连接外部能力? 协议、Client、Server 连接层:一组工具、资源和提示
Skill Agent 应该怎样完成某类任务? SKILL.md + 脚本 + 参考资料 流程层:方法、规范和完整工作流

一句话记忆:Tool 是一个动作MCP 是连接动作的标准接口Skill 是组织这些动作完成任务的方法

MCP + Skill:现代 Agent 的完整能力链

从用户目标到真实世界结果
💬 用户任务
🧠 Agent 推理
📘 加载 Skill 获得步骤与规范
🔌 通过 MCP 发现并调用能力
完成并验证
两者可以独立使用:Skill 也能调用内置工具,MCP 工具也能被 Agent 直接使用;但组合起来后,Agent 同时拥有标准化的能力入口可复用的工作方法

一个 Skill 与一个 MCP Tool 的最小示意

📘 SKILL.md:描述“怎么做”
---
name: research-report
description: 调研一个主题并生成可核验的报告
---

# 工作流程
1. 明确问题与交付格式
2. 搜集多来源资料
3. 交叉验证关键事实
4. 输出结论与来源清单

# 完成标准
- 关键结论至少有两个来源支持
- 明确区分事实、观点与推断
🔌 MCP Tool:描述“能做什么”
{
  "name": "search_documents",
  "description": "在知识库中检索文档",
  "inputSchema": {
    "type": "object",
    "properties": {
      "query": { "type": "string" },
      "limit": { "type": "integer" }
    },
    "required": ["query"]
  }
}

什么时候应该使用它们?

🛠️

只写 Tool

只有一两个简单动作、仅在当前项目使用时,直接定义函数最快,不必为了“标准化”而增加复杂度。
🔌

使用 MCP

同一组数据或工具需要被多个 AI 客户端复用,或希望把外部系统接入方式标准化时。
📘

编写 Skill

任务有稳定步骤、专业规则、模板或验收标准,希望 Agent 每次都按同一套高质量方法执行时。
🧩

组合使用

复杂业务既要连接真实系统,又要遵循固定流程时,让 Skill 编排方法,让 MCP 提供能力。

🔒 安全提醒:MCP Server 和 Skill 都可能触发文件修改、命令执行或外部请求。接入第三方内容前应检查来源与代码,采用最小权限,限制可访问目录和凭证;删除、付款、发送消息等高风险动作应保留人工确认,并对脚本执行设置沙箱、超时与日志。

从无数踩坑中总结的经验

随着 Agent 开发进入生产环境阶段,社区积累了大量实践经验。以下是当前公认的最佳实践——每一条都来自真实项目的教训。

🌱 从简单开始,逐步复杂化

先构建一个最简 Agent(ReAct 循环 + 1-2 个工具),验证核心流程跑通。然后逐步添加工具、记忆、反思等模块。不要一开始就设计多 Agent 系统。

📝 精心设计 System Prompt

System Prompt 是 Agent 的"人格设定"。好的 Prompt 包含:角色定义(你是谁)、任务描述(你要做什么)、工具说明(你能用什么)、行为准则(你应该怎么做)、输出格式(你该如何回复)。

⚙️ 工具设计遵循"少而精"

给 Agent 的工具不是越多越好。过多的工具会分散 Agent 的注意力、增加幻觉概率。每个工具应该有清晰的名字、精确的描述、明确的输入输出

🛡️ 始终设置安全护栏

Agent 具有自主行动能力,必须设置边界:输入过滤、输出检查、敏感操作人工审批、工具权限最小化、最大迭代次数限制等。让 Agent 有护栏地自由行动,而不是无限自由。

📊 可观测性至关重要

Agent 的每一步推理和行动都应该被记录——使用 LangSmith、LangFuse 等工具追踪 Agent 的决策路径、工具调用、耗时和 Token 消耗。没有可观测性的 Agent 就是黑盒。

🧪 建立评估体系

不要只靠感觉判断 Agent 好坏。建立 评测集(Evaluation Set),用客观指标衡量 Agent 的完成率、正确率、效率。考虑使用 LLM-as-a-Judge 让另一个模型来评估 Agent 的输出质量。

工具设计原则:让 Agent 用好工具

工具是 Agent 与外部世界交互的唯一桥梁。工具设计的好坏,直接决定了 Agent 的"动手能力"。以下是一条简单但强大的原则——

工具命名即文档:工具的名字就是它最好的文档。与其在描述里写"这个函数可以搜索互联网上的信息",不如直接把工具命名为 search_the_internet_for_information——名字本身就让 LLM 知道什么时候该用它。

Agent 开发常见陷阱

🕳️ 过度工程化

一个简单问题却设计了一个包含 5 个 Agent、3 个工具、复杂编排的多 Agent 系统。记住:能用一个简单 Agent 解决的问题,不要用复杂的。

🕳️ 工具描述模糊

给工具写的描述太笼统("搜索信息"),LLM 无法判断何时应该调用。好的描述应该包括:什么时候调用、调用后返回什么、需要什么参数

🕳️ 循环无终止

ReAct 循环没有最大迭代次数限制,Agent 可能陷入死循环。务必设置最大步数(如 15 步)和超时机制。

🕳️ 忽略成本与延迟

一个 Agent 可能调用 LLM 数十次、使用多个工具——Token 成本和响应延迟会迅速累积。设计时要考虑成本预算,必要时做缓存或减少调用。

项目:让 Agent 安全整理一个杂乱文件夹

这一次,我们不再从安装框架、复制代码开始。你只需要把目标、约束和验收标准告诉 Coding Agent,让它负责创建项目、编写代码、运行测试并根据反馈迭代。最终得到的文件整理 Agent会扫描一个指定目录,理解文件内容,生成分类与重命名方案,并且只有在你确认后才执行整理。

🛠️

Coding Agent:开发者

读取需求、创建项目、编写工具与测试、运行程序、发现错误并继续修改。

🗂️

文件整理 Agent:最终产品

扫描文件、制定计划、等待审批、执行复制、核对结果并生成整理报告。

先分清两个 Agent:Coding Agent 是帮你开发软件的“程序员”;文件整理 Agent 是我们要开发出来、以后可以反复使用的“数字收纳员”。这正是 Vibe Coding 的核心——你描述目标和反馈,Coding Agent 负责把想法变成可以运行的软件。

🏗️ 文件整理 Agent 的工作闭环
📥
指定目录
demo-inbox
🧠
分析与规划
分类 / 命名 / 置信度
🔎
只读扫描
文件工具
🛡️
安全校验
策略工具
📋
生成预案
plan.json
🙋
人工确认
批准后执行
复制并核验
输出报告
默认只预演,不直接改文件:扫描 → 规划 → 策略校验 → 展示变更 → 人工批准 → 复制文件 → 结果核验。

第一步不是写代码,而是定义安全边界

“帮我整理文件”是一个危险的模糊需求。一个真正可用的 Agent,必须先把能做什么、不能做什么、怎样才算完成说清楚。

👁️
默认只读

第一次运行只能扫描和生成计划,不能修改任何源文件。

📦
只复制,不删除

批准后复制到输出目录,原始文件保持不变。

📍
限定工作区

只能访问用户明确指定的演示目录,拒绝越界路径和符号链接。

🧑‍⚖️
人工审批

展示每项变更,用户输入确认令牌后才允许执行。

不确定就停

低置信度、重名或疑似重复文件进入“待确认”,不擅自决定。

🧾
全程可追溯

保存计划、执行结果和错误原因,但不在日志中记录文件正文。

1 第一轮对话:把想法交给 Coding Agent

新建一个空目录,在其中打开你常用的 Coding Agent,然后直接描述产品目标。不要先替它设计所有类和函数,先让它理解任务并给出实现方案。

👤 你
请在当前目录开发一个“本地文件整理 Agent”。它扫描 demo-inbox,根据文件名、扩展名和可读取的文本摘要生成分类与重命名计划。第一次运行只能预览,不能修改文件。执行时只能把文件复制到 organized-output,不能删除、覆盖或修改源文件。请先检查需求,给出计划,再开始编码。
🤖 Coding Agent
我会先创建最小可用版本:目录扫描、文件摘要、结构化整理计划、安全策略校验、人工确认和执行报告。默认使用 Dry Run,并用自动化测试验证不能越界、不能覆盖和不能删除源文件。
Vibe Coding 技巧:描述“目标 + 边界 + 验收结果”,而不是只说“用 Python 写一个 Agent”。好的上下文比指定每一个实现细节更重要。
2 让 Coding Agent 建立最小可运行项目

Coding Agent 完成第一轮后,项目应该具备清晰的职责分层,而不是把扫描、模型调用和文件操作全部塞进一个脚本。

file-organizer-agent/
├── app.py                     # plan / apply / verify 命令入口
├── organizer/
│   ├── agent.py               # 任务编排与循环
│   ├── tools.py               # 扫描、摘要、复制、核验工具
│   ├── policy.py              # 路径和操作安全策略
│   ├── schemas.py             # 整理计划的数据结构
│   └── prompts.py             # 分类规则与输出约束
├── tests/                     # 安全边界和核心流程测试
├── demo-inbox/                # 只放虚构的演示文件
└── organized-output/          # Agent 的输出目录
# 先让 Coding Agent 生成一组不含真实信息的演示文件,再运行:
python app.py plan --source demo-inbox --output organized-output

# 此时只允许产生 plan.json 和预览报告,不应复制任何文件。
3 第一次运行:观察 Agent 如何制定计划

不要急着继续加功能。先运行最小版本,检查 Agent 是否真的会使用工具、解释决策,并把不确定项留给人。

整理预案 · Dry Run 未修改源文件
会议记录-最终版2.txt 工作文档/会议纪要/2026-07-项目会议记录.txt 92%
IMG_001.jpg 图片/未识别主题/IMG_001.jpg 48%
报销材料.pdf 待确认/报销材料.pdf 67%
共扫描 6 个文件:建议整理 4 个,待人工确认 2 个,发现 0 个越界操作。

这里才体现 Agent:它不是按照扩展名机械移动文件,而是先读取环境、生成计划、调用策略工具检查计划,再根据反馈决定“可以继续”还是“交给人判断”。

4 第二轮对话:根据真实运行结果补齐安全闸门

第一次运行往往会暴露模糊规则。与其自己钻进代码逐行修改,不如把观察到的问题和新的验收标准继续告诉 Coding Agent。

👤 你
第一版能生成计划,但还不够安全。请增加以下规则:拒绝源目录外的路径;跳过符号链接和隐藏文件;文件重名时不覆盖;置信度低于 0.75 的项目必须进入待确认;执行前生成一次性确认令牌;任何失败都显示具体原因。补充测试并运行测试。
🤖 Coding Agent
我会把这些约束集中到策略层,而不是散落在业务代码中;然后增加路径穿越、符号链接、同名文件、低置信度和错误原因测试。修改完成后会运行完整测试并汇报结果。
1模型提出整理计划
2策略代码逐项校验
3用户审阅并确认
4工具执行允许的操作

安全规则必须由确定性的代码执行,不能只写在提示词里。LLM 可以提出建议,但没有权力绕过路径检查、覆盖保护和人工审批。

5 批准计划:让 Agent 执行并自我核验

当计划通过人工检查后,再使用预案中生成的一次性令牌执行。令牌应绑定当前计划内容;计划一旦变化,旧令牌立即失效。

# 预览计划,同时生成一次性确认令牌
python app.py plan --source demo-inbox --output organized-output

# 人工检查 plan.json 后再执行。示例令牌仅用于演示:
python app.py apply --plan plan.json --confirm PLAN-7K2M

# 再次核对:源文件数量不变,输出文件与计划一致
python app.py verify --plan plan.json
🛡️
高风险操作必须停下来问人

如果未来要加入“移动、删除、覆盖、上传云端”等能力,不能沿用当前确认范围,必须重新设计权限、审批和回滚机制。

6 第三轮对话:让 Coding Agent 做一次工程化验收

“程序能启动”不等于“Agent 可以交付”。最后一轮让 Coding Agent 站在测试者角度检查完整边界,并用实际命令证明结果。

👤 你
现在请不要继续增加功能。为项目执行最终验收:运行全部测试;用演示目录完整走一遍 plan、apply、verify;确认源文件没有变化;检查日志不包含文件正文;最后更新 README,写清启动方式、限制和安全边界。如果有失败,先修复再重新验证。
🤖 Coding Agent
我会按“测试结果、演示结果、安全检查、仍有限制”四部分报告,只把实际验证通过的项目标为完成,不会把尚未运行的检查写成成功。
功能

能扫描、规划、审批、复制和核验。

安全

不越界、不删除、不覆盖、不跟随符号链接。

异常

低置信度和失败项进入待确认并显示原因。

可验证

测试、计划与报告都能复现执行结果。

7 可选升级:再用一句话增加本地网页界面

命令行版本验证稳定后,再让 Coding Agent 增加界面,而不是一开始就堆叠复杂功能。

👤 你
保留现有命令行和安全策略,为它增加一个简洁的本地网页:左侧选择演示目录,中间展示整理计划,低置信度项目可以手动修改分类,底部必须勾选确认后才能执行。服务使用 8011 端口,不要改变核心 Agent 逻辑。
# 具体命令由 Coding Agent 根据它选择的界面框架写入 README
# 示例:
streamlit run web.py --server.port 8011

最终得到的不是脚本,而是一个受约束的 Agent

1感知扫描文件与元数据
2规划分类、命名、置信度
3校验安全策略阻止越界
4行动批准后调用复制工具
5反思核验并报告异常

Vibe Coding 不是“随便说一句,让 AI 把代码写完”,而是把目标讲清楚、让系统先跑起来、根据真实反馈逐轮修正,并用测试守住边界。你负责方向、判断和验收;Coding Agent 负责把每一轮反馈变成可以运行、可以验证的工程结果。

核心要点回顾

📈 三次演进

从手动组装 → 链式封装 → 图编排与自主协作,Agent 开发框架越来越抽象化、可视化、生产化

🧩 四大类别

全栈框架(LangGraph)、多 Agent 框架(CrewAI/AutoGen)、轻量 SDK(OpenAI Agents SDK)、低代码平台(Dify)——选合适的,而非最强的。

🔑 四大模式

ReAct、Plan-and-Execute、Code as Agent、Multi-Agent——理解模式,才能设计合适的 Agent。

🚀 最佳实践

从简单开始、精心编写 Prompt、少而精的工具设计、始终设置安全护栏、保持可观测性。

🔌 能力扩展

Tool 提供原子动作,MCP 标准化外部连接,Skill 沉淀可复用流程——三者共同构成现代 Agent 的能力层。

下一步去哪里?

从“感知—思考—行动”的基本循环,到框架、MCP、Skill、工程护栏与文件整理实战,我们已经把 Agent 的原理和开发串成了一条连续路径,并提前体验了Vibe Coding。下一章会进一步拆解这种协作方式:如何表达意图、管理上下文、审查代码,并与 Coding Agent 一起完成真正的软件项目。

理解原理、选择架构、连接工具、验证结果——
现在,让我们把这套 Agent 思维带入下一章的 AI 编程实践。