🎬 开场 · 5 天 · 1 亿用户
旧金山一家叫 OpenAI 的小公司 · 在博客里发了一篇低调的文章 · 标题写着 “Introducing ChatGPT”。
没有发布会 · 没有大新闻 · 工程师们都以为这只是个内部测试品。
5 天后 · 100 万用户。Instagram 用了 30 个月 到这个数 · TikTok 用了 9 个月。
ChatGPT 用了 5 天。
但 ChatGPT 不是凭空出现的
那一刻看起来是”奇迹” · 其实是 OpenAI 7 年 · 一条路线的总爆发。下面这条鱼骨图 · 把这 7 年最关键的节点全摆出来 · 让你一眼看清”AI 时代”是怎么被一家公司一步步推出来的。
看出来了吗 · ⭐ 那个节点之前 · 已经有 7 年的论文 · 资本 · 失败 · 训练铺路 —— GPT-1 → GPT-2 → 微软投钱 → GPT-3 → InstructGPT 的 RLHF。ChatGPT 不是天才一闪 · 是路线坚持的终点。这个视角 · 也是你看后面所有 AI 公司的最佳镜头。
今天你会学到的概念地图
🏗 前置 · Transformer · 一切的起点
在正式开始之前 · 先 5 分钟讲清楚一件事:所有今天的 LLM · 底层都是同一个东西 —— Transformer。
ChatGPT 的 T · Claude 用的 · Gemini 用的 · DeepSeek 用的 · Llama 用的 —— 全是 Transformer。理解它 · 你就理解了 AI 这 3 年起飞的”骨架”。
故事 · 一篇 2017 年的论文 · 没人意识到改变了世界
论文标题特别简单:“Attention Is All You Need”(你需要的只是注意力)· 8 位作者 · 11 页正文 · 当时几乎没引起业界波澜。
论文里发明了一种全新的神经网络架构 · 叫 Transformer。它做的事很简单:用一种新方法让 AI “读”句子。
5 年后 · ChatGPT 发布 · 引爆 AI 时代。它的 G·P·T 里的 T · 就是这篇论文里的 Transformer。
等等 · 它跟”神经网络”什么关系?
很多同学听到 “Transformer” · “神经网络” · “深度学习” 几个词就懵了 · 它们到底什么关系?
一句话:Transformer 就是一种神经网络 · 神经网络有很多种 · Transformer 是其中最适合处理语言的那种。
下面这个 36 秒的动画用 3Blue1Brown 自己写的开源动画引擎 Manim 做的 · 用最经典的”识别手写数字”例子 · 把每一层的输入 / 输出都标清楚:
🎬 神经网络 · 每一层在做什么
Made with Manim · 3B1B 同款引擎
📥 输入:一张 6×6 手写”3”的图 = 36 个像素亮度(每个 0~1)
🔀 每一层:8 个神经元 · 各自问一个”是什么样的特征?“的问题 · 听上一层所有数 · 加权求和 · 输出一个 0~1 的”投票”
📤 输出:10 个数字(0~9 各一个)· 每个 = “我是这个数字的概率” · “3” 拿到 71% → 预测:3
💡 一句话:每层都把上一层的一组数字重新组合成新一组数字。Transformer 也是这样 · 只是输入是一串词而不是像素 —— 而它的”权重”不是训练时定死的 · 是每次根据上下文动态算出来的 —— 这就叫注意力。
明白这个之后 · 我们再回头看:“Transformer 之前 vs 之后” 的差别就一目了然 ——
核心思想 · 一张图看懂
Transformer 之前 · AI 读一个句子像念课文 · 一个字一个字按顺序读 · 慢 · 还容易忘前面说过什么。
Transformer 之后 · AI 一眼看完整句话 · 所有词同时”互相看” · 知道哪些词跟自己有关 · 哪些不相关。
- ❌ 只能从左到右排队处理
- ❌ 句子长了 · 前面的容易忘
- ❌ 不能并行 · GPU 用不起来
- ❌ 长篇文章性能急剧下降
↕ ↕ ↕ ↕ ↕
每个字都同时看其他所有字
- ✓ 所有词并行处理 · 一次性
- ✓ 长句子不丢前面的
- ✓ GPU 可以全力加速
- ✓ 处理几十万字也行
关键概念 · “注意力”(Attention)· 互动演示
Transformer 的核心机制叫 Attention(注意力)—— 每个字”看”其他字时 · 关注度不一样。
下面这个动画演示一个真实的歧义句:“他打开苹果电脑 · 吃了一口苹果” —— 同一个”苹果”出现两次 · 一次是品牌 · 一次是水果。Transformer 如何分清?切换 tab 看看它把”注意力”放在哪里:
🧠 Attention · 看 Transformer 怎么分清"苹果"
🏆 "苹果" 注意力 Top 3
💡 第 1 个"苹果"主要看"电脑" · 注意力 78-85% · Transformer 因此判定:这里的"苹果"是品牌(Apple 公司)· 不是水果。
同一个词在不同上下文里 · 含义完全不同 —— Attention 让 AI 真正”理解”上下文 · 这是 Transformer 的核心魔法。
旧方法:传话游戏 · 一个传一个 · 最后传不清。
Transformer:所有人都同时听到所有人讲话 · 各自决定关注谁。
每个词都问:“谁跟我有关?”
到图书馆所有书目(其他词)里匹配 · 拿回相关的内容 · 融进自己的理解。
每个词都有个聚光灯 · 自动照亮句子里跟自己最相关的几个词。
“Attention” 直译就是”注意力” —— 注意哪里 · 哪里就亮。
为什么这么重要?
所有词同时处理 · GPU 可以全部跑满。这就是为什么能训练几千亿参数的模型 · 把数据规模拉到天上。
旧方法 RNN 读到第 1000 个词时 · 第 1 个词早忘了。Transformer 每个词都能直接看到每个词 · 不存在距离衰减。
同一个 Transformer 架构 · 能做文字 · 图片 · 音乐 · 代码 · 视频。“通用大一统模型” 可能就是它。
Transformer 一出 · “把模型做大 · 把数据加多” 这条路彻底通了。8 年时间 · 参数从亿级到万亿级。
想深入了解 · 3 个最好的资源
27 分钟 · 全可视化讲解 · 看完你能给别人讲明白。Deep Learning 系列第 5 章。
Jay Alammar 的图解长文 · 业内传播最广的 Transformer 入门 · 已被翻译成 10+ 种语言。
Vaswani 等 · 2017 · 11 页 · 引用 16 万次 · 改变世界的那篇。
💡 一句话记住 —— Transformer = 让 AI 一眼看完整句话 · 每个词同时跟所有词”对话”的架构。所有今天的 LLM 都建在它上面 · 没有它 · 没有 ChatGPT · 没有 Claude · 没有 Cursor · 没有今天的一切。
模块 A · 把 Transformer 装上规模 · 这就是 LLM
承上启下 —— 你刚学的 Transformer 是一种架构 · 一套设计图。它本身还不会做任何事 —— 就像一张电路图不是手机。要变成你今天能调用的 ChatGPT / Claude · 还需要 3 步。
Transformer ≠ LLM · 三个加号
Transformer 论文里的模型只有 6500 万参数。GPT-3 做到了 1750 亿。GPT-4 业界估计 1 万亿+(未官方确认)。
为什么 · 规模上去 · “涌现”出全新能力(写代码 · 推理 · 翻译)· 不是线性提升 · 是质变
数万亿 token · 网页 + 书 + 代码 + 维基百科。没经过这步 · 只是一堆随机权重的架构 · 啥都不会。
类比 · Transformer 是空白大脑 · 训练数据是它读过的所有书 · 你看到的”知识”全在权重里
只有前两步的模型只会做文本续写。InstructGPT 用 RLHF(人类反馈强化学习)让它学会跟你”对话” · 这才有 ChatGPT。
关键 · GPT-3 API 2020 年就有 · 但没人觉得它”会聊天” · 因为缺这一步
💡 一句话 —— LLM = Transformer × 规模 × 数据 × 调教。少一个都不是你今天用的 AI。
它「看见」的世界 · 不是字母 · 是 token
回到刚才那个 Transformer 动画 —— 它处理的最小单位是什么?
不是字母 · 不是单词 · 是 token —— 模型字典里被压成数字的”片段”。
straw + ber + ry这意味着 —— LLM 从来没”看见”过单独的字母。它看到的是 ID 序列。在它的世界里 · “strawberry” 不是 10 个字母 · 是 3 个数字。
这个架构的直接后果 · 一个小实验
现在带着这个理解 · 做个实验。问任何 AI:“strawberry 里有几个 r?”
它会答错。
但这不是 AI 笨 · 是架构层面的必然 —— 它在看 [4842, 3231, 821] · 不在看字母。下面这个 demo 让你亲眼看一遍这个切分过程:
🧩 token 化 · AI 看到的世界
🤖 AI 看到的:2 个 token
每块颜色 = 一个 token
10
2
5.0x
🍓 strawberry 之谜 · 数 r 给你看
输入 "strawberry" · 点上面按钮看 AI 怎么数 r · 你会发现它经常答错。
💡 泛化的力量 —— 记住这个例子 · 它能让你预测所有LLM 在”字母层”会出错的场景:拼写检查 · 押韵 · 字数限制 · 字符级反转 · 单字数数。只要任务需要 LLM 看见单字符 · 它就会失败。
站在 Transformer 之上 · LLM 怎么”预测下一个词”
你刚学的 Transformer 是个架构 · 描述的是 “N 个 token 同时通过 attention 互看”。但你按下 ChatGPT 的回车之后 · 它具体怎么用这个架构 · 一个字一个字给你回答的?拆开就 5 步:
每个 token 查模型的”字典”· 拿到一个 4096 维(或更高)的数字向量。这串数字编码了这个 token 的”含义” · 但它还没看过句子里的其他 token。
这就是你刚学的 attention · 但堆叠 96 层(GPT-3 是 96 · 更大的模型更多)。每过一层 · 每个 token 的向量都被刷新一次 —— 现在它”知道”了句子里所有其他 token 的存在 · 并把相关的信息融进自己的向量里。“真”这个 token · 在第 96 层之后 · 已经”知道”它前面是”今天天气”。
只看最后一个位置 —— “真”那个位置在第 96 层的输出向量。把它乘上一个矩阵 · 投影成词表大小的一长串数字(比如 10 万 token · 就是 10 万个数字 · 叫 logits)。每个数字代表”下一个 token 是这个 token 的得分”。
把 10 万个 logits 通过 softmax 变成概率分布(加起来等于 1)· 然后按概率抽一个。
抽到 “暖” 之后 · LLM 并没有接着往后预测。它把 “暖” 加到输入序列末尾 · 然后整个流程从头再走一遍:
你看到的 ChatGPT 一段几百字的流式回答 · 其实是这个循环跑了几百次。每个 token 都让整个 96 层 Transformer 重算一遍。这是为什么 LLM 越长输出越慢 · 也是为什么”流式输出”看起来一个字一个字蹦出来。
💡 这就是 LLM 的”心跳” —— 下面 7 个根概念 · 每个都对应这个流程里的某个环节:
7 个 LLM 根概念 · 挂回流程图
记住上面那 5 步 + 自回归循环。下面 7 张卡 · 每一张都对应这个心跳里的某个位置 —— 你看完会发现 · 之前听过的所有 AI 词汇 · 突然都”挂”得上去了:
点任一卡看动画 demo:
🧠 LLM 7 个根概念 · 点任一卡看动画演示
根概念 · 1 / 7
LLM
所有"神奇能力"的根:预测下一个 token。给定 "Hello ",AI 内部算出每个候选词的概率:
点任一选项 · 看 AI 选了什么。所有看似神奇的"理解 / 推理 / 创作"能力 · 都从这件小事涌现。
Module A 揭示了 LLM 只做一件事 —— next-token prediction。听起来很受限:它怎么可能”调工具”、“上网”、“读你电脑里的文件”?
这就是 Module B 要解开的悬念。剧透:模型本身没多做任何事 · 它还在那 5 步心跳里。但你的代码做了点别的 —— 它盯着 token 流找特定模式。这一个微小但关键的”机制外挂” · 让 AI 从”只会说”变成”会做”。
模块 B · AI 的”能力进化史” · 3 年 7 次跳跃
故事钩子 —— 2023.6.13 OpenAI 在博客里发了 “Function Calling” · 当时工程师没在意 · 但这是 LLM 历史上第二重要的一天 —— AI 第一次”有了手”。
下面这条时间线 · 是过去 3 年 AI 能力进化的全部关键节点。点开每个节点看真实示例:
📈 能力进化时间线 · 点任一节点看详情
2023.6
Function Calling / Tool Use
AI 第一次"有了手"
LLM 之前只会"输出文字" · 现在能"调用工具" · 查天气 / 读文件 / 算数都行
LLM 第二重要的一天 · 一切 agent 的起点 · OpenAI 6/13 发布
"上海天气怎么样?" → "我不知道"
"上海天气怎么样?" → 调 weather API → "上海 28 度无雨"
看动画 · function calling 这一跳到底发生了什么?
时间线里最关键的节点就是 2023.6 那个 function calling。下面这个动画用一个”查天气”的小例子 · 把整条链路演一遍:
用户 → LLM → 工具请求 → 你的代码 → API → 结果回到 LLM → 准确回答。动画里 LLM 看起来在”调”工具 · 但你按 Module A 学的知识 · 它只能预测下一个 token。它怎么”调”任何东西的?下面把这个真相拆透。
揭开真相 · LLM 其实从来没有「调用」任何工具
刚刚那个动画看上去 · LLM 在”调用”weather API。但是 · 倒回模块 A 你学的那 5 步心跳 ——
LLM 只能做一件事 · 那就是预测下一个 token。
那它到底怎么”调用”任何东西的?
真相:它没有。整个 function calling 机制里 · 模型还是只在做 next-token prediction —— 只不过它学会了在某些时候输出一种特定格式的文字。真正去调 API 的 · 是你的代码。
下面 6 步把这个真相拆透。
发请求时 · 你在 prompt 里塞一段 tool 描述(OpenAI / Anthropic 都用 JSON Schema):
tools: [{
name: "get_weather",
description: "查询某个城市的实时天气",
parameters: {
city: { type: "string", description: "城市名" }
}
}]从模型的角度看 · 这就是一段普通文字·进它的 context · 占 token。
进入模块 A 的 5 步心跳 · tokenize → embed → 96 层 Transformer → 投影 → softmax。啥都没变。
因为它在训练时见过成千上万这种 pattern(user 问实时信息 → assistant 输出 tool_call JSON)· 所以现在它的 softmax 给这些 token 的概率很高。一个一个 token 流出来:
划重点 · 模型只是在说话。它没有”真的”调任何东西。它的”决定” = 它的 softmax 给 <tool_call> 这个 token 的概率最高。
</tool_call> 就截停OpenAI/Anthropic SDK 在底层一直盯着 token 流。一旦看到 </tool_call> · 立刻:
JSON.parse 出 name + argsget_weather(“上海”) · 真去打 HTTP把 API 返回的 JSON 包成 tool_result 加到对话末尾 · 再次调用模型继续生成。现在它的 context 里多了:
<tool_result name="get_weather">
{"temp": 28, "rain": false, "city": "上海"}
</tool_result>这只是多了一段输入文字 · 模型完全不知道这是”API 调来的” · 还是”用户复制粘贴的”。对它来说都一样。
新的 softmax 把”28”、“°C”、“无雨”这些 token 的概率推得很高(因为它们刚出现在 context 里 · attention 直接抓得到)。继续 token by token 输出:
「上海今天 28°C · 没有下雨 · 适合户外活动 ✓」模型从头到尾没变· 还是 Module A 那 5 步心跳。变的是两个地方:
- 训练数据 · 喂大量
<tool_call>{...}</tool_call>格式的样本 · 模型学会”在合适的位置高概率输出这个 pattern” - 运行时 · 你的 SDK 在 token 流里监听·看到 tool_call 就截停 + 解析 + 执行 + 注入结果
舞台上演员说”我递给你一杯水” —— 但真正把水送到对方手里的是道具组。LLM 就是台上的演员 · 它只会”说话”(输出 token)·真正去打 API 的是道具组(你的代码)。整套 function calling 就是这套表演分工 —— 演员演得多逼真都不重要 · 道具组该做事还得做事。
为什么这个揭示重要 · 一旦你看穿这点 · 后面所有”AI 能做事”的产品就全清楚了:
- Agent = 同一个机制 · 多个 tool · 多轮循环(产出 tool_call → 执行 → 注入结果 → 再产出下一个 tool_call · 直到模型不再输出 tool_call)← 下面这个动画就在演这个
- MCP = 把 tools 这层标准化 · 让任何 server 都能注册成”可调工具”· 模型不用重训
- Claude Code / Cursor = tools = [read_file · edit_file · run_bash · …] · 加上一个 agent loop
- ”为什么 GPT-3.5 也勉强能做 function calling · 但不如 GPT-4 稳” = 训练数据里这个 pattern 的密度和质量不同 · 没有架构区别
那 · 如果让它「一直循环」呢?· Agent Loop
刚才那 6 步是一次 function calling 的完整流程。但很多任务做不完 —— 比如调一个 bug · 你需要:先找代码 · 再读代码 · 跑测试看错误 · 改代码 · 再跑测试验证。5 次工具调用 · 5 个 tool_result 累积进 context · 才能完成 1 个任务。
这就是 agent loop —— 把刚才那 6 步接着循环 N 次:每次模型看着之前所有 tool_result 来决定下一次要 call 什么 tool · 直到它的输出里不再包含 <tool_call> —— 那意味着模型认为任务完成了。
agent ≠ 新机制·agent = function calling × N 轮 · 直到模型不再 tool_call
下面这个动画演一次完整的 5 轮调 bug · 你能看到每一轮都对应刚才那 6 步 · 而每一轮的 think 都基于上一轮的 tool_result:
注意第 3 轮的红色错误 —— 那是 agent 的”发现时刻”·因为前一轮的 tool_result 进了 context · 第 3 轮 think 才能从一般搜索转到精确定位。这就是”agent 越循环越聪明”的真正机制:不是模型变聪明 · 是 context 越来越富。
这其实就是你自己调 bug 的过程 —— 想(“可能在 auth 里”)→ 做(grep 一下)→ 看(找到 3 处)→ 再想(“看 stack trace”)→ 再做(改 42 行)→ 再看(跑测试)。Agent loop 不是 AI 的新发明 · 是它学会了人类工程师 50 年来的工作模式。所以当你看 Claude Code / Cursor 跑起来感觉像”小工程师在干活” —— 不是错觉 · 它真的在复刻你的思维循环。
Module A:LLM = 5 步心跳 · 预测下一个 token。
function calling:教模型说”工具调用”格式的话 · 你的代码听懂后执行。模型没变 · 加了根输出线。
agent loop:把这条线反复走·每次 tool_result 都进 context · 让下一次决策更精准。机制没变 · 加了循环。
Claude Code · Cursor · Aider · MCP:就是 agent loop 在不同 tool 集合上的不同实例。本质相同。
关键洞察 · 3 年 vs 30 年
3 年内 · AI 从”接龙工具”变成”能跑在 terminal 里自己干活的 agent”——这是技术史上前所未见的速度。
模块 C · AI 工具世界的「USB-C」· MCP
承上启下 —— 模块 B 的最后我们看到 · agent = function calling 反复跑。但有个问题没解决:每家 AI app 都要自己写和每个数据源(GitHub / Slack / Postgres …)的接驳代码。这就是 2024.11 Anthropic 推 MCP 想解决的问题 —— 给 AI 工具世界一个”USB-C”。
1 · 看清问题 · 为什么需要一个标准
把所有当下的 AI 应用列出来:Claude Desktop · Cursor · ChatGPT · Windsurf · Zed · Cline · Continue · Copilot Studio · Aider · Replit … 假设 M 个。
把所有想接的数据源也列出来:GitHub · Slack · Postgres · Drive · Notion · Linear · Sentry · Stripe … 假设 N 个。
问题:每家 AI app 都要为每个数据源单独写胶水代码 · 总工程量 = M × N。下面这个动画把这个数字的可怕讲清楚:
从 5 × 5 = 25 到 5 + 5 = 10 · 看起来只省了 15 条线。但 scale 到 100 × 100·就是 10,000 条胶水代码 vs 200 条接口。这就是 MCP 的全部数学 · 也是它存在的理由。
回忆一下 2010 年 —— 手机 micro-USB · iPhone Lightning · 笔记本三种 type-A · 相机 mini-USB · Kindle 又一种 … 桌上一团乱麻 · 出门要带 4 根线。M 个设备 × N 种接口 = 一抽屉数据线。
USB-C 出来后呢 · 所有设备一根线搞定。MCP 干的就是 USB-C 干的事 —— 在 AI 工具世界做一次同样的统一。所以你以后看到”某某 AI app 支持 MCP” · 就和当年”某某新机型支持 USB-C”一个意思 · 接得越多 · 桌面越干净。
2 · 灵感来源 · IDE 世界 8 年前解决过同样的事
MCP 不是凭空发明的。它直接借鉴了 LSP(Language Server Protocol)—— 微软 2016 年为 IDE 世界搞的同款标准。
问题:M 个 IDE × N 种语言 = M × N 个 plugin。VSCode · IntelliJ · Vim · Sublime 各自写 TypeScript / Python / Rust 支持。
解:定义一套 IDE 和”语言服务器”之间的协议。语言侧只写一个 server · 所有 IDE 受益。
问题:M 个 AI app × N 个数据源 = M × N 个工具集成。
解:定义一套 AI app 和”上下文服务器”之间的协议。数据源侧只写一个 MCP server · 所有 AI app 受益。
💡 同一招打两次 · 8 年前打 IDE 战 · 现在打 AI 战。LSP 的成功(VSCode 主流地位的一个核心原因)就是 MCP 的样板。
3 · 2024.11.25 · Anthropic 开源 MCP
4 · 核心架构 · 三角色 · 看动画
动画里看到的:Host(你用的 AI 应用)内部 spawn 多个 Client · 每个 Client 一对一接 1 个 Server。一次 tool_call 沿 Client → Server → 外部 API → 结果回流 · 走完全程。
Claude Desktop · Cursor · Zed · ChatGPT Desktop · Copilot Studio · …
容量:1 Host : N Clients
Host 内部·和某个 Server 一对一对接·负责协议握手、消息序列化。
容量:1 Client : 1 Server
一个 server = 一类能力。github-server · postgres-server · filesystem-server …
容量:1 Server 可被 N 个 Host 共用
5 · Server 暴露给 LLM 的 3 类原语
每个 MCP server 都对 client 声明自己能提供什么。一共就 3 类:
可执行函数。每个 tool 有名字 + JSON Schema 描述参数。LLM 通过 tools/call 触发。
{
name: "create_issue",
inputSchema: {
title: "string",
body: "string"
}
}只读资源。每个有 URI 标识。LLM(或用户)通过 resources/read 拉取。
{
uri: "file:///docs/spec.md",
mimeType: "text/markdown"
}预制的 prompt 模板。用户从 UI 触发(比如 slash 命令)。带参数。
{
name: "review_pr",
arguments: [
{ name: "pr_number" }
]
}💡 关键区别 · tools 模型主动调(“do something”)· resources 模型/用户主动读(“give me data”)· prompts 用户主动触发(“use this template”)。
6 · Client 反向给 Server 的 2 类原语(进阶)
MCP 不止单向 · Client 也对 Server 暴露能力:
Server 内部需要”想”的时候 · 不用自己接 LLM API · 反过来请 client 去问 LLM。
用途:让 server 也能用 agent 能力 · 不用自己付 API 费 · 不用自己集成 OpenAI/Anthropic SDK。
Server 启动后向 client 询问:“我能访问哪些目录?” Client 返回明确的 root 列表。
用途:安全隔离。filesystem-server 不能乱跑·只能在 user 授权的目录里读写。
7 · 传输层 · 模型怎么”听”和”说”
MCP 协议归协议 · 实际跑起来需要传输层。当前两种主流方式:
Host 把 server 当本地 subprocess 启动 · 走 stdin/stdout 通信。
适合:本地文件 / 本地 db / shell 命令 · 高性能 · 无网络开销
Host 通过 HTTP 请求远端 server · 支持 SSE 流式 · 也支持普通响应。
适合:云端服务 · SaaS · 第三方 API(GitHub · Linear · Stripe)
认证:OAuth 2.1
历史注:MCP 早期还有 HTTP + SSE transport · 2025.3 弃用 · 被 Streamable HTTP 取代。
8 · 一次完整工作流 · 步进式协议演示
下面这个交互组件 · 把刚才架构动画里的”一次 tool_call”拆成 8 步 · 每步都能看到真实的 JSON-RPC 报文 —— 点 step 或点 ▶ 看完整循环:
Host(如 Claude Desktop)为每个配置的 server 创建一个 Client 实例。本地 server 通过 stdio 启动 subprocess · 远端 server 走 Streamable HTTP。
// 内部操作 · 无 JSON-RPC 消息
spawn("github-server", { stdio: true })
// 或 fetch("https://mcp.example.com/sse")💡 看出来没?这其实就是模块 B 学的 function calling + agent loop · 只是把”tools 哪儿来”那一步用 JSON-RPC 标准化了。Step 6→7→8 = function calling 单轮 · Step 8→6 的循环 = agent loop。
9 · 生态全景 · 2026 现状
最少 ~20 行就能写出一个能用的 server。
10 · 推荐资源 · 想深挖去哪
- modelcontextprotocol.io · 协议主页
- /specification · 完整规范
- /quickstart · 上手教程
- github.com/modelcontextprotocol · 所有官方代码
- smithery.ai · 一键安装 MCP server
- glama.ai · server 评测
- mcp.so · 社区聚合站
- pulsemcp.com · 趋势 / 排行
- Anthropic 公告原文
- Latent Space 播客:“Introducing MCP”
- 《MCP for Developers》· Anthropic 工程博客
- 1. 在 Claude Desktop 装
filesystemserver - 2. 用 Python SDK 写一个 hello-world server
- 3. 在 smithery.ai 装一个真实 server(如 github)
11 · 为什么 MCP 是 AI 时代的「USB-C」
function calling 解决了”模型能调工具”·MCP 解决了”工具能在所有模型间共用”。
💡 学完这个模块你应该能:1) 看到任何 AI 工具集成就能说出它是不是 MCP · 2) 知道为什么 Cursor 的 “MCP integration” 是个大新闻 · 3) 想给自己的产品做 AI 集成时 · 第一反应是”写个 MCP server”而不是”对接 Claude API”。
A/B/C 三个模块解决的都是 “模型本身能做什么” · 已经讲完。
但你肯定有过这样的体验 —— 同样的 ChatGPT · 同样的 Claude · 不同人用 · 效果天壤之别。为什么?
因为模型从来不是看你”是谁” · 它只看见你给它的 context。给什么 · 怎么给 · 留多少预算 —— 这就是 Module D 要拆的功夫:Prompt 工程 · Context 工程 · RAG。这 3 个概念也是从”AI 用户”到”AI 工程师”的分水岭。
模块 D · 现代 AI 必须掌握的 3 个基本概念
承上启下 —— 模块 A/B/C 讲了模型本身的机制(next-token · function calling · MCP)。模块 D 讲怎么让模型在真实任务里”看见正确的东西” —— 这才是用 AI 的真功夫。3 个概念 · 一个比一个高维:
选择正确的「指令」。你怎么和模型说话 · 决定它怎么答。
准备正确的「整个上下文」。Prompt 只是其中一小部分 · 真正的杠杆在这里。
让 AI 动态「查正确的知识」。当 context 装不下所有资料时的工程解。
📝 ⊂ 📦 ⊃ 🔍 · 三者层层包含 · 互相补充 · 缺一就有死角
Level 1 · Prompt 工程 · 原理与应用
1.1 原理 · 为什么 prompt 是「第一杠杆」
回忆模块 A 那 5 步心跳:LLM 是 next-token predictor。它输出的每个 token · 都是基于当前 context 的 softmax 抽样。
你的 prompt 进入 context → 直接改变 softmax 的概率分布 → 直接改变输出。这就是为什么 prompt 工程有效 —— 它不是”心理学技巧”· 是数学影响。
1.2 5 个核心技术 · 每个都对应模型的某个机制
最朴素的形态 · 直接描述任务。清晰 · 具体 · 给约束。
把这段日志按"错误类型 / 时间 / 影响范围"
分类 · 输出 markdown 表格。让模型从例子里 in-context learn 格式 / 风格。比说 10 句解释更有效。
输入: "苹果" 输出: { 词性: "名词", 类: "水果" }
输入: "跑步" 输出: { 词性: "动词", 类: "运动" }
输入: "蓝色" 输出: ?让模型输出思考过程再答。它的 next-token prediction 是单步的 · 给它”草稿空间”准确率提升 10-40%。
问题: ...
先一步步分析 · 再给最终答案。在 system prompt 里设定身份 / 风格 / 不能做什么。约束越具体 · 行为越稳。
你是一个 senior security engineer。
回答时只列具体技术点 · 不说商业意义。
不熟的领域 · 直说"不知道"。让模型输出 JSON / XML / 指定 schema · 你的代码就能直接消费 —— 这是把 LLM 接入工程系统的关键技术。OpenAI / Anthropic 都原生支持 response_format: {type: "json_schema"}。
response_format: {
type: "json_schema",
schema: {
severity: { enum: ["low","med","high"] },
summary: { type: "string", maxLength: 200 },
affected: { type: "array", items: { type: "string" } }
}
}1.3 实战 · 同任务的 prompt 对比
✍️ prompt 好坏对比 · 任务一样 · 输出天壤之别
任务
写一个 ERC-20 转账函数
写个 transfer 函数
用 Solidity 0.8.20 写一个 ERC-20 transfer 函数: 要求: - 余额不足要 revert,错误信息 "insufficient balance" - 转账成功 emit Transfer(from, to, amount) 事件 - to 不能是 0x0 - 返回 bool(成功 true) 只给代码,不要解释。
点右边按钮看 AI 实际给出的代码差异
Level 2 · Context 工程 · 比 prompt 大一圈
2.1 原理 · prompt vs context 的区别
这是初学 AI 最容易混淆的概念。看动画一次说清:
动画揭示:用户写的「prompt」只是模型 context 的 1/5。完整 context 还包含 system prompt · tools schema · 对话历史 · 检索文档。Context engineering = 管整个包·prompt engineering 只是其中一段。Context 工程 ⊃ Prompt 工程。
2.2 Context 里到底装什么 · 真实场景的预算分配
光说 context “很大” 抽象。下面这个交互组件 · 用 200K tokens 的真实预算 · 看 4 种典型场景实际怎么填满:
agent 跑 10 轮后 · history + files 已占一半 · 这就是为什么 Cursor / Claude Code 需要做 context compaction(压缩历史)。
💡 关键洞察 · 你的「user_message」在任何场景里都只占 0.1-1%。99% 的 context 是被 system / tools / history / RAG 这些别的东西吃掉的 —— 这就是为什么”我 prompt 写得很好但 AI 表现还是差”。Prompt 不是问题 · context 是。
你用 Claude Code 调一个 auth bug · 跑了 4 小时 · 第 80 轮你忽然觉得它”变笨了” —— 改的代码越来越奇怪 · 之前明明搞懂的细节这会儿又问了一遍。
不是模型变笨 —— 它的 context 已经被 80 轮失败尝试塞满了 · 你刚才那句新指令前面横着 50K 的”我试过 X 但不行 · 又试 Y 又不行 …” · 关键的最新代码反而被挤到角落。这就是为什么 /compact 命令存在·把那 50K 失败历史压成 3K 总结 · 主战场马上恢复。
2.3 为什么 · context 越长 · 性能反而越差
刚才 2.2 的「长 agent 跑爆」场景里看到模型性能塌方。这不是工程偷懒 · 是模型架构本身的物理限制。下面把学界共识 + 4 个底层原因讲清楚。
🔬 现象 · “Lost in the Middle” 效应
Liu et al. 2023(Stanford NLP · Percy Liang 组)做了一个经典实验:把同一段「正确答案」分别藏在 context 的开头 · 中段 · 末尾 · 测模型能不能找到。结果是反直觉的 U 形曲线:
GPT-3.5 · Claude · 开源模型测都一样 · 关键信息在中段时 · 准确率比头尾低 20-30%
📄 Liu et al. (2023) · Lost in the Middle · How Language Models Use Long Contexts · Stanford & UW NLP
想象一本侦探小说有 30 章。凶手线索 ——
- 藏在 第 1 章 · 开篇就盯上 · 你大概率记得 (85%)
- 藏在 最后一章 · 高潮揭示 · 你也大概率记得 (75%)
- 偏偏藏在 第 15 章的脚注里 · 翻过去就忘 (50%)
LLM 看 context 是同一个直觉 —— 越靠中间 · 越容易被’翻过去’。这就是为什么 Anthropic 官方推荐”长文档放 system prompt 头部 · 用户问题永远放最后一条 message”。
🧠 4 个底层机制 · 为什么会发生
回忆模块 A · attention 用 softmax 归一化 —— 所有 token 的 attention 权重加起来 = 1。
context 从 8K → 200K · 每个 token 平均能分到的 attention 从 1/8000 → 1/200000 · 稀释了 25 倍。关键 token 和噪声 token 在「竞争」这同一个固定的 1 · 越长越难脱颖而出。
💡 直觉版 · 5 人会议时 · 你能给每人 20% 注意力 · 关键发言一句就听到。换成 200 人大会 · 平均每人 0.5% · 重要人讲话也变成背景音。LLM 是同样的物理约束。
模型实际「见过」的序列长度往往只有 4K-32K。所谓 200K · 是用 RoPE 旋转 / YaRN / ALiBi 外推硬撑出来的。
类比 · 你训练时跑过 100m · 让你跑 1km 还得保持原配速 · 不可能。2024 NVIDIA RULER benchmark 测出几乎所有模型的”有效 context”远小于 advertised。
RAG 场景实测:召回 5 段相关 chunks · 准确率 80%。同样 5 段相关 + 加 50 段「看着像但其实无关」的 distractor · 准确率掉到 55%。
模型会把 attention 「投资」到 distractor 上 · 因为它们语义相近。这就是为什么 re-ranking 在 RAG 里是必需的。
因果注意力(causal attention)让每个 token 只能看到自己之前的 token。生成位置越靠后 · 越偏向最近的 token(数学上:远 token 经历了更多次 softmax 归一化)。
这也是为什么模型常”遗忘”早期对话里的 instruction · 而记得刚才那句话 —— 这就是 U 形曲线右半部分”recovery”的来源。
📊 最新发现 · advertised context ≠ effective context
2024-2025 的多个 benchmark 持续证实:标称 200K / 1M context 的模型 · 在复杂推理场景下实际可用范围远低于宣传。
| 模型 | 标称 context | 实测有效 | 实/标比 |
|---|---|---|---|
| GPT-4 Turbo | 128K | ~64K | 50% |
| Claude 3.5 Sonnet | 200K | ~95K | 48% |
| Gemini 1.5 Pro | 1M / 2M | ~250K | 25% |
| Llama 3.1 70B | 128K | ~32K | 25% |
📄 来源 · NVIDIA RULER · Hsieh et al. “Same Task More Tokens” · Karpinska et al. NoCha · Databricks Long Context RAG (2024)
💡 工程启示 · 这就是 context engineering 存在的全部理由
上面的 4 个机制 · 直接对应 2.4 你将看到的 4 个核心技术:
- attention dilution → compaction · 压缩历史(减少 token 总数 · 让单 token 的 attention 浓度升高)
- positional 退化 + recency bias → strategic positioning · 关键 instruction 放头尾(避开 U 谷底)
- distractor 攻击 → RAG 里的 re-ranking(只塞最相关的 chunks · 不要”召回多就好”)
- attention dilution 的极端 → subagents(把子任务隔离到独立 context · 主 context 只看摘要)
一句话总结 · “为什么 context 越长越蠢” 不是 bug · 是 attention 机制 + 训练长度 + 因果掩码三件事的合力。Context 工程的所有技术 · 本质上都在对抗这三件事。
2.4 Context 工程的 4 个核心技术
Claude Code / Cursor 跑久了 · 自动总结前 50 轮 · 用一段摘要替换原始消息。原 30K 变 3K · 释放 27K 给后续工作。
Claude Code 的 /compact 命令 = 手动触发这个。
把”搜文件 / 跑测试 / 改代码”派给 subagent · 主 context 只看它们的总结。Claude Code 的 Agent tool · Cursor 的 background agents · 都是这个模式。
ChatGPT Memory · Claude Projects · Cursor Rules —— 把用户反复需要的偏好/项目背景抽出来·下次自动加进 context。
不再每次解释”我用 TypeScript 不用 JavaScript”。
直接对抗 2.3 的 U 曲线 —— 关键 instruction / 当前任务 / 输出格式约束放最前面或最末尾·而非中间。
Anthropic 官方:long documents 放 system prompt 头部 · 用户问题始终在最后一条 message。
2.5 实际应用 · Claude Code 怎么管 context
启示 · 一个工程级 AI 应用的”性能” · 80% 取决于 context 怎么组装 · 20% 取决于用了什么模型。
2.6 当 5 招都不够时 · 通向 RAG 的桥
把 2.5 的 5 招摆在一起看 · 它们各有专属的适用范围 · 也各有共同的盲点:
| 招 | 解决什么 | 局限 |
|---|---|---|
| CLAUDE.md | 项目级常驻知识 | 静态 · 太大就爆 system prompt |
| @-mentions | 用户精选文件 | 需要用户知道该 @ 哪个文件 |
| Agent tool | 子任务隔离 context | subagent 也得知道读哪个文件 |
| /compact | 压缩历史对话 | 不创造新内容 · 只能减 |
| MCP 缓存 | 减 schema 重复传输 | 不解决知识总量问题 |
共同盲点 · 这 5 招处理的全是「已经在 context 里」的东西 · 或者「用户/agent 主动知道该读什么」的东西。
但真实业务场景里的知识 · 几乎都是反过来的 ——
公司 500 页 PDF + 10,000 个 confluence 页面 + 3 年 Slack 历史 · 装不下 CLAUDE.md。
用户每次问的相关知识子集完全不同 · 没法事先决定该加载什么。
用户问之前 · 用户和 agent 都不知道该 @ 哪一页 / 读哪个文件。
这时候 5 招挨个失效:CLAUDE.md 装不下 · 用户不知道该 @ 谁 · subagent 不知道读哪个 · /compact 没东西可压 · MCP 缓存不管知识总量。
你需要的是「第 6 招」 —— 在用户问问题的那一刻 · 让系统自动从海量知识里搜出最相关的几小段 · 实时塞进 context。
RAG = context 选择算法的「自动化版本」
Level 2 的 5 招都是人工选该把什么塞进 context(用户 @-mention · agent 决策 · system prompt 设计)。RAG 是把这个「选什么进 context」的决策交给算法·而且是查询时刻的实时决策。
💡 看清楚了 —— RAG 不是某种新机制 · 它继续做的还是 context 工程那件事 · 只是把”选什么进 context”从手工变成了向量搜索。理解了这一点 · 下面所有 RAG 技术细节都只是这个核心算法的工程实现。
公司知识库 500 页文档 · 你问”去年 Q3 营收”。两种方式:
不用 RAG · 像找资料时把整个图书馆搬到你办公桌上 —— 500 页全堆桌前 · 你淹没在和”营收”无关的章节里 · 找不着北 · 而且 context 早就爆了。
用 RAG · 是先派图书管理员—— 她浏览全部 500 页 · 帮你拣出 3 段最相关的 · 只把这 3 段递到你桌前。你看见的全是”营收”相关 · 干净利落。
所有”对话你的 PDF / 公司知识库”产品 · 它们背后那个”图书管理员”·就是 RAG。
Level 3 · RAG · 让 AI 动态查正确的知识
3.1 原理 · 看动画
带着刚才的揭示再看:当知识总量 > context 预算 · 用向量相似度搜索做查询时刻的自动 context 选择 —— 具体怎么做?看一遍:
离线一次:文档 → 切片 → 向量化 → 存数据库。每次查询:问题也变成向量 → 找最近邻 chunks → 塞进 context 让 AI 看着真实资料回答。
把这个流程对应回上一节的揭示 —— “切片 + 向量化 + 存库” = 把知识预处理成可搜索形式·“找最近邻” = 查询时刻的自动 context 选择·“塞进 context” = 让模型用真实资料而非记忆回答。RAG 解决的”知识截止”和”私有数据”两个表面问题 · 其实都是同一个根本问题:当知识量超过 context · 怎么动态选。
3.2 RAG 的 4 个关键技术 · 实操层
切太小 → 上下文丢失。切太大 → 召回不准 + 浪费 token。
常用:300-800 token / chunk · 重叠 10-20% · 按语义边界(段落 / 章节)切。
用 embedding 模型(OpenAI text-embedding-3 · Cohere embed · BAAI bge)把每段 chunk 变成 1024-3072 维向量。
质量直接决定召回准不准。
只用向量召回会丢”精确关键词”。最佳实践:向量 + BM25 关键词检索结合 · 用 RRF 算法合并排名。
召回率提升 10-30%。
第 1 步召 50 个 chunks → 用 cross-encoder 模型(Cohere Rerank · BAAI bge-reranker)精排 → 取 top 5 给 LLM。
每个生产 RAG 都该有这一步。
3.3 真实问题 · 什么时候不该用 RAG
小数据(< 50 页) → 直接塞进 context · 别 RAG
低频访问(一次性查询) → 直接塞进 context
精确事实(数字 / 公式 / 引用) → 用 SQL 或 function call · 别 RAG
需要"全局推理" → RAG 切片会丢上下文 · 用 long-context 模型直接读
⚠️ RAG 不是万能的 —— 它适合”大语义库 · 模糊查询”的场景。其他场景往往更直接的方案更好。
三者协同 · 现代 AI app 的完整决策树
学完 module B/C/D · 你现在能区分何时用什么了 · 这是工程师才有的判断力:
- 数据是大量文本·语义模糊查询
- 查询模式:“找相关的”
- chunk-level 信息就够回答
- 不需要执行动作
- 需要精确结果(数据库查询 · API 调用)
- 需要执行动作(写文件 · 发邮件)
- schema 是结构化的
- 就当前 AI app 用 · 不分享
- 同样的工具多个 AI app 都要用
- 想跨 Claude / Cursor / ChatGPT 共用
- 第三方服务(GitHub · Slack)
- 希望加入生态 · 一次写多处用
三者关系 · MCP 是「Function Calling 的标准化包装」· RAG 是「Tool Call 的一种特例(query knowledge base)」。所有”AI 能做事”的产品最终都是:选模型 + prompt 工程 + context 工程 + 这三个组件的某种组合。
💡 学完模块 D 你应该能 —— 1) 看到一个 AI 应用 · 一眼说出它用了 prompt 工程的哪几招 2) 看到一个聊久了变笨的 AI · 能猜出是 context 没管好 3) 给自己的产品做 AI 集成时 · 第一反应不是”调 OpenAI API” · 而是”我的 context 该怎么组装”。
模块 E · Multi-Agent 协作 · 让每个 agent 看少一点
承上启下 —— Module D 把 1 个 agent 的 context 工程讲透了:怎么压缩 · 怎么位置 · 怎么避开 U 曲线。但即便如此 · 单 agent 上下文总有上限 · 越复杂的任务越容易撞墙。怎么破?让 1 个 agent 变成多个 · 每个看少一点。这就是 multi-agent 协作。
1 · 单 agent 的天花板 · 为什么需要多个
回忆 Module D 的两个铁律:
Liu et al. 2023 · U 曲线 · 关键信息在中段时准确率比头尾低 20-30%。
含义:一个 agent 揽下「搜索 + 阅读 + 推理 + 输出」全套·context 拥堵 · 中段信息被忽略。
所有 token 的 attention 加起来 = 1。context 从 8K → 200K · 每个 token 平均 attention 稀释 25 倍。
含义:什么都管的”全能 agent”·关键工具的 schema 和无关历史一起竞争注意力 · 决策质量塌方。
破局思路 · 既然「context 满 → 性能差」是物理限制 · 那就让每个 agent 都只看自己那一小块·让总系统的智能由「多 agent 的协作」涌现出来。
任何一家三甲医院 · 都不会让同一个医生包办:诊断 + 麻醉 + 主刀 + 术后护理 + 复诊。哪怕这个人理论上”全都懂”。
因为现代医学早就明白 —— 每个角色的 context 不同:外科盯术中风险 · 麻醉师盯生命体征 · 护士盯术后恢复 · 各看一摊 · 互不打扰 · 这样最稳。
Multi-agent 就是 把这条人类工程界 100 年的经验搬到 AI 世界 —— 把”一个全能选手”拆成”一队专精专家”。不是 AI 的新发明 · 是它学了人类怎么搞复杂系统。
一句话 · Multi-agent = context 工程从「单 agent 内」升级到「跨 agent 系统级」·所有 Module D 学的道理 · 在这里继续生效。
2 · 看动画 · 单 agent vs orchestrator-workers
下面这个动画把同一个任务 · 一边用单 agent · 一边拆给一个编排 + 4 个专精 worker · 视觉对比 context 占用和准确率 ——
数据来自 Anthropic Research System (2025) 的内部实测:同一类复杂研究任务 · multi-agent 比单 agent 准确率提升约 90%·但 token 消耗约 15×。结论:质量/成本严重不对称 · 复杂任务值得换 · 简单任务别瞎用。
3 · 5 种协作模式 · Anthropic 钦点
Anthropic 在 2024.12 的官方博客《Building effective agents》里把 multi-agent 系统拆成 5 种正交模式。它们是任何复杂 agent 系统的”乐高积木” —— 真实产品基本是这 5 种的组合:
step1 = llm("翻译: " + text)
step2 = llm("校对: " + step1)
step3 = llm("润色: " + step2)
return step3💡 Workflow vs Agent 的关键区分 —— Anthropic 把上面 5 种分成两大类:workflow(路径固定 · 适合可预测任务 · 前 3 种)和 agent(LLM 动态决策 · 适合开放任务 · 后 2 种)。能用 workflow 别用 agent·workflow 更可控 · 更便宜 · 更可调试。
4 · 为什么这样表现更好 · 用 Module D 的工具逐条解释
| Module D 的发现 | Multi-agent 怎么解决 |
|---|---|
| U 曲线 · 中段被忽略 | 每个 agent 的 context 变短 · 都落在 U 曲线左半部分 |
| attention 稀释 · 200K 每 token 1/200K | 每个 agent 40K · 每 token attention 浓度 ×5 |
| distractor 攻击 · 无关上下文抢注意 | 每个 agent 的 context 里只有相关信息 · 没有别的 worker 的中间产物 |
| recency bias · 远 token 被遗忘 | 每个 agent 的对话短 · 远 token 没那么远 |
本质·multi-agent 不是新魔法·它是把 Module D 的 4 条 context 物理规律用系统架构翻过来对抗 —— context 工程从「prompt 层」上升到「系统层」。
Anthropic 自己的实测 · 数字会说话
📄 Anthropic 工程博客 · How we built our multi-agent research system (2025)
5 · 主流框架 · 你能立刻上手的几个
Claude Code 内置的 Task 工具 · 直接 spawn subagent · 主 context 只看 subagent 总结。orchestrator-workers 模式。
你已经在用了 · 不用装。
把 multi-agent 表达成状态机 · 节点 = agent · 边 = 转移条件。最适合可视化·复杂分支。
langchain-ai/langgraph
用「角色」定义 agent:researcher · writer · editor。最易上手 + 最适合非工程师·写 30 行配置就能跑起来。
crewAIInc/crewAI
Microsoft Research 出品 · agent 通过对话协作 · 支持 human-in-the-loop。研究界用得多。
microsoft/autogen
OpenAI 2024.10 发布 · 极简 · 主打”agent handoff” —— 一个 agent 把对话权移交给另一个。
openai/swarm
把一整个”软件公司”作为 agent 集合:PM · 架构师 · 工程师 · QA。典型 SOP 化 workflow。
geekan/MetaGPT
6 · 案例研究 · Claude Code 的多 agent 协作
理论说得再多 · 不如看一个真实运行的系统。Claude Code 自己就是一个 multi-agent orchestrator · 而且把上面 5 种模式都用过。下面把它的协作方式完整解剖给你看 —— 这是你今天用的工具 · 不是抽象例子。
6.1 真实场景 · 一个开发任务的拆解
假设你给 Claude Code 发指令:“帮我加个 dark mode 切换到 settings 页”。它不会一口气把整个项目读完 + 一个 prompt 写完所有改动 —— 它会分工:
Explore 找相关文件 + code-architect 设计方案Edit / Write 实现具体改动code-reviewer:检查代码质量 · 拿到 “ship it” 或 “fix X”6.2 看动画 · Task tool 派出 subagent 的完整流程
下面这个动画把上面文字描述的 6 步全部演一遍 —— 包括最关键的 summary-only return 机制:
动画里看到 main 把 Explore 和 code-architect 并行派出·subagent 各自在独立 40K context 里工作 · 但只把总结返回 main·这就是 Claude Code 不爆 context 的核心。
6.3 5 大设计哲学 · 工程细节
把动画里看到的设计选择 · 拆成 5 条可落地的原则:
Explore 走的 grep / read 历史 · 不进 main 的 context。
code-architect 的思考过程 · main 也看不到。
对应 Module D · 直接对抗 attention 稀释 · 每个 agent 都在自己的 U 曲线左半部分。
内部 32K 跑完 · 返回的可能就 500-1500 tokens · 把”我读了 50 个文件 · 试了 3 种思路”压缩成「在 X 处用 Y 方法」。
这是最重要的一条·没有这个机制 · multi-agent 就退化成”context 总和更大的单 agent”。
Claude Code 一条消息里可以发 Task([“Explore”, “code-architect”]) · 两个 subagent 同时启动·节省 wall-clock 时间。
实战·复杂任务 main 通常一开始就 fan-out 3-5 个 探索类 subagent · 全部跑完再汇总。
Explore · 只给 Read / Grep / Glob · 不给 Edit · 防误改文件。
code-reviewer · 跑 opus · 因为审查需要最高推理。
code-simplifier · 跑 haiku · 因为机械重命名不需要复杂推理。
工具子集 + 模型选择 · 让每个 agent 都恰好够用·省钱 + 安全。
并行派 3 个 subagent 改不同文件 · 它们会互相覆盖·解决方法:Task(…, isolation: “worktree”) · Claude Code 给每个 subagent 创建独立 git worktree · 跑完才合并。
失败了 worktree 自动丢弃·不污染主分支。
这是 Claude Code 独有的工程细节 · 真做过并行 agent 系统的人都踩过文件冲突的坑 · 这是解药。
6.4 配置示例 · 自定义你自己的 subagent
Claude Code 不只有内置 subagent · 你可以在 .claude/agents/<name>.md 里定义自己的。下面是一个典型配置:
---
name: security-auditor
description: 审查代码安全性 · OWASP top 10 + 业务逻辑漏洞
tools: [Read, Grep, Glob, WebFetch] # 只读 · 不许改
model: opus # 需要深度推理
isolation: none # 不改文件 · 不需要 worktree
---
# 你的职责
你是一个 senior security engineer。审查给定的代码或 PR ·
找出可能的安全问题 · 但不要修复 · 只报告。
## 检查清单
1. SQL injection / NoSQL injection
2. XSS / CSRF / clickjacking
3. 鉴权 / 授权漏洞
4. 敏感信息泄露
5. 业务逻辑层面的滥用 (race · IDOR · ...)
## 输出格式
返回 JSON · 字段 = { severity, location, description, suggested_fix }定义好后 · 你(或者其他 agent)可以这样调用 ——
Task({
description: "Audit auth flow",
prompt: "审查 src/auth/ 里所有处理 token 的逻辑 · 重点看 race condition",
subagent_type: "security-auditor"
})6.5 决策 · 什么时候 main 自己干 · 什么时候派 subagent
不是所有事都要派出去 —— 滥用 subagent 会拖慢任务、增加 token 成本。Claude Code 内部的经验法则:
- 探索式·grep / find / 搜文档 · 大量 token 不需要进主 context
- 独立可验证·任务有明确的「成功 / 失败」信号
- 需要不同视角·审查 · 评估 · 安全分析
- 可并行·能和主任务的其他步骤同时跑
- 改 1-3 个文件的简单 edit·派出去不值得
- 需要和用户实时交互·subagent 无法问澄清
- 高度依赖最新 context·派出去会拿到过时信息
- 总 token 预算小·subagent 启动开销不划算
💡 核心判断 · 「这块工作的中间过程 · main 需要看到吗?」需要 → 主 agent 自己干 · 不需要 → 派 subagent 让它自己消化·只把结论还回来。
7 · 决策树 · 什么时候才该上 multi-agent?
Anthropic 在 “Building effective agents” 的核心建议 ——
能不上就别上。先试单 LLM 调用 · 再试 workflow(前 3 种模式 · 路径固定) · 实在不行才上 agent / multi-agent。复杂度的代价是真金白银的延迟 · token · 调试痛苦。
💰 数字是相对成本(token + 延迟 + 调试时间)。最常见错误:用 multi-agent 解决一个 workflow 就能搞定的问题 · 烧钱 + 慢 + 难调。
8 · 资源 · 想深挖去哪
- Building effective agents · 5 种模式的圣经
- How we built our multi-agent research system · 90% 提升的实测细节
- Anthropic Engineering Blog · 持续更新的工程实战
- Park et al. 2023 · Generative Agents · multi-agent 模拟开山作
- Wu et al. 2023 · AutoGen 论文
- Anthropic Customer Stories · multi-agent 真实生产案例
- 1. 读 Anthropic「Building effective agents」
- 2. 在 Claude Code 用
Task工具体感一次 spawn subagent - 3. 用 CrewAI 30 行配置跑一个 multi-agent demo
9 · 一句话总结模块 E
Module A:LLM = 5 步心跳
Module B:function calling + agent loop · LLM 能用工具 + 循环
Module C:MCP 把工具世界标准化
Module D:怎么管 1 个 agent 的 context
Module E:当 1 个不够 · 用 N 个 agent · 让每个看少一点
所有现代复杂 AI 系统(Claude Research · Cursor Composer · Devin · Manus · ChatGPT Pro Mode …)都是这 5 个模块拼出来的。没有新魔法 · 只有这些原理的不同组合。
💡 学完 Module E 你应该能 —— 1) 看到任何复杂 AI 系统 · 能拆解成 5 种 Anthropic 模式之一 2) 知道 multi-agent 不是免费午餐 · 用之前先问”workflow 行不行” 3) 自己设计 AI 产品时 · 第一句话不再是”给一个 prompt” · 而是”我的 agent 怎么分工”。
A 到 E 全是”造 AI 应用”的工程视角 —— 模型怎么算 · 工具怎么接 · 协议怎么定 · 上下文怎么管 · agent 怎么分工。
但 AI 时代真正的赢家·不止是会做工程的 —— 是会选对问题去做的人。Cursor 不是”AI 插件做得更好”赢了 GitHub Copilot · 是”我们要造一个生而 AI 的 IDE”这个判断赢了。
最后一个模块换个视角:从「怎么造」→「造什么」。看看在 AI 时代 · 哪些产品形态、哪些工作模式·正在被重新洗牌。
模块 F · AI 时代的产品和工作
故事钩子 —— 4 个 MIT 应届毕业生(Michael Truell · Sualeh Asif · Arvid Lunnemark · Aman Sanger · 2022 届)做了 Cursor · 不和微软的 GitHub Copilot 比”AI 插件做得好” · 而是说:“我们要造 AI 长成的 IDE” · 短短几年 · 母公司 Anysphere 估值达到数百亿美元区间·史上增长最快开发工具之一。
当前 AI 世界全景 · 模型 + 产品
Cursor 只是众多 AI 时代产品之一。在开始想”你做什么”之前 · 先把全景看一遍 —— 哪些模型值得用 · 哪些产品已经做出来 · 你的想法在什么坐标里。
🌍 AI 全景 · 模型
✓ 通用对话 · 编程 · 写作
💡 最广为人知 · 生态最大
✓ 编程 · 长文档 · 推理
💡 代码能力领先 · 安全性强
✓ 多模态 · 长 context · 搜索
💡 context 最大(2M+ token)· 集成 Google
✓ 中文场景 · 国内市场
💡 中国用户数第一 · 字节生态绑定
✓ 自部署 · 隐私场景
💡 开源最强 · 可自由微调
✓ 编程 · 数学 · 通用
💡 中国开源黑马 · 性价比极高
✓ 中文场景 · 通用
💡 中文最强开源 · 多尺寸可选
✓ 数学 · 复杂逻辑 · 科研
💡 思考很久再答 · 慢但准
✓ 复杂代码 · 长链推理
💡 可控的"思考时长"
✓ 数学 · 代码推理
💡 开源推理模型 · 比肩 o1 · 引爆全球
✓ 艺术创作 · 概念图
💡 美学水准最高 · Discord 起家
✓ 通用绘图 · 指令理解
💡 集成 ChatGPT · 指令最听话
✓ 写实 · 自部署
💡 开源最强 · SD3 团队出走作
✓ 中文场景 · 国内 C 端
💡 字节系国民级图像产品 · 抖音同源
✓ 电影感 · 长时长
💡 第一波"AI 视频质感"的引爆者
✓ 高保真 · 同步音轨
💡 集成 Gemini · 首批支持视频+音频同步
✓ 影视后期 · 创作者
💡 AI 视频老兵 · 工具链最完整
✓ 电商 · 短视频 · 剪映集成
💡 字节火山引擎旗舰 · 长镜头一镜到底
✓ 中文创意 · 物理仿真
💡 中国市场份额第一 · 快手出品
✓ 人物动作 · 表情细节
💡 物理建模强 · 人物连贯性好
✓ 自部署 · 大模型微调
💡 13B 参数开源 · 唯一开源旗舰
✓ 电商素材 · 商品视频
💡 阿里电商场景深度定制
✓ 语音克隆 · 多语种配音
💡 业界领先的拟人语音
✓ 歌曲生成
💡 一句话生成完整歌曲
✓ 高质量音乐
💡 Suno 最强对手 · 音乐人评价高
你的想法适合 AI 吗 · 4 特征自测
🎯 AI-shaped problem · 4 特征自测
⚡ 快速试一个想法
📝 正在评估
(自定义)
特征 1
输出有"模糊性"吗?
有没有唯一正确答案?
特征 2
验证比生成便宜吗?
你能快速判断 AI 输出好不好吗?
特征 3
错误可以恢复吗?
出错了能重来 / 撤销吗?
特征 4
用户更要"快"还是"准"?
速度 vs 精度 用户更看重哪个?
AI-first vs AI-bolted-on · 一个关键二分
没有 AI 就根本不存在的产品。AI 是灵魂 · 不是装饰。
老产品塞一个 AI 按钮。AI 是装饰 · 不用也行 · 长期被 AI-first 取代。
AI 时代工作的 3 大转变
你的价值不再是”写” · 是判断
70% 时间在给 AI 喂资料
一个人指挥多个 AI 同时干活
🎯 期末 · 你的 AI 时代行动表
概念自测 · 你都懂了吗
① 解释 token 是什么 · 为什么 AI 数不出 strawberry 的 r
② 什么是 hallucination · 为什么会发生
③ Function Calling 解决了什么问题
④ Agent Loop 的 4 个步骤是什么
⑤ 推理模型和普通模型有什么不同
⑥ AI-first 和 AI-bolted-on 的区别
⑦ RAG 是什么 · 它解决什么问题
⑧ AI 时代工作的 3 大转变是什么
你的行动表
🎬 收尾 · 你建立了 AI 时代的全景认知
L7 · 实战 · 真正用 AI 写代码
Karpathy 自治度滑块 · Anthropic workflow→agent 阶梯 · Context 工程深入
L8 · 造工具 · 你也成为故事的一部分
自己写 MCP server · 自己写 Skills · 期末项目展示