Agent 基础讲解(上):Agent 是什么 (vs Model)+ Prompt / Tool / Skill 三层 + MCP 协议详解 。本篇是给 AI 工程师 / 产品经理的入门课。
一、Agent 是什么 1.1 一句话定义 1 Agent = "以大模型为核心,能调用工具、持续完成任务的系统"
核心要素 :
大模型(推理 + 决策)
工具调用(行动)
持续性(多步任务,不是单次)
1.2 Agent ≠ Model 1 2 3 4 5 6 7 8 9 10 11 Model: - 输入 prompt → 输出文本 - 一次调用 = 一次响应 - 不能调用外部 API - 不能持续多步 Agent: - 多次调用 Model - 主动调用工具 - 自主决策下一步 - 持续到任务完成
关键差异 :Agent 包含 Model,但Model 不是 Agent 。Agent = Model + 工具 + 记忆 + 规划。
1.3 Agent 4 步循环 1 2 3 4 5 6 7 8 9 10 11 12 13 感知(Perception) ↓ 收到输入(用户消息 / 工具结果 / 环境状态) 决策(Decision) ↓ Model 推理:"下一步做什么?" 行动(Action) ↓ 调工具(API / 文件 / 命令) 反馈(Feedback) ↓ 工具结果 / 环境变化 → 循环直到任务完成
核心 :循环 + 反馈 ——Agent 不是”想完就执行”,而是”边做边调整”。
2.1 Prompt(指挥语言) 1 2 3 4 5 6 7 8 9 10 11 System Prompt:模型身份 + 行为准则 → 写"你是谁 + 边界" → 例:"你是客服助手,只回答订单问题" User Prompt:当前任务输入 → 写"做什么 + 上下文" → 例:"查询订单 12345 的状态" Few-shot Prompt:示例演示 → 写"格式 + 风格" → 例:3 个问答样例
5 类常用 Prompt 模板 :
1 2 3 4 5 1. 角色设定:你是 [角色],负责 [职责] 2. 任务描述:请 [做什么],要求 [输出格式] 3. 上下文:[相关背景信息] 4. 限制:不要 [禁忌] 5. 输出:返回 [具体格式]
1 2 3 4 5 6 Tool 类型: - API(外部服务调用) - 代码解释器(运行 Python / JS) - 文件系统(读 / 写文件) - 搜索(web / 数据库) - 数据库(SQL / NoSQL)
3 个 Tool 实战示例 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 { "name" : "get_weather" , "description" : "查询指定城市的天气" , "parameters" : { "city" : {"type" : "string" } } } { "name" : "query_db" , "description" : "执行 SQL 查询" , "parameters" : { "sql" : {"type" : "string" } } } { "name" : "send_email" , "description" : "发送邮件" , "parameters" : { "to" : {"type" : "string" }, "subject" : {"type" : "string" }, "body" : {"type" : "string" } } }
Tool = 被动调用 (Model 决定何时用)
2.3 Skill(Agent 的套路) 1 2 3 4 5 6 7 8 9 Skill = 一组 Tool + 一组 Prompt + 决策规则 - 可复用方法 - 主动编排多个 Tool - 有"经验"(不只是流程) 例:「差旅规划 Skill」 - 工具:航班搜索、酒店搜索、日历工具 - Prompt:分析用户需求 → 推荐 3 个方案 - 规则:总价 < ¥5000 / 偏好早班机
4 条 Skill 设计原则 :
1 2 3 4 1. 单一职责:每个 Skill 解决一个具体场景 2. 可观察:每个步骤都有明确输出 3. 可回退:失败有 fallback 路径 4. 可组合:Skill 之间能嵌套调用
三、MCP(Model Context Protocol)详解 3.1 MCP 是什么 1 2 3 MCP = Anthropic 提出的标准协议 - 让 Agent 标准化连接外部数据源和工具 - 解决"每个 Agent 重复实现工具接口"的问题
3.2 MCP 架构 1 2 3 4 5 6 7 Host(Agent 框架) → Client(SDK 库) → Server(暴露资源 / 工具) - 文件系统 - 数据库 - API - 业务系统
通信协议 :JSON-RPC 2.0 over stdio / SSE / Streamable HTTP
3.3 MCP vs 传统工具调用
维度
MCP
传统工具调用
标准化
✅ 统一协议
❌ 每个 Agent 自己定义
跨框架
✅ 任何支持 MCP 的 Agent
❌ 锁定单一框架
复用
✅ Server 写一次,所有 Agent 用
❌ 每个 Agent 重写
发现
✅ 自动列可用 tools / resources
❌ 手动注册
安全
✅ 内置权限控制
❌ 自己实现
3.4 MCP 价值 1 2 3 4 5 6 7 8 9 10 之前:每个 Agent 框架(LangChain / AutoGen / Claude)都要自己实现工具接口 - LangChain 调 GitHub API - AutoGen 调 GitHub API - Claude Code 调 GitHub API → 三套实现 之后:Agent 框架 + MCP - GitHub 官方写 1 个 MCP server - 任何 Agent 框架自动能用 → 一套实现,全局复用
3.5 MCP 生态现状(2026) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 MCP Server(已知 20+): - 官方:@modelcontextprotocol/server-*(GitHub / GitLab / Google Drive / Slack / Postgres / Filesystem / Brave Search / Puppeteer) - 社区:数百个开源 server MCP Client(主流 Agent 都已支持): - Claude Code - Cursor - Windsurf - Continue.dev - Cline - OpenClaw 不支持 MCP 的(2026 H2): - LangChain(计划中) - LlamaIndex(部分)
4.1 天气查询 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import requestsdef get_weather (city: str ) -> dict : """查询指定城市天气""" api_key = "your_key" url = f"https://api.weather.com/v1/current?key={api_key} &city={city} " resp = requests.get(url, timeout=5 ) return resp.json() { "name" : "get_weather" , "fn" : get_weather, "description" : "查询指定城市的当前天气" , "parameters" : { "type" : "object" , "properties" : { "city" : {"type" : "string" , "description" : "城市名" } }, "required" : ["city" ] } }
4.2 数据库查询 1 2 3 4 5 6 7 8 9 10 import sqlite3def query_db (sql: str ) -> list : """执行 SQL 查询(只读账号)""" if any (kw in sql.upper() for kw in ["DROP" , "DELETE" , "UPDATE" , "INSERT" ]): return {"error" : "只读模式" } conn = sqlite3.connect("app.db" ) cur = conn.execute(sql) return cur.fetchall()
4.3 发送邮件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import smtplibfrom email.mime.text import MIMETextdef send_email (to: str , subject: str , body: str ) -> str : """发送邮件""" msg = MIMEText(body) msg["Subject" ] = subject msg["To" ] = to msg["From" ] = "bot@myapp.com" with smtplib.SMTP_SSL("smtp.myapp.com" , 465 ) as server: server.login("bot@myapp.com" , os.getenv("SMTP_PASS" )) server.send_message(msg) return f"Sent to {to} "
五、3 个 Skill 实战示例 5.1 差旅规划 Skill 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 name: travel_planning description: 为用户规划出差行程 tools: - search_flight - search_hotel - get_calendar - book_travel prompt: | 分析用户出差需求: 1. 出发地 + 目的地 + 日期 2. 预算 3. 偏好(早班机 / 靠窗 / 连锁酒店) 推荐 3 个行程方案,列出: - 总价 - 行程时间 - 关键风险(如转机时间) rules: - 总价不超预算 + 10 % - 转机时间 ≥ 90 分钟 - 优先选择常旅客户喜欢的品牌
5.2 数据分析 Skill 1 2 3 4 5 6 7 8 9 10 11 12 name: data_analysis description: 自动分析 CSV / Excel 数据 tools: - read_file - run_python - save_chart prompt: | 1. 读取文件(前 100 行预览) 2. 询问用户分析目标 3. 用 Python(Pandas)分析 4. 输出可视化图表 5. 总结 3 个关键发现
5.3 客户支持 Skill 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 name: customer_support description: 处理客户咨询 tools: - search_kb - read_ticket - reply_ticket prompt: | 1. 读 ticket 内容 2. 查知识库 3. 草拟回复 4. 等人工审核 5. 标记状态 rules: - 涉及退款必须人工 - 涉及法律必须人工 - 简单问答直接回复
六、3 个核心 takeaway 6.1 Agent 是”循环 + 反馈” 不是”想一次做一次”,而是”边做边调整”——这是 Agent 跟普通 LLM 应用的最大区别 。
Prompt:给模型的指令
Tool:模型能调的能力
Skill:组合 Tool + Prompt 的 SOP
3 者结合 = 一个能干活、能学、能积累经验的 Agent 。
6.3 MCP 是未来 1 个 GitHub MCP server = 所有 Agent 能用 GitHub。 1 套实现 = 全局复用。
5 年后回看,MCP 可能是 Agent 时代最重要的协议之一 。
七、本文 + 后续
(上)基础概念 + 工具(本文)
(中)上下文 + 记忆
(下)架构 + 部署 + 实战项目
Agent 基础的核心 :Model + Tool + Memory + Loop = Agent 。MCP 是 Agent 时代最重要的协议 ——一次写、全部 Agent 用 。未来 3 年是 Agent 落地期 ——会写 Skill + 用 MCP = 核心竞争力 。