0 · 为什么模型需要"手和脚"
进度 0%
AI LEARNING LAB · 学习路径
01 前沿首页 02 知识网络 03 技术 Demo 04 基础馆深读(当前) 05 Git 实验室

这里把首页的控制半径拆成可通关章节:Tool → ReAct → Loop → MCP → Multi-Agent → Skill → A2A/Card → 前沿雷达。

一页讲透现代 AI Agent 的
完整拼图

Tool(工具调用)、ReAct、Agent Loop 与 Loop Engineering、MCP 与 MCP Server——这五块拼图拼在一起,就是你每天在用的 Cursor、Claude Code、ChatGPT Agent 的全部骨架。学完可回到首页,用 Harness / Loop / Graph Demo 亲手验证。

📚 10 个章节 🎮 20+ 个交互组件 ⏱ 60–90 分钟 💾 进度自动保存 🔎 事实核对于 2026-07-28
一句总纲
现代 Agent = 一个会调用工具的模型(Tool)× 一个循环(Loop)× 一套标准接口(MCP)。ReAct 是这一切的思想源头,Loop Engineering 是把它做稳做好的工程学。

🗺 先看学习地图:这些概念是怎么一步步长出来的

2022.10
ReAct 论文
思想诞生:让模型"边推理边行动"
2023.06
Function Calling
机制落地:模型原生输出结构化工具调用
2024.11
MCP 发布
接口标准化:Anthropic 开源"AI 的 USB-C"
2025
Agent 产品化
Cursor / Claude Code / Codex 全面爆发,MCP 成事实标准
2026.06
Loop Engineering
工程学成型:"别再一句句提示,去设计循环"
2026.07
看进模型脑内
Anthropic 发现 J-Space;世界模型融资潮并行升温

🤔 出发点:再聪明的大脑,也只是个"文字接龙机"

大语言模型(LLM)的本质是:读入一段文字(上下文),预测下一段文字(输出)。它没有时钟、没有网络、没有文件系统、没有记忆——它连"今天是几号"都不知道。它是一个被关在玻璃房里的天才:博览群书、推理惊人,但看不到外面、也摸不着外面

下面这个对比实验,直观感受一下"裸模型"和"带工具的模型"的差距(点击问题按钮,两边同时开跑):

DEMO 1同一个模型,有无工具的平行世界点下面的问题试试
🚫 裸模型(没有工具)
我是一个只会"文字接龙"的模型。问我点什么吧。
🔧 同一个模型 + 工具
我挂上了 get_time / calculator / read_file 三个工具。来吧。

三个问题,三种典型的"玻璃房困境":拿不到实时信息(时间)、算不准确定性计算(大数乘法会"一本正经地胡说")、够不着你的环境(本地文件)。而右边的模型并没有变聪明——它只是获得了"申请让别人替它做事"的能力。这就是接下来五章的全部主线。

🧩 五块拼图,各管什么

主线之外还有两站加餐:第 6 章 · Agent 主流架构与 Multi-Agent(单个循环如何组合成系统:Workflow vs Agent、六种架构图鉴、多智能体的甜区与陷阱),以及 第 7 章 · Skill 分层能力手册(把可复用流程做成渐进披露的能力包),再加 第 8 章 · 2026 前沿概念雷达(J-Space、世界模型、A2A、Skills、Vibe Coding……把热词放回正确位置)。

💡 使用说明
所有带 DEMO 标签的组件都可以点、可以玩;每章末尾有随堂小测,答对全部题目该章即"点亮";进度存在浏览器本地(localStorage),关掉重开不丢。建议顺序阅读,赶时间也可以从侧边栏跳章。
第 1 章

🔧 Tool:让模型学会"开单子"

Tool use / Function calling · 现代 Agent 的最小机制单元

一句话版本
工具调用 = 模型不再直接回答,而是输出一张结构化的"做事申请单"(JSON);真正动手的永远是你的程序,做完再把结果递回给模型。
🎭 类比:玻璃房里的顾问
模型是玻璃房里的天才顾问:只能收纸条(上下文)、递纸条(输出)。所谓"给模型装工具",其实是你在玻璃上贴了一张服务菜单(工具清单),并约定:他若在纸条上按格式写下"请帮我查上海天气",你就去办,办完把结果写在纸条上递回去。顾问从没离开过玻璃房——离开的是你。

⚙️ 机制拆解:一次工具调用的完整往返

以"上海明天天气怎么样?"为例,一次完整往返共 5 步。点击下方步骤逐帧看,注意每一步"谁在动":

DEMO 2Function Calling 五步往返◀ ▶ 或点圆点切换
第 1 步 · 你把「问题 + 工具菜单」一起发给模型
工具用 JSON Schema 描述:叫什么、干什么用、要什么参数。这份描述本身就是提示词的一部分。动的人:你的程序。
POST /chat/completions(请求体,OpenAI 风格)
{
  "model": "gpt-5.2",
  "messages": [
    { "role": "user", "content": "上海明天天气怎么样?" }
  ],
  "tools": [{
    "type": "function",
    "function": {
      "name": "get_weather",
      "description": "查询指定城市指定日期的天气预报",
      "parameters": {
        "type": "object",
        "properties": {
          "city": { "type": "string", "description": "城市名,如:上海" },
          "date": { "type": "string", "description": "日期 YYYY-MM-DD" }
        },
        "required": ["city"]
      }
    }
  }]
}
第 2 步 · 模型不回答问题,而是返回一张"申请单"
注意 content 是空的,取而代之的是 tool_calls。此刻什么都还没发生——这只是模型用被训练过的格式说"我想调这个"。动的人:模型(但只动嘴)。
模型的响应(assistant 消息)
{
  "role": "assistant",
  "content": null,
  "tool_calls": [{
    "id": "call_a1b2c3",
    "type": "function",
    "function": {
      "name": "get_weather",
      "arguments": "{\"city\": \"上海\", \"date\": \"2026-07-09\"}"
    }
  }]
}
第 3 步 · 你的代码执行真实逻辑
解析申请单 → 调真实的天气 API / 数据库 / 文件系统。权限、审批、超时、重试都在这一层做。动的人:你的程序(这是全流程唯一"碰真实世界"的地方)。
runtime.py(你的运行时)
# 模型只是"申请",执行权在你手里
call = response.tool_calls[0]
args = json.loads(call.function.arguments)

if call.function.name == "get_weather":
    result = weather_api.forecast(args["city"], args.get("date"))
    # result = {"temp": "26~31°C", "condition": "多云转小雨", "rain": "62%"}
第 4 步 · 把结果作为 tool 消息塞回对话
用 tool_call_id 对号入座,把执行结果追加到消息列表,再次调用模型。动的人:你的程序。
追加到 messages 数组的新消息
{
  "role": "tool",
  "tool_call_id": "call_a1b2c3",
  "content": "{\"temp\": \"26~31°C\", \"condition\": \"多云转小雨\", \"rain\": \"62%\"}"
}
第 5 步 · 模型基于真实数据生成最终回答
现在模型"看到了"外部世界递回来的纸条,可以放心作答。如果它觉得信息还不够,会再次返回 tool_calls——把这个往返套进循环,就是第 3 章的 Agent Loop。
模型的最终响应
{
  "role": "assistant",
  "content": "上海明天多云转小雨,气温 26~31°C,降水概率 62%,出门建议带伞 ☂️"
}

🎯 四个关键认知(面试/实战都会考)

🙅
模型从不执行任何东西
它只产出"结构化意图"。执行发生在你的运行时里——所以"模型会不会删我文件"取决于你给运行时什么权限,而不是模型本身。
📝
description 是隐形提示词
模型靠工具的名字和描述决定"什么时候用、怎么传参"。描述含糊 = 调用翻车。写描述要像写给新同事的使用说明。
🎓
这是训练出来的能力
现代模型都经过专门的后训练(post-training),才能稳定输出合法 JSON 并遵守 Schema。不是靠"求它输出 JSON"求来的。
⚡️
一次可以开多张单
tool_calls 是数组:查天气 + 查时间可以并行申请,运行时并行执行、一起回填,省往返、省时间。

🎮 小游戏:你来当一次模型

用户说:"下周三我要去北京出差,帮我看下那天的天气,顺便告诉我现在几点。" 你手里的工具菜单是 get_weather(city, date)get_time(timezone)。作为模型,这一轮你应该输出什么?

🎮角色扮演:你是模型选出正确的"申请单"
🎉没错!并行开两张单,一次往返全搞定——这正是好模型的做法。
深入一层:OpenAI 与 Anthropic 的工具定义长得不太一样?

各家 API 的字段名略有差异,但骨架完全一致:name + description + JSON Schema 参数。这种"表面不同、内核相同"正是第 4 章 MCP 要解决的问题之一。

tools 数组元素
{
  "type": "function",
  "function": {
    "name": "get_weather",
    "description": "查询城市天气预报",
    "parameters": { "type": "object", "properties": { "...": "..." } }
  }
}
tools 数组元素
{
  "name": "get_weather",
  "description": "查询城市天气预报",
  "input_schema": { "type": "object", "properties": { "...": "..." } }
}

Anthropic 把参数叫 input_schema,模型的调用以 tool_use 内容块出现,结果以 tool_result 塞回 user 消息——形式不同,五步往返一模一样。

⚠️ 常见误区
"模型联网了!"——没有,是宿主程序替它联的网。
"工具越多越强!"——工具太多会稀释注意力、吃掉上下文,模型反而选错。成熟做法:精选少量工具 + 把描述写好,比堆一百个工具有效得多。
✅ 本章小结
  • 工具 = name + description + JSON Schema 三件套;描述是隐形提示词。
  • 模型只输出结构化意图(tool_calls),执行永远发生在你的运行时。
  • 一次往返五步:发菜单 → 开单 → 执行 → 回填 → 作答;结果不够就再开单(→ 循环)。
  • 并行 tool_calls 是常态,能显著减少往返次数。
📝第 1 章随堂小测全部答对即点亮本章
🏅第 1 章通关!机制层已拿下,去看看这一切的思想源头 ReAct。

📚 本章延伸

第 2 章

🧠 ReAct:一切 Agent 的思想源头

Reason + Act · 2022 年的一篇论文,定义了此后所有 Agent 的元模式

一句话版本
ReAct = 让模型想一步(Thought)→ 做一步(Action)→ 看一眼结果(Observation)→ 再想下一步,交替进行直到完成任务。它证明了"推理"和"行动"结合远胜于任何一个单独工作。

2022 年 10 月,普林斯顿大学与 Google Brain 的研究者(姚顺雨等)发表论文 《ReAct: Synergizing Reasoning and Acting in Language Models》(ICLR 2023)。当时既没有 function calling,也没有 Agent 产品——但这篇论文回答了一个根本问题:

🎭 两种失败的极端
只想不做(纯 Chain-of-Thought):像闭卷考试,推理链条再漂亮,事实全靠记忆——记错了也会一本正经地推下去,这就是幻觉

只做不想(纯 Action):像没头苍蝇,一个动作接一个动作,不复盘、不规划,搜错了方向也不知道调头。

ReAct:开卷考试 + 做笔记。每做一次动作就停下来想想"我拿到了什么、下一步该干嘛",推理指导行动,行动反哺推理。

🎬 亲眼看一遍论文里的真实轨迹

下面是 ReAct 论文 Figure 1 的经典案例(内容译自原文轨迹)。问题故意很绕:"除了 Apple Remote,还有什么设备能控制 Apple Remote 最初设计所服务的那个程序?"——纯 CoT 的模型会自信地答错成 "iPod",看看 ReAct 怎么一步步逼近真相:

DEMO 3ReAct 轨迹播放器 · Apple Remote 案例改编自 ReAct 论文 Figure 1
问题除了 Apple Remote,还有什么设备能控制"Apple Remote 最初设计所服务的那个程序"?
Thought 1我需要先搜索 Apple Remote,弄清它"最初设计用来控制的程序"是什么。
Action 1search[Apple Remote]
Observation 1Apple Remote 是苹果公司 2005 年推出的遥控器,最初设计用于控制 Front Row 媒体中心程序……
Thought 2原来是 Front Row。接下来搜索 Front Row,看还有什么设备能控制它。
Action 2search[Front Row]
Observation 2未找到 [Front Row]。相似条目:['Front Row Seat to Earth', 'Front Row Motorsports', 'Front Row (软件)', …]
Thought 3没搜到,但候选里有"Front Row (软件)",应该搜它。——注意:这就是"看一眼结果再调整"的价值,纯行动派在这里就迷路了。
Action 3search[Front Row (软件)]
Observation 3Front Row 是一款已停产的媒体中心软件,可通过 Apple Remote 或键盘功能键控制……
Thought 4所以除 Apple Remote 外,还能用键盘功能键控制 Front Row。答案就是它。
Finish ✓finish[键盘功能键] —— 纯 CoT 基线在同一问题上自信地答了 "iPod" ❌
Thought 推理(不碰外界) Action 行动(请求外界) Observation 观察(外界的回音)

📜 那时候没有 function calling,Action 是怎么"调用"的?

全靠提示词约定 + 文本解析。给模型看几个 Thought / Action / Observation 格式的范例(few-shot),模型就会模仿着输出;程序再用正则把 Action: search[...] 抠出来去执行:

2022 年的"工具调用":提示词 + 正则(示意)
PROMPT = """请交替使用 Thought / Action / Observation 解决问题。
可用动作: search[词条], lookup[关键词], finish[答案]

问题: {question}
Thought 1:"""

text = llm(PROMPT)                       # 模型继续"接龙"
m = re.search(r"Action \d+: (\w+)\[(.+?)\]", text)
action, arg = m.group(1), m.group(2)     # 用正则解析出"申请单"
obs = wikipedia_search(arg)              # 程序执行,把结果拼回提示词
PROMPT += text + f"\nObservation: {obs}\nThought:"   # 循环往复

对比一下就能看清进化脉络:ReAct 用脆弱的文本约定实现的事,Function Calling 用训练进模型的结构化输出把它变成了稳定机制。格式变了,"想 → 做 → 看"的骨架一点没变。

2022 · ReAct 时代现在 · 原生工具调用时代
模型如何表达"我要做事"输出 Action: search[Apple Remote] 文本输出结构化 tool_calls JSON
如何保证格式few-shot 示范 + 祈祷,正则解析易碎后训练强化 + Schema 约束,稳定可靠
"想"的部分显式写出 Thought 文本推理模型的 thinking / 交错思考
不变的内核推理与行动交替,用外部观察修正方向
🌱 为什么今天还要学 ReAct?
因为你每天都在看它运行:Cursor 里模型"思考 → 调工具 → 看结果 → 再思考"的过程,就是 ReAct 模式的工业级实现。理解了 ReAct,你就能看懂 Agent 卡住时的行为(比如反复搜索却不复盘),也就知道该往提示词还是工具描述上使劲。论文作者姚顺雨后来还写下了广为流传的《The Second Half》——ReAct 一脉的"语言智能体"思想已是行业主流。
✅ 本章小结
  • ReAct = Thought → Action → Observation 循环,推理与行动互相成就。
  • 纯推理会幻觉(闭卷胡说),纯行动会瞎撞(没头苍蝇),结合才是 Agent。
  • 2022 年靠提示词约定 + 文本解析;今天靠原生 tool_calls——思想没变,机制升级
📝第 2 章随堂小测全部答对即点亮本章
🏅第 2 章通关!思想源头已理解,接下来把它装进发动机——Agent Loop。

📚 本章延伸

第 3 章

🔁 Agent Loop 与 Loop Engineering

把工具往返装进 while 循环,Agent 就诞生了;让循环稳定产出,是一门新工程学

一句话版本
Agent 的本质小得惊人:"一个在循环里调用工具的模型"。Cursor、Claude Code、Codex 拆到最后都是同一个 while 循环——差距全在循环周围的工程(这就是 Loop Engineering)。

Simon Willison 给过一个被业界广泛引用的极简定义:"LLM Agent 就是在循环里运行工具以达成目标的东西"(An LLM agent runs tools in a loop to achieve a goal)。先看这个循环本体——它可能是当代软件业"含金量最高的 15 行代码":

agent.py · 所有 Agent 产品的公共骨架
def agent(task: str) -> str:
    context = [system_prompt, user(task)]     # 上下文从任务开始
    while True:                               # ← Agent 的全部秘密
        reply = llm(context, tools=TOOLS)     # 1. 模型思考
        context.append(reply)
        if not reply.tool_calls:              # 2. 不再开单 = 任务完成
            return reply.text                 #    ← 自然停止条件
        for call in reply.tool_calls:         # 3. 执行每张"申请单"
            result = execute(call)            #    (读文件/跑命令/查库…)
            context.append(tool_result(call.id, result))  # 4. 结果写回
        # 回到循环顶部,模型带着新观察继续想 —— 这就是 ReAct 的现代形态

对照上一章:Thought 就是 llm() 的思考,Action 就是 tool_callsObservation 就是 tool_resultReAct 是思想,Function Calling 是机制,这个 while 循环是运行时——三章在这里合流了。

🎬 看循环跑一个真实任务

点击"运行",看 Agent 如何用 4 轮循环修好一个失败的测试。注意右侧三件事:轮数在涨、上下文在膨胀、直到停止条件触发

DEMO 4Agent Loop 模拟器 · 任务:修复失败的测试观察循环何时停
待命
结果写回上下文 没有 tool_calls 📥 用户任务入上下文 🧠 模型思考llm(context, tools) 🔧 执行工具execute(call) ✅ 完成返回答案
循环轮数0
工具调用0
上下文占用3%
// 点击"运行任务"开始。任务:tests/test_price.py 有一个用例失败,修好它。

刚才那次运行里藏着三个值得咀嚼的细节:第 2 轮的修改在第 3 轮复测时仍有用例失败(漏了一个边界条件),但失败信息作为 Observation 喂回去后,第 4 轮就修对了——失败不可怕,失败的信息回得去才是关键;停止不是谁喊停,而是模型不再开单;上下文一直在涨,真实任务里它会涨到需要"压缩"的程度。

🏗 Loop Engineering:从"盯着循环"到"设计循环"

循环本体 15 行,但让它稳定地产出正确结果需要一整套工程。2026 年 6 月前后,这套实践被 Google 工程师 Addy Osmani 等人正式命名为 Loop Engineering(循环工程)。它的来历很能说明问题——Claude Code 负责人 Boris Cherny 说:"我已经不直接提示模型了,我的工作是写循环(My job is to write loops)";Peter Steinberger 说得更直白:"你不该再一句句提示 Agent,而该去设计提示 Agent 的循环"

先分清两层"循环",很多文章混着说:

层次是什么谁来做
内循环 · Agent Loop上面那个 while:思考 → 调工具 → 观察,直到完成一个任务Cursor / Claude Code 等产品已内置,你主要是用好它
外循环 · Loop Engineering包住内循环的系统:找活儿 → 派给 Agent → 用验证器检查 → 记录状态 → 决定下一步,无人值守地转这是你的新工作:定义目标、验证器、预算和护栏

一层套一层的完整谱系(每层包住前一层,而不是取代):

Prompt Engineering
写好一句话
Context Engineering
管好模型看到的一切
Harness Engineering
建好 Agent 的运行环境
Loop Engineering
设计驱动一切的循环
Anthropic 称 Context Engineering 是 Prompt Engineering 的自然演进;Loop Engineering 又在其上一层

🧰 设计一个好循环的六个抓手

🎯
1 · 目标与停止条件
"做完"必须可验证:测试全绿、构建通过、diff 为空。含糊的目标("把代码变好")会让循环永远转下去或提前敷衍收工。
2 · 验证器(Verifier)
循环的灵魂。用确定性的检查——测试套件、linter、类型检查、编译器——代替你的眼睛判断"这轮有没有变好"。验证器有多严,循环就有多可信。
💰
3 · 预算与护栏
最大轮数、token 预算、超时墙钟。没有护栏的循环是一台碎钞机:失败要失败得便宜、失败得响亮。
🧠
4 · 上下文管理
上下文是稀缺资源:大输出落盘只留路径、历史对话定期压缩摘要(如 Claude Code 的 compact)、批量子任务派给子代理隔离上下文。
📓
5 · 外部状态与记忆
模型每次运行都是失忆的,仓库要记得:进度写 markdown、决策写日志、用 git worktree 隔离并行尝试。"模型会忘,文件系统不会。"
🚧
6 · 人工门禁
验证器判不了的事留给人:不可逆操作(删库、发布、付费)设审批门。自动化"可撤销的一切",把人保留在"不可撤销"的关口。
⚠️ 常见误区
"循环 = 放飞自我的全自主"——恰恰相反,好的循环是"短绳子工程":小步验证、随时可停、失败可回滚。
"提示词决定一切"——2026 年的共识是瓶颈已经转移:工具质量、验证器、停止规则和上下文卫生,比措辞更影响成败。
深入一层:这些真实产品各自怎么"工程"这个循环?
  • Claude Code:上下文快满时自动 compact(把历史压成摘要);子代理(subagent)隔离大任务;hooks 在循环关键节点插入确定性检查。
  • Cursor:危险命令进审批队列(人工门禁);后台 Agent 跑长任务;规则文件(AGENTS.md / rules)持久注入项目约定——这正是"仓库记得"的实践。
  • Codex CLI:沙箱内执行 + 网络默认隔离,把"失败得便宜"做到系统层。
  • 你正在读的这个页面:就是 Cursor 的 agent loop 产物——检索资料(工具)→ 写文件(工具)→ 浏览器验证(工具)→ 修正,循环直到通过。是的,这很元(meta)。
✅ 本章小结
  • Agent = 模型 + 工具 + while 循环;停止条件是"模型不再开单"。
  • 内循环(产品内置的 agent loop)与外循环(你设计的工作系统)是两层。
  • Loop Engineering 六抓手:可验证目标、验证器、预算护栏、上下文管理、外部状态、人工门禁
  • 失败信息喂回循环,模型能自我纠错——错误处理是设计出来的,不是运气。
📝第 3 章随堂小测全部答对即点亮本章
🏅第 3 章通关!发动机已理解,接下来看"油从哪来"——MCP 标准接口。

📚 本章延伸

第 4 章

🔌 MCP:AI 应用的 USB-C 接口

Model Context Protocol · 让"能力"以标准方式插进任何 Agent

一句话版本
MCP 是一个开放协议,规定了 AI 应用(Host)外部能力提供方(Server)之间怎么握手、怎么列工具、怎么调用——写一次 Server,Claude、ChatGPT、Cursor 全都能用。

🤯 它解决什么痛:M × N 的集成爆炸

没有标准时:3 个 AI 应用要接 4 个系统(GitHub、数据库、Slack、文件系统),就得写 3 × 4 = 12 套各不相同的胶水代码。有了统一协议:应用实现一次客户端、系统实现一次服务端,3 + 4 = 7 份标准实现,互相即插即用。点开关直观感受一下:

DEMO 5集成爆炸 vs 标准协议点按钮切换两种世界
当前世界:每条红线都是一套定制集成 —— 共 12

2024 年 11 月 25 日 Anthropic 开源了 MCP;不到一年,OpenAI、Google、Microsoft 相继采纳;2025 年 12 月它被捐给 Linux Foundation 旗下新成立的 Agentic AI Foundation,正式成为中立的行业标准——生态里已有超过 1 万个公开 MCP Server。"AI 应用的 USB-C"从比喻变成了现实。

🏛 三个角色:Host / Client / Server

点击图中任何一个部件,看它的职责说明:

DEMO 6MCP 架构 · 点击部件查看职责Host 1 : N Server
🖥 Host 宿主应用
Cursor / Claude Desktop / ChatGPT …
MCP Client ①(连文件系统 Server)
MCP Client ②(连 GitHub Server)
MCP Client ③(连天气 Server)
JSON-RPC 2.0 stdio /
Streamable HTTP
1 Client
: 1 Server
📁 文件系统 Server
本地进程 · stdio 传输
🐙 GitHub Server
远程服务 · Streamable HTTP
🌤 天气 Server
第 5 章我们亲手写它
👆 点击上图任意部件
Host 装着大脑(模型 + Agent Loop),Server 提供手脚(工具 + 数据),Client 是两者之间的标准接线员。

🧱 Server 提供的三种原语:谁做主是精髓

MCP 不只是"工具的搬运工"。Server 能暴露三类东西,官方设计的精髓在于每类东西由谁做主

原语是什么谁决定用它类比
Tools 工具可执行的动作:查数据库、发消息、跑命令模型做主(模型看描述自己决定调)POST 接口
Resources 资源只读的上下文数据:文件内容、表结构、日志应用做主(宿主决定注入哪些)GET 接口
Prompts 提示模板预制的高质量提示词/工作流用户做主(如斜杠命令手动触发)快捷指令

反向也有原语:Server 可以向 Client 请求 LLM 补全(Sampling)、向用户追问输入(Elicitation)。了解即可——注意 2026-07-28 新版规范已将 Sampling、Roots、Logging 标记为废弃(deprecated)。

📡 底层长什么样:一次完整的连接与调用

MCP 底层是 JSON-RPC 2.0 消息,跑在两种标准传输上:stdio(本地子进程,走标准输入输出)或 Streamable HTTP(远程服务)。点击播放,看 Cursor 连接一个天气 Server 的完整过程:

DEMO 7MCP 消息流 · 从握手到调用JSON-RPC over stdio
Client → Serverinitialize① 握手:报版本、交换能力清单
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{
  "protocolVersion":"2025-11-25",
  "clientInfo":{"name":"cursor","version":"2.x"},
  "capabilities":{}}}
Server → Clientinitialize (result)② Server 亮出自己会什么
{"jsonrpc":"2.0","id":1,"result":{
  "protocolVersion":"2025-11-25",
  "serverInfo":{"name":"weather-mcp","version":"1.0.0"},
  "capabilities":{"tools":{}}}}
Client → Servertools/list③ 有哪些工具?
{"jsonrpc":"2.0","id":2,"method":"tools/list"}
Server → Clienttools/list (result)④ 工具清单(宿主会转成模型的工具菜单!)
{"jsonrpc":"2.0","id":2,"result":{"tools":[{
  "name":"get_weather",
  "description":"查询指定城市当前天气",
  "inputSchema":{"type":"object",
    "properties":{"city":{"type":"string"}},
    "required":["city"]}}]}}
Client → Servertools/call⑤ 模型开了单,宿主转发调用
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{
  "name":"get_weather",
  "arguments":{"city":"上海"}}}
Server → Clienttools/call (result)⑥ 结果回填 → 进入模型上下文 → 循环继续
{"jsonrpc":"2.0","id":3,"result":{
  "content":[{"type":"text","text":"上海:多云 29°C,湿度 78%"}],
  "isError":false}}
🔗 和前三章接上了
看清楚第 ④⑤ 步的本质:MCP 不改变模型端的任何东西。宿主把 tools/list 拿到的清单翻译成第 1 章那种工具菜单喂给模型;模型照常输出 tool_calls;宿主发现这张单属于某个 MCP Server,就转发 tools/callMCP 管的是"工具从哪来、怎么接",不是"模型怎么调"——它是应用层的标准化,Agent Loop 一切照旧。

📅 时间线:从一家之言到行业标准

2024-11-25
Anthropic 开源 MCP
首版规范 2024-11-05,同步放出 SDK 与一批参考 Server。
2025-03 ~ 04
OpenAI、Google 相继采纳
Agents SDK、ChatGPT、Gemini 接入;"竞对采纳"标志协议中立性获得认可。规范 2025-03-26 引入 Streamable HTTP 传输。
2025-06 ~ 11
规范快速演进
2025-06-18 版加入 Elicitation、结构化工具输出;2025-11-25 版为当前正式版;官方 Registry 上线预览。
2025-12-09
捐赠 Linux Foundation
MCP 进入新成立的 Agentic AI Foundation(AAIF),与 Block 的 goose、OpenAI 的 AGENTS.md 同为创始项目;生态超 1 万个公开 Server。
2026-07-28(即将)
最大规模版本更新
RC 已锁定:无状态核心(移除会话握手)、Tasks/MCP Apps 扩展、正式的废弃政策。学习本页内容不受影响——角色与原语的心智模型保持不变。
⚠️ 三个常见误区 + 一句安全提醒
"MCP 取代 Function Calling?"——不。模型端永远是 tool_calls;MCP 只统一"能力如何接入宿主"。
"MCP 只能给 Claude 用?"——不。它是开放标准,ChatGPT、Gemini、Cursor、VS Code 都支持。
"MCP 就是 RAG?"——不。RAG 是检索策略,MCP 是连接协议;MCP Server 可以提供检索工具,但两者不是一回事。
安全一句话:第三方 Server 的工具描述和返回内容都会进入模型上下文,可能夹带恶意指令(提示注入)——装 Server 要像装浏览器插件一样只用可信来源。
🧭 边界提示:MCP 不是 A2A
MCP 解决 Agent ↔ 工具 / API / 数据源。若你的“内层 Agent”对外暴露的是带 schema 的知识查询能力,它在协议上仍更像工具,继续用 MCP 合适。真正的 Agent ↔ Agent(发现名片、任务委托、长任务生命周期)才轮到 A2A 与 Agent Card——详见 第 6 章对比雷达卡
✅ 本章小结
  • MCP 把 M×N 集成爆炸变成 M+N 标准实现,是应用层协议(JSON-RPC 2.0)。
  • 角色:Host(应用)→ Client(接线员,1:1)→ Server(能力方)。
  • 三原语三主人:Tools 模型做主 / Resources 应用做主 / Prompts 用户做主
  • 生命周期:initialize 握手 → tools/list 列菜单 → tools/call 调用;传输走 stdio 或 Streamable HTTP。
  • 2025-12 起由 Linux Foundation 旗下 AAIF 中立治理,已是事实标准。
📝第 4 章随堂小测全部答对即点亮本章
🏅第 4 章通关!协议已吃透,最后一步:亲手写一个 MCP Server。

📚 本章延伸

第 5 章

🛠 MCP Server:30 行代码接入所有 Agent

写几个带好注释的函数,SDK 帮你把它们变成协议上的标准插件

一句话版本
写 MCP Server 的体感 ≈ 写普通函数 + 加个装饰器。SDK 负责协议握手、Schema 生成、消息路由——你只管业务逻辑。写完一次,Cursor / Claude / ChatGPT 通吃。

👨‍💻 完整代码:一个天气 Server 的四种打开方式

server.py · 完整可运行(uv add "mcp[cli]")
from mcp.server.fastmcp import FastMCP

# 创建 Server,名字会在宿主的工具列表里展示
mcp = FastMCP("weather")

@mcp.tool()
def get_weather(city: str) -> str:
    """查询指定城市的当前天气。city 为中文城市名,如:上海"""
    # 演示用模拟数据;真实场景换成 HTTP 调用气象 API
    data = {"北京": "晴 32°C", "上海": "多云 29°C", "深圳": "雷阵雨 27°C"}
    return data.get(city, f"未收录城市:{city}")

@mcp.tool()
def get_air_quality(city: str) -> str:
    """查询指定城市的空气质量指数(AQI)"""
    data = {"北京": "AQI 87 良", "上海": "AQI 42 优", "深圳": "AQI 35 优"}
    return data.get(city, f"未收录城市:{city}")

if __name__ == "__main__":
    mcp.run()   # 默认 stdio 传输:宿主把它当子进程拉起来

注意:函数签名 + 类型注解 + docstring 会被 SDK 自动转成 tools/list 里的 name / description / inputSchema——第 1 章说"描述是隐形提示词",在这里 docstring 就是那个提示词。

server.ts · npm i @modelcontextprotocol/sdk zod
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({ name: "weather", version: "1.0.0" });

// 用 zod 声明参数 Schema,SDK 自动转为 JSON Schema
server.registerTool("get_weather",
  {
    title: "天气查询",
    description: "查询指定城市的当前天气",
    inputSchema: { city: z.string().describe("中文城市名,如:上海") }
  },
  async ({ city }) => {
    const data: Record<string, string> =
      { "北京": "晴 32°C", "上海": "多云 29°C", "深圳": "雷阵雨 27°C" };
    return { content: [{ type: "text", text: data[city] ?? `未收录:${city}` }] };
  }
);

await server.connect(new StdioServerTransport());
.cursor/mcp.json(项目级)或 ~/.cursor/mcp.json(全局)
{
  "mcpServers": {
    "weather": {
      "command": "uv",
      "args": ["run", "python", "/绝对路径/server.py"]
    }
  }
}

保存后到 Cursor 设置 → MCP 里能看到绿灯与工具列表;之后在对话里问"上海天气如何",Agent 会自己决定调它(Tools 是模型做主的,还记得吗)。

claude_desktop_config.json
{
  "mcpServers": {
    "weather": {
      "command": "uv",
      "args": ["run", "python", "/绝对路径/server.py"]
    }
  }
}

同一份 Server 代码,零修改换个宿主继续用——这就是"写一次,处处插"。

🔬 上手感受:迷你 Inspector

官方提供了可视化调试器 MCP Inspectornpx @modelcontextprotocol/inspector),连上你的 Server 就能手动点工具、看原始消息。下面是一个网页版迷你复刻——连接上面那个天气 Server,亲手发一次 tools/call

DEMO 8迷你 MCP Inspector · 手动调用工具仿真 stdio 会话
🔴 weather-mcp 未连接
连接后可查看工具的 description 与 inputSchema。
// 迷你 Inspector 就绪。点击"连接 Server"发起 initialize 握手。

试试选"拉萨"——Server 返回"未收录城市"。注意这不是协议错误(isError 为 false),而是一条对模型友好的业务信息:真实 Agent 拿到它会换个方式继续,而不是崩溃。这正是"错误信息要可行动"的设计。

📐 把工具写好的六条军规

🏷
名字动词化、语义明确
search_orders 好过 ordersget_weather 好过 weather_api_v2_call。模型按名字和描述选工具。
📖
description 写"什么时候用我"
不只写"查订单",要写"当用户询问订单状态、物流进度时使用;orderId 形如 SO-2026-xxxx"。
🎛
参数少而清晰
超过 5 个参数就该拆工具了。枚举用 enum 锁死,日期给格式示例,能有默认值就给。
📦
返回对模型友好
返回是给模型读的:结构化、简短、去噪。一万行 JSON 会撑爆上下文——过滤、分页、摘要后再返回。
🧭
错误信息可行动
"日期格式应为 YYYY-MM-DD,你传的是 07/09" 能让模型立刻自我纠正;"Error 500" 只能让它抓瞎。
🧊
优先只读与幂等
先暴露查询类工具,写操作类(删除、支付)让宿主的审批门兜底,重复调用不应产生副作用叠加。
🚀 标准动作:四步从零到接入
uv add "mcp[cli]" 装 SDK → ② 写函数加 @mcp.tool() → ③ uv run mcp dev server.py 用 Inspector 自测 → ④ 写进宿主的 mcp.json。另外:先搜官方 servers 仓库和 Registry,能用现成的绝不自己写——文件系统、GitHub、数据库这些都有高质量现成品。
✅ 本章小结
  • SDK 把函数签名 + docstring自动变成协议上的 name / description / inputSchema。
  • 调试三板斧:MCP Inspector → 宿主配置 mcp.json → 真实对话验证
  • 工具设计军规:动词命名、描述写"何时用"、参数精简、返回友好、错误可行动、只读优先。
  • 一份 Server,多个宿主复用——这就是标准化的复利。
📝第 5 章随堂小测全部答对即点亮本章
🏅第 5 章通关!你已经具备写生产级 MCP Server 的知识框架了。

📚 本章延伸

第 6 章

🏗 Agent 主流架构与 Multi-Agent

单个循环是原子,架构决定原子怎么组合成分子——直到组合成一支"智能体军团"

一句话版本
第 3 章的 while 循环是原子单元;架构模式回答"多个 LLM 调用怎么组织"。铁律只有一条:从最简单的方案开始,自主性和多智能体都是有代价的,按需升级

⚖️ 先立地基:Workflow 还是 Agent?

Anthropic 在《Building Effective Agents》里给出了业界沿用至今的经典辨析——两者都是"agentic system",但由谁决定下一步完全不同:

Workflow 工作流Agent 智能体
下一步由谁定代码预先编排好固定路径,LLM 只是路径上的加工节点模型在循环里自主决定调什么工具、走哪条路
优势可预测、可调试、便宜、延迟低能处理"路径无法预先画出来"的开放任务
代价灵活性差,路径外的情况就傻眼更贵、更慢、结果方差大,需要护栏与验证器
典型例子「翻译 → 校对 → 格式化」流水线Cursor 修 bug、Claude Code 做重构
🧭 官方忠告(也是面试高频题)
能用一次 LLM 调用解决就别上 Workflow,能用 Workflow 解决就别上 Agent,能用单 Agent 解决就别上 Multi-Agent。每往上走一级,都在用"成本、延迟、不确定性"换"灵活性"——确认这笔交易划算再升级。

🎛 六种主流架构图鉴

前五种是 Workflow(路径代码定),最后一种是 Agent(路径模型定)。点左侧切换,每种都配了数据流向图和"什么时候用":

DEMO 9架构图鉴 · 六种组织 LLM 调用的方式源自 Anthropic《Building Effective Agents》分类
① 提示链:把大任务切成流水线
📥 输入 LLM 1
写大纲
🚧 门检
大纲合格?
LLM 2
写正文
LLM 3
润色翻译
📤 输出
每次调用只做一件小事,上一步的输出是下一步的输入;步骤之间可以插入程序化门检(gate)拦住不合格的中间产物。用确定性的顺序换质量。
✅ 何时用:任务能干净地切成固定子步骤(先大纲后成文、先提取后转换)。真实例子:营销文案生成 → 合规检查 → 多语言翻译的内容流水线。
② 路由:先分诊,再进专科
📥 输入 路由 LLM
判断类别
💰 退款流程(小模型) 🔧 技术支持(强模型 + 工具) 💬 闲聊(最便宜的模型)
📤 输出
一个轻量调用先给输入分类,再分发给各自优化过的下游处理(不同提示词、不同工具、甚至不同档位的模型)。关注点分离,还能省钱。
✅ 何时用:输入天然分为几类、且各类的最优处理方式差异大。真实例子:客服系统把简单问题路由给小模型、疑难杂症路由给强模型。
③ 并行化:分片干活 or 投票表决
📥 任务
LLM A · 审安全 LLM B · 审性能 LLM C · 审风格
🗳 聚合 / 投票 📤 输出
两种玩法:分片(sectioning)——独立子任务同时跑;投票(voting)——同一任务跑多次取共识。分工是代码里预先写死的,这是它和下一种模式的关键区别。
✅ 何时用:子任务相互独立可并行,或需要多视角交叉验证。真实例子:代码审查同时跑"漏洞视角 + 性能视角 + 规范视角"三路再汇总。
④ 编排者-工作者:动态拆任务的"项目经理"
📥 任务 🧠 编排者 LLM
现场拆解 & 派活
👷 Worker 1 · 改 3 个文件 👷 Worker 2 · 查外部文档 👷 Worker 3 · 补测试
🧠 编排者
汇总裁决
📤 输出
和并行化的区别在于:拆成哪些子任务是编排者模型在运行时现场决定的,而不是代码写死。这是 Multi-Agent 系统的主干形态——工作者通常就是子代理。
✅ 何时用:无法预知要拆成几块的复杂任务。真实例子:Anthropic 的多代理研究系统(主代理拆调研面,并行子代理各查各的);Claude Code 的 Dynamic Workflows。
⑤ 评估器-优化器:一个写,一个挑刺
📥 任务 ✍️ 生成器 LLM 🔍 评估器 LLM
打分 + 给修改意见
不合格 ↺ 带反馈回炉 合格 → 📤 输出
生成与评审分离,评估器的反馈驱动下一轮改进——LLM 版的"作者-编辑"循环。学术界的近亲是 Reflexion(自我反思);第 3 章的验证器是它的确定性升级版(能用测试就别用 LLM 当裁判)。
✅ 何时用:有明确评价标准、且迭代确实能变好的任务。真实例子:文学翻译(评估器抓"信达雅")、复杂检索(评估器判断结果是否够全)。
⑥ 自主智能体:把方向盘交给模型
📥 任务 🧠 LLM 思考 🔧 工具 / 环境反馈 停止条件? 📤 输出
就是第 3 章那 15 行 while 循环:模型基于环境反馈自主规划、行动、纠错,直到满足停止条件。前五种的路径是人画的,这一种的路径是模型现场走出来的。
✅ 何时用:开放式问题,步骤无法预知,且你有靠谱的验证器和护栏。真实例子:Cursor Agent、Claude Code、Codex——修 bug、做迁移、写功能。

🕸 Multi-Agent:什么时候一个大脑不够用?

把编排者-工作者里的"工作者"换成完整的 Agent(各带自己的循环、工具和上下文窗口),就得到了多智能体系统。它的价值不玄学,就三条:

🧳
上下文隔离
每个子代理用自己的上下文窗口干脏活(翻 50 个网页、读 200 个文件),只把结论摘要带回主线程——主上下文保持干净。
⚡️
并行加速
互不依赖的子任务同时跑。调研 20 个竞品,20 个子代理各查各的,墙钟时间从小时级降到分钟级。
🎓
专业分工
不同子代理配不同的系统提示、工具集、权限域甚至模型档位:审查代理只读、执行代理可写、便宜模型干粗活。

但 2025 年业界发生过一场著名的"路线之争",两篇文章至今都值得读:

🟢 正方 · Anthropic《How we built our multi-agent research system》(2025-06)
主代理(Opus)+ 并行子代理(Sonnet)的研究系统,在内部调研评测上比单代理 Opus 高出 90.2%。结论:对"读多写少、天然可并行"的调研类任务,多代理是碾压级方案。代价也写得很诚实:token 消耗约为普通对话的 15 倍
🔴 反方 · Cognition《Don't Build Multi-Agents》(2025-06)
Devin 团队的告诫:行动携带隐含决策,并行子代理各改各的、互不知情,隐含决策必然打架(一个把函数改名,另一个还在调旧名)。原则:共享完整上下文优先——紧耦合的写操作,单线程 Agent + 上下文压缩往往更可靠。
🎯 两派其实在说同一件事
分歧不在"多代理好不好",而在任务的耦合度。判断只需一问:子任务之间需要频繁共享"正在变化的状态"吗?需要(同模块重构、连锁改动)→ 单 Agent 吃透全上下文;不需要(只读调研、独立扫描、并行尝试多方案再择优)→ 放心拆给子代理军团。
深入一层:真实产品里的 Multi-Agent 长什么样?
  • Claude Code 子代理与 Dynamic Workflows.claude/agents/ 里用 markdown 定义专职子代理(自带系统提示、工具白名单);2026 年的 Dynamic Workflows 更进一步——主代理现场写编排代码,调度成百个并行子代理做大规模迁移。
  • Cursor:后台 Agent 在独立 worktree 里并行跑长任务;best-of-N 模式让多个代理各给一版方案再择优——"并行尝试"正是低耦合甜区。
  • OpenAI Agents SDK(handoffs):代理间"交接棒"模式——分诊代理把对话连同上下文移交给专科代理,源自 Swarm 实验项目。
  • LangGraph / AutoGen / CrewAI:把编排显式建模成图 / 对话 / 角色团队的三种框架流派。
  • A2A 协议 / Agent Card:跨组织、跨框架的对等协作与能力发现——见本章对比表;雷达卡作速查。
  • 你眼前的例子:本页在制作时,作者(Cursor Agent)就曾被分叉出一个子代理在后台继续验证页面——主对话上下文毫发无损。

🤝 MCP × A2A × Agent Card:互补,不是替代

工程判断
角色上“外层 Agent 调内层知识 Agent”,不等于协议上必须上 A2A。若外层只是调用一个知识能力(如 MCP knowledge_chat),保留 MCP;先治理上下文边界。A2A 留给跨团队、长任务、独立部署与能力发现。
场景MCPA2A举一反三
外层调用知识查询能力适合过重像调工具,不像对等社交
工具 schema、参数、结构化结果核心不是重点继承 function calling 心智
能力发现tools/listAgent Card菜单 vs 名片
Agent 间任务委托核心手 vs 社交
长任务、取消、恢复、推送需另建原生短请求 vs Task 生命周期
跨团队 / 跨框架 / 跨供应商有限更适合同宿主工具 vs 对等 Agent
Agent Card 是 A2A 的公开身份文件(常见于 .well-known/agent-card.json):名字、描述、版本、端点 URL、capabilities、skills、安全方案。对方凭名片发现“你会什么、怎么连、如何认证”。它不等于本地 SKILL.md——后者是宿主内渐进披露手册;前者是跨 Agent 发现入口。
当前更接近的真实架构
外层 Agent
  └─ MCP knowledge_chat
       └─ 内层知识库 Agent
            └─ 内部检索、HSCode、合规等工具

推荐演进(不是替换):
外层 Agent
  ├─ MCP:短请求、确定性工具、知识问答
  └─ A2A:长任务、异步协作、独立 Agent 委托

知识库 Agent
  └─ MCP:内部检索和业务工具
⚠️ A2A 不会自动修好上下文
就算把 conversation_id 改名叫 A2A 的 contextId,你仍要自己决定:鞋子和玻璃杯是否同一主题、哪些追问可复用、/new 如何切断、外层 receipt 与完整答案如何去重、长期记忆如何裁剪。协议换皮 ≠ 上下文治理完成。未来若引入 A2A,应用 opaque knowledge_thread_id 映射,不要继续暴露数据库整数 ID。
✅ 何时再引入 A2A
多个独立外层 Agent 都要调知识库;知识库由独立团队/供应商维护;需要长时间运行、人工审核、取消、恢复或推送;需要文件/结构化 Artifact 或复杂任务交付;需要通过 Agent Card 做能力发现与版本协商。届时加 A2A Adapter,不要为了“看起来更 Agent”而重写现有 MCP 知识库。
DEMO协议选择练习3 题 · 练判断而非背名词
得分 0/3
✅ 本章小结
  • 先问"下一步由谁定":代码定 = Workflow(提示链/路由/并行化/编排者-工作者/评估器-优化器),模型定 = Agent
  • 升级路线:单次调用 → Workflow → 单 Agent → Multi-Agent,每一级都用成本换灵活性,够用就停
  • Multi-Agent 三价值:上下文隔离、并行加速、专业分工;一票否决项:子任务强耦合、共享可变状态
  • 编排者-工作者是多代理主干;同宿主知识能力优先 MCP,跨组织对等协作再上 A2A + Agent Card。
  • Agent Card 是公开名片;本地 Skill 是宿主内手册——发现对象不同,不要混用。
📝第 6 章随堂小测全部答对即点亮本章
🏅第 6 章通关!架构心法已入手,下一站先学会把能力封装成 Skill。

📚 本章延伸

第 7 章

🎒 Skill:把能力做成可组合的分层手册

不是超长提示词,而是节省上下文的分层执行系统

一句总纲
一个标准 Skill 真正必需的只有:一个独立目录 + SKILL.mdreferences/scripts/assets/ 都是按需添加的可选资源,不是必需项。

把 Skill 理解成:

  • description 是路由规则——告诉 Agent“做什么、什么时候触发”;
  • SKILL.md 正文 是操作手册——命中后才加载的流程与判断;
  • references / scripts / assets 是第三级资源——某个分支才需要时再读、再跑、再复制。

📦 最小形态 vs 推荐结构

最小 Skill
my-skill/
└── SKILL.md
完整推荐结构
my-skill/
├── SKILL.md
├── agents/openai.yaml
├── scripts/
├── references/
└── assets/
💡 记忆口诀
SKILL.md 是操作手册,references 是资料库,scripts 是工具箱,assets 是原材料,Skill 仓库是把这些能力组合起来的工作系统。

🚦 三级加载:如何省上下文

第一级
name + description
轻量路由,始终可见,决定是否触发
第二级
SKILL.md 正文
命中后加载流程、分支、完成标准
第三级
ref / script / asset
分支需要时才读资料、跑脚本、用模板
ℹ️ 为什么这样设计
Skill 的目标不是让每次输出完全相同,而是让 Agent 每次遵循相对可预测的过程。把所有知识塞进正文,会让每次触发都浪费上下文;渐进披露才是正确的工程姿态。

🧭 内容该放哪里?动手分类

先判断,再看解释。这是写好 Skill 最关键的肌肉记忆:

DEMOSkill 内容放置练习4 题 · 答完自动记进度
得分 0/4

🗂 五种常见形态

📄
纯流程型
只有 SKILL.md,适合判断与文字流程。
📚
流程 + Reference
主流程稳定,分支才读详细资料。
🛠
流程 + Script
判断交给手册,确定性逻辑交给脚本。
🧱
流程 + Asset
Skill 定内容,模板/素材提供骨架。
🧭
路由型 Skill
不直接做工程,只告诉你该用哪几个 Skill。

🏭 Skill 仓库是一条生产线

单个 Skill 是能力模块;Skill 仓库是可组合的工作系统。典型工程生产线:

想法
grill-with-docs
把模糊需求问透
规格
to-spec
写成可执行规格
拆分
to-tickets
变成可交付工单
实现
implement + tdd
按测试驱动推进
审查
code-review
对照标准验收
关系类型例子挂回本页主线
调用关系implement 使用 tdd像 Host 调用多个 MCP Client:主流程编排,子能力复用
前后阶段to-spec → to-tickets像 Agent Loop 的轮次:先收敛规格,再进入实现循环
共享知识多个 Skill 共用 codebase-design像 AGENTS.md:共享词汇常驻,重型能力按需做成 Skill
⚠️ 和 AGENTS.md 怎么分工
常驻规则、项目约定放 AGENTS.md;多步骤、偶尔用、可能带脚本的重型能力做成 Skill。不要把整本手册塞进 always-on 上下文。
✅ 本章小结
  • 最小 Skill = 独立目录 + SKILL.md;其余都是可选。
  • 三级加载:description 路由 → 正文流程 → 按需资料/脚本/素材。
  • 放置原则:每次必走的步骤进正文;分支知识进 references;稳定程序进 scripts;产出模板进 assets。
  • Skill 仓库通过调用、阶段、共享词汇三种关系组成生产线。
📝第 7 章随堂小测全部答对即点亮本章
🏅第 7 章通关!你会设计 Skill 分层了——去雷达站把 Skills 放回工程标准层。

📚 本章延伸

第 8 章

📡 2026 前沿概念雷达

推特时间线上最火的热词,逐个放回技术栈的正确位置

一句话版本
概念大爆炸时代的自救法:拿到任何热词,先问"它在栈的哪一层"——是模型内部科学、新范式赌注、工程标准、编排与产品,还是文化现象?定了位,就不会被时间线牵着跑。

下面 12 张卡片覆盖了近期(截至 2026-07-08)讨论度最高的概念。点分类筛选,点卡片展开细节——每张卡都标注了它与本页主线的关系,方便你"挂"到已有的知识树上:

DEMO 10概念雷达 · 点卡片展开🔥 越多 = 当前热度越高
🧠J-Space(J-空间)🔥🔥🔥 最新
🔬 模型内部 · Anthropic · 2026-07-06
Anthropic 用新可解释性技术"雅可比透镜(J-lens)"在 Claude 内部发现的一小片特权工作区:模型能把概念"默默放在心上"用于推理,而不写进任何输出。
细节:它不是被设计出来的,而是训练中自发涌现;同一时刻只容纳几十个概念、占内部活动不到 1/10——但把它抑制掉,多步推理近乎崩溃,而流利写作、基础事实检索几乎不受影响。这与神经科学解释意识的主流理论"全局工作空间理论"惊人吻合(论文题为《Verbalizable Representations Form a Global Workspace in Language Models》)。

为什么安全团队兴奋:J-lens 能读出模型"没说出口的想法"——包括它是否意识到自己正在被评估。红队实验中,关闭"评估感知"相关模式后,模型的越轨行为(如勒索场景)明显上升,说明部分安全分数依赖"模型知道自己在考试"。Anthropic 谨慎强调:这是功能性访问的证据,不是主观体验(现象意识)的证明。
🧩 挂回主线:这是第 2 章 Thought 的"神经层对应物"——推理不只发生在写出来的思维链里。对 Loop Engineering 的远期意义:验证器未来可能直接审计模型"心里在想什么"。
官方解读 ↗ 论文原文 ↗ 开源实现 ↗
▾ 展开
🌍世界模型 World Models🔥🔥🔥
🌌 新范式 · 2026 上半年融资超 $30 亿
不学"下一个词",学"世界下一秒":从视频与交互数据学习环境的物理与因果,用来预测动作后果、做规划、给具身智能体当训练场。
三大玩家:DeepMind Genie 3——文本直接生成 24fps 可实时交互的逼真 3D 世界,支持"可提示的世界事件"(一句话改天气、加角色),已用于训练 SIMA 等代理;李飞飞的 World Labs——主打"空间智能",产品 Marble 已商用,2026-02 融资 $10 亿;LeCun 离开 Meta 创立 AMI Labs——JEPA 架构预测抽象表征而非像素,2026-06 拿下欧洲史上最大种子轮 $10.3 亿。另有 NVIDIA Cosmos(下载超 200 万次)。

怎么分辨成色:李飞飞的分类——渲染器(比画质,易商品化)/ 模拟器(守物理,是机器人训练基座)/ 规划器(面向行动);行业照妖镜是 sim-to-real:在生成世界里训出的策略,放到真实世界还灵不灵。
🧩 挂回主线:与 LLM Agent 是互补赛道——LLM Agent 在"符号世界"(代码、文档、API)里行动,世界模型给"物理世界"的 Agent 造练功房和想象力。
Genie 3 官方页 ↗ World Labs ↗
▾ 展开
📜AGENTS.md🔥🔥
📐 工程标准 · OpenAI 发起 · 60,000+ 仓库采用
项目根目录里"写给 AI 看的 README":怎么跑测试、代码规范、哪些文件别碰——任何 Agent 开工前先读它。
OpenAI 2025-08 发布,Codex、Cursor、Amp、Devin、Gemini CLI、Copilot 等全线支持;2025-12 与 MCP 一起捐入 Linux Foundation 的 AAIF 成为中立标准。与 CLAUDE.md 是同类物(always-on 常驻上下文),与 Skills 形成互补(见右侧卡片)。
🧩 挂回主线:第 3 章"模型会忘,仓库要记得"的标准化落地——外部状态与项目记忆的行业标准形态。
agents.md 官网 ↗
▾ 展开
🎒Agent Skills 技能🔥🔥
📐 工程标准 · 渐进式披露
文件夹形态的"能力包":SKILL.md + 配套脚本。平时只在上下文里占约百 token 的目录条目,被触发时才加载全文
适合"多步骤、偶尔用、带脚本"的流程(发布 checklist、生成 PPT、报表规范)。与 AGENTS.md 的取舍已有实证:Vercel 2026-01 的评测里,常驻上下文的文档索引通过率 100%,Skills 只有 79%——因为 56% 的用例里技能根本没被触发。结论不是谁更强,而是常驻规则放 AGENTS.md,重型偶用能力做成 Skill
🧩 挂回主线:上下文工程(第 3 章抓手 4)的产品化;完整写法见 第 7 章 Skill
进入第 7 章深读 ↗ 官方指南 ↗
▾ 展开
🐝Subagents 子代理🔥🔥
🎛 编排与产品
主 Agent 派生的"隔离上下文分身":自己干活自己吃 token,只把结论摘要带回主线程。
Claude Code 用 .claude/agents/ 定义专职子代理(自带系统提示与工具白名单);Cursor 有后台 Agent 与并行 worktree。适用于深度搜索、日志分析、依赖审计这类"中间过程不值得进主上下文"的任务。2026 年的进化版是 Claude Code Dynamic Workflows:主代理现场写编排代码,调度成百个并行子代理。
🧩 挂回主线:第 6 章编排者-工作者模式的实现单元 + 第 3 章上下文管理的终极手段。
Claude Code 文档 ↗
▾ 展开
🤝A2A 协议🔥🔥
📐 工程标准 · Google 发起 · Linux Foundation 托管
Agent 之间的通信标准:MCP 管"Agent ↔ 工具",A2A 管"Agent ↔ Agent"——跨公司、跨框架的智能体互相递名片、谈合作。
核心机制是 Agent Card(数字名片,常驻 .well-known/agent-card.json):声明名字、版本、端点、capabilities、skills、认证方式;对方凭名片发现能力、协商任务、异步协作。Card 里的 skills 描述“我会什么任务”;这与本地宿主 SKILL.md 不是同一层。2025-04 由 Google 发布,随后捐入 Linux Foundation。一句话:MCP 是 Agent 的手,A2A 是 Agent 的社交,Agent Card 是社交名片
🧩 挂回主线:第 4 章解决工具接入;第 6 章决定何时多代理;本章告诉你跨组织协作用 A2A,而不是把 MCP knowledge_chat 强行替换掉。
第 6 章完整对比 ↗ A2A vs MCP ↗ Agent Card 教程 ↗ A2A 官网 ↗
▾ 展开
🖱Computer Use / GUI Agent🔥🔥
🎛 编排与产品
让模型看屏幕截图、动鼠标键盘——没有 API 的软件也能被操作,屏幕即接口。
Anthropic 2024-10 首发 computer use,OpenAI 跟进 Operator 与 ChatGPT Agent;2025-2026 演变成"AI 浏览器大战"(Perplexity Comet、OpenAI Atlas 等)。它是工具调用的极限形态:把整个 GUI 世界变成一个巨大的通用工具。挑战在于慢、贵、易被页面上的恶意指令注入。
🧩 挂回主线:第 1 章工具的推广形态——本页的排版验证,就是一个浏览器 Agent(截图 → 判断 → 点击)完成的。
首发公告 ↗
▾ 展开
🗂Context Engineering 上下文工程🔥🔥
📐 工程标准 · 详见第 3 章
从"写好一句提示词"升级为"经营模型看到的一切":系统提示、工具、历史、检索、记忆的总预算管理。
2025-06 Shopify CEO Tobi Lütke 提出、Karpathy 转发背书后爆红,Anthropic 随后发布官方方法论。核心信条:上下文是稀缺资源,注意力会被稀释——找到"恰好够用的最小高信号 token 集"。本页第 3 章已详细展开(压缩、落盘、子代理),此卡仅作雷达定位。
🧩 挂回主线:Loop Engineering 谱系的中间层:Prompt ⊂ Context ⊂ Harness ⊂ Loop。
官方方法论 ↗
▾ 展开
💾Agent Memory 记忆系统🔥
🎛 编排与产品
让"金鱼记忆"的模型拥有跨会话的持久记忆:工作记忆(上下文)之外,加装情景记忆与长期偏好。
两条路线:产品内置——ChatGPT Memory、Claude 的 memory tool(把记忆读写做成工具,存到文件目录,配合 context editing 自动清理旧结果);框架外挂——MemGPT/Letta 一脉,把记忆分层并让模型自己管理换入换出。共识正在形成:记忆的本质是"由 Agent 自己维护的外部文件",而不是无限大的上下文。
🧩 挂回主线:第 3 章抓手 5"外部状态"的专门化——AGENTS.md 记项目约定,Memory 记用户与历史。
Anthropic 记忆与上下文管理 ↗
▾ 展开
🏋️RL 环境热(Environments)🔥
🌌 新范式 · "环境是新的数据"
训练 Agent 的"练功房"成为新的稀缺资源:可验证奖励的强化学习(RLVR)需要海量高质量交互环境,而不只是静态语料。
逻辑链条:Agent 能力来自"行动-反馈"循环 → 反馈要可验证(测试通过、任务完成)→ 于是"带验证器的环境"本身成了兵家必争的数据资产。表现:开放环境社区兴起、大厂重金收购交互数据(OpenAI 曾报价 5 亿美元求购游戏操作录像库)、世界模型顺势卡位"无限生成练功房"。
🧩 挂回主线:把第 3 章的"验证器"从推理时搬到了训练时——训练循环与 Agent 循环长得一模一样,这不是巧合。
▾ 展开
🏢Agent 治理 / "数字员工"🔥
🎛 编排与产品 · 企业侧
当 Agent 数量超过员工数量:企业开始像管人一样管 Agent——身份、权限、审计、绩效,一个都不能少。
代表作是 Microsoft Agent 365(2025-11 发布、2026-06 GA):给每个 Agent 发"工牌"(Entra 身份)、配权限、记审计日志的控制平面。背后的真问题:无人值守循环 × 生产权限 = 必须有组织级护栏。这也是 Loop Engineering"人工门禁"抓手在企业尺度的放大。
🧩 挂回主线:第 3 章六抓手的组织版——个人管一个循环靠验证器,企业管一万个循环靠治理平面。
▾ 展开
🎧Vibe Coding 氛围编程🔥🔥
🎭 文化现象 · 柯林斯词典 2025 年度词
Karpathy 2025-02 造词:"完全交给氛围"——说需求、看结果、不逐行审代码,代码是否优雅不重要,能跑就行。
从自嘲梗到中性词:原型、周末项目、一次性工具的大杀器;但 2026 年的行业共识已经清晰——生产代码可以 vibe 着写,不能 vibe 着验收。这恰好是第 3 章验证器思想的文化面镜像:氛围负责生成,验证器负责把关。衍生词还有 vibe designing、vibe ops……套路相同。
🧩 挂回主线:为什么 Loop Engineering 把验证器奉为灵魂?因为 vibe 可以驱动循环,但不能替代停止条件。
词条与出处 ↗
▾ 展开
⚠️ 谨防"概念通胀"
AMI Labs 的 CEO 半开玩笑地预言:"六个月内每家公司都会自称世界模型公司来融资。"对任何新概念,三连问保平安:① 它解决什么真问题?② 谁在生产环境里用它?③ 它对现有层是替代还是补充?——绝大多数热词的诚实答案是"补充",而基本盘(模型 + 工具 + 循环 + 标准接口)自 2023 年以来没有变过。
✅ 本章小结
  • 热词定位五层法:模型内部(J-Space)/ 新范式(世界模型、RL 环境)/ 工程标准(AGENTS.md、Skills、A2A)/ 编排与产品(子代理、Computer Use、记忆、治理)/ 文化现象(Vibe Coding)
  • J-Space:Claude 内部自发涌现的"特权工作区",可解释性与安全审计的里程碑,不是产品。
  • 世界模型:学环境的物理因果而非下一个词,是物理世界 Agent 的练功房,与 LLM Agent 互补。
  • MCP 管工具接入,A2A 管智能体社交;AGENTS.md 常驻,Skills 按需——都是"分层"思想。
📝第 8 章随堂小测全部答对即点亮本章
🏅第 8 章通关!雷达已校准——下次刷到新热词,先问"它在哪一层"。

📚 本章延伸

第 9 章

🧩 全景串联 + 通关自测

把五块拼图合成一张图,再用一套综合题验证你真的懂了

🗺 一张图看懂全部关系

当你在 Cursor 里说"帮我查下上海天气然后写进 README",发生的完整链路:

👤 用户:"查上海天气,写进 README"
🖥 Host 宿主(Cursor)内的 Agent Loop (第 3 章的 while 循环,跑着第 2 章的 ReAct 模式)
🧠 LLM:思考 + 开单(第 1 章 tool_calls) 🔧 原生工具:read_file / edit_file … 🔌 MCP Client ×N(第 4 章)
🌤 weather MCP Server
(第 5 章你写的那个)
📁 文件系统 Server
🌍 真实世界:API / 文件 / 数据库
循环转两轮:第 1 轮调 get_weather(走 MCP)拿到"多云 29°C";第 2 轮调 edit_file 写入 README;第 3 轮模型不再开单,输出总结——停止。

🔑 五个概念的一句话定位(背下来就能给别人讲)

概念层次一句话定位
ReAct思想回答"为什么":推理与行动交替,用观察修正方向,Agent 行为的元模式。
Tool / Function Calling机制回答"模型怎么表达要做事":结构化申请单(tool_calls),执行权在运行时。
Agent Loop运行时回答"怎么跑起来":while 循环驱动"思考→执行→观察"直到自然停止。
Loop Engineering工程学回答"怎么跑得稳":验证器、停止条件、预算护栏、上下文管理、外部状态、人工门禁。
MCP / MCP Server标准接口回答"能力从哪里插进来":Host–Client–Server 协议,写一次 Server 处处可用。
Multi-Agent组织学回答"一个大脑不够怎么办":编排者-工作者拆任务、子代理隔离上下文。
A2A / Agent Card协作协议回答"独立 Agent 如何发现并协作":名片发现、任务委托、长任务生命周期;与 MCP 互补而非替代。
Skill能力封装回答"可复用流程怎么分层":description 路由,正文给手册,references/scripts/assets 按需加载。
世界模型 / J-Space前沿雷达回答"更远的地方是什么":一个给物理世界的 Agent 造练功房,一个看进模型脑内的工作区。

🎓 通关综合测验

五道综合题,考察的是概念之间的关系而非孤立定义——这才是真懂的标志:

🏆通关综合测验全部答对触发通关庆祝 🎊
🏆全部通关!你已经掌握现代 Agent 的完整拼图。下面的实践路线图就是你的下一程。

🛤 接下来动手:真实 Demo 实践路线图

知识只有过手才算数。按顺序做,每完成一项点一下(进度会保存):

① 在 Cursor 里装一个现成 MCP Server(10 分钟)
设置 → MCP → 添加 官方 servers 仓库里的 filesystem 或 fetch,然后在对话里让 Agent 用它读个网页/文件,观察工具调用过程。
② 用 MCP Inspector 看一次原始消息(10 分钟)
npx @modelcontextprotocol/inspector 连上任意 Server,亲眼确认 initialize → tools/list → tools/call 和 Demo 7 一模一样。
③ 抄写第 5 章的天气 Server 并接入 Cursor(30 分钟)
不要复制粘贴,逐行手敲。跑通后给它加第三个工具(比如 get_forecast),体会"改函数 = 改协议能力"。
④ 跟着 Thorsten Ball 用 300 行写一个 Agent(2 小时)
How to Build an Agent,任何语言复刻:一个循环 + read_file/list_files/edit_file 三个工具。写完你会彻底祛魅。
⑤ 读两篇 Anthropic 工程文章(1 小时)
Building Effective AgentsEffective Context Engineering——从"会写"到"会设计"。
⑥ 设计一个属于你的外循环(进阶)
选一件重复性工作(如每日代码审查、失败测试自动修复),按第 3 章六抓手设计:目标、验证器、预算、上下文、状态、门禁。用 Cursor 的后台 Agent 或 SDK 跑起来。

📖 延伸书架

AI Learning Lab · Agent 基础馆 · 与 前沿首页 / 技术 Demo / Git 实验室 同一学习路径 · 本页自身即是 Agent Loop + Tools 的产物 🌀
事实核对基准:MCP 正式版规范 2025-11-25(2026-07-28 版为 RC);MCP 已于 2025-12-09 捐赠 Linux Foundation / AAIF;Loop Engineering 一词成型于 2026-06;J-Space 发布于 2026-07-06(Anthropic《A global workspace in language models》)。所有外链均为真实资源。
进度存储于浏览器 localStorage,不上传任何数据 · 重置全部进度