TECH NOTE
2774 字 14 分钟 系列 22 / 22多 Agent 官方文档中文精讲(LangChain · Multi-agent)
ON THIS PAGE / 目录8 节
一句话讲透:把 LangChain 官方文档 Multi-agent 板块的 10 篇英文文档(6 篇概念 + 4 篇实战教程),整理成 12 篇中文图文笔记 + 2 篇实测附录 + 12 张官方配图。目标很具体:读完能回答”我这个需求该用哪种多 Agent 模式、为什么、代价多少”,而不是背下五个名词。
怎么读(推荐顺序)
第一步:建立判断力(半天) 01 为什么需要多 Agent ──▶ 02 五种模式总览与选型 ──▶ 03 性能对比(调用次数与 Token) │第二步:按需深入某一模式(每篇 20~30 分钟) │ 04 Subagents 05 Handoffs 06 Skills 07 Router 08 Custom workflow │第三步:看别人怎么落地(想抄作业时读) ▼ 09 个人助理(Subagents) 10 客服工单(Handoffs) 11 SQL 助手(Skills) 12 多源知识库(Router) │第四步:换成 Deep Agents 落地(API 与工程实现) ▼ deepagents/01 静态子智能体 ──▶ deepagents/03 异步子智能体 ──▶ deepagents/02 动态子智能体 │第五步(可选):读实测附录,把"官方数字/机制"钉死 13 为什么是 4 次调用(抓包) 14 手写 Tool 包装 vs Deep Agents 内置 subagents(源码 + 抓包)- 只想快速选型:读
01→02→03就够,三篇加起来大约一小时。 - 已经知道要用哪种模式:直接跳到
04–08里对应的那篇,每篇都是”说人话 + 代码 + 决策表”。 - 准备动手写:
09–12是官方教程的提炼版(架构思路 + 关键代码 + 踩坑点),完整长代码指向原文。 - 决定用 Deep Agents 落地:进
deepagents/子板块——那里是同一套模式的 API、默认值与坑(01 静态子智能体 → 03 异步 → 02 动态编排)。 - 不信”官方说 N 次调用”:看
13、14两篇实测附录,里面有原始 HTTP 报文与源码证据。
文件索引
| 文件 | 讲什么 | 对应原文 |
|---|---|---|
| 01 为什么需要多 Agent | 把”我要多 Agent”翻译成三种真实诉求;什么时候不该上多 Agent | Multi-agent(Why multi-agent?) |
| 02 五种模式总览与选型 | 五种模式认脸 + 四维能力打分 + 中文决策树(含 4 张官方示意图) | Multi-agent(Patterns / Choosing) |
| 03 性能对比:调用次数与 Token | 三个场景的完整数字账(一次性 / 重复请求 / 多领域),含 8 张官方配图 + 重复请求场景的 4 张两轮时序图(谁被重复付钱) | Multi-agent(Performance comparison) |
| 04 Subagents 子智能体 | 主管把子智能体当工具;同步/异步、两种工具模式、三处上下文阀门 | subagents |
| 05 Handoffs 交接 | 状态驱动行为切换;单 Agent + 中间件 vs 多 Agent 子图 | handoffs |
| 06 Skills 技能 | 一个 Agent + 按需加载的”说明书”;渐进式披露的 token 账 | skills |
| 07 Router 路由 | 先分诊、并行分发(Command / Send)、再汇总;无状态 vs 有状态 | router |
| 08 Custom workflow 自定义工作流 | 用 LangGraph 自己画图;混合确定性逻辑与 Agent;RAG 三类节点实例 | custom-workflow |
| 09 实战:用 Subagents 搭个人助理 | 主管 + 日历/邮件子智能体;human-in-the-loop 审核 | subagents-personal-assistant |
| 10 实战:用 Handoffs 搭客服工单流转 | 保修 → 分类 → 方案的状态机式流转;退回上一步 | handoffs-customer-support |
| 11 实战:用 Skills 搭 SQL 助手 | 按需加载表结构与业务规则;用 state 加只读约束 | skills-sql-assistant |
| 12 实战:用 Router 搭多源知识库 | GitHub / Notion / Slack 并行检索 + Send 扇出 + reducer 汇总 | router-knowledge-base |
| 13 附录:Subagents 为什么是 4 次调用(抓包实录) | DeepSeek + mitmproxy 真跑一遍:4 次调用各自看到什么、原始报文、第 4 次买到什么 | 03 篇的实测附录(脚本与抓包在 demo/) |
| 14 附录:手写 Tool 包装 vs Deep Agents 内置 subagents | 源码 + 抓包对照:create_deep_agent(subagents=...) 到底变成了什么(一个 task 工具 + 注册表),和手写 @tool 包装的 9 项差异 | 04 篇「单一派发工具」的实测对照 |
| 15 附录:重复请求占比怎么统计 | 这个数没有现成字段:先定义”什么叫重复”,三种取数口径(业务主键 / 域标签 / 离线分类)、可套用的 SQL 模板、该报告的 5 个数、换算成钱与延迟、6 个坑 | 03 篇”量三件事”的方法论补充 |
| 16 主 Agent 的任务拆分与串并行决策 | 直接回答两件事:拆分怎么做(两级拆分 + 子任务契约 + 模型/代码分工)、串并行怎么决定(数据依赖为主判据 + 五步判定流程 + 六条判据 + 完整例子 + 落地要点与四个观测指标) | 04/07/deepagents/02 的落地视角总结 |
说明:官方总览页内容量大(含 12 张配图),本笔记拆成 01 / 02 / 03 三篇以便阅读;对应关系见上表。
13–16不是官方文档:13/14是实测附录(验证调用次数、对照工具模式),15是方法论附录(重复请求占比怎么量),16是任务拆分与串并行的落地说明。
子板块:Deep Agents 多 Agent 文档(deepagents/)
上面 01–12 讲的是 LangChain 官方 Multi-agent 板块(模式与选型);Deep Agents 也有一套多 Agent 文档,讲的是同一套模式在它里面的 API 与工程实现。三篇笔记收在子目录里,编号独立从 01 开始:
| 文件 | 一句话 | 对应原文 |
|---|---|---|
| deepagents/README | 子板块导读:与上层笔记的分工、三者怎么选、本机 deepagents 0.7.5 可用性矩阵 | — |
| deepagents/01 Subagents | 静态子智能体:SubAgent 全字段(含 tools/skills/permissions 的继承 vs 覆盖)、默认 general-purpose、fork、流式、追踪、结构化输出 | deepagents/subagents |
| deepagents/02 Dynamic subagents | 动态编排:用代码(解释器里的 task())代替模型一次次派活——分类分发 / 扇出汇总 / 对抗验证 / 生成筛选 / 锦标赛 / 循环到达标 | deepagents/dynamic-subagents |
| deepagents/03 Async subagents | 后台子智能体:启动 / 轮询 / 中途干预 / 取消(五个工具)、生命周期、ASGI vs HTTP 传输、部署拓扑、排障 | deepagents/async-subagents |
一句话分工:上层教你怎么选模式,子板块教你在 Deep Agents 里怎么用(字段、默认值、坑、版本门控)。
术语中英对照(全文统一)
| 英文 | 本笔记译法 | 备注 |
|---|---|---|
| Multi-agent | 多 Agent / 多智能体 | 保持”Agent”不译,符合国内习惯 |
| Supervisor | 主管(Agent) | Subagents 模式里的中心 Agent;也译”监督者” |
| Subagent | 子智能体 / 子 Agent | 被包装成工具、供主管调用 |
| Handoff | 交接 | 用工具调用转移控制权(OpenAI 提出的术语) |
| Skill | 技能 | 提示词驱动的专长,按需加载 |
| Router | 路由 / 分诊 | 一次分类步骤 + 分发 |
| Custom workflow | 自定义工作流 | 用 LangGraph 自己画图 |
| Vertical | 垂直领域 | 各自需要独立 Agent 的独立知识域 |
| Context engineering | 上下文工程 | 决定”每个 Agent 看到什么” |
| Progressive disclosure | 渐进式披露 | 用到才加载,省上下文 |
| Stateless / Stateful | 无状态 / 有状态 | 调用之间是否保留记忆 |
| Reducer | 归并函数 | 并行分支结果如何合并(LangGraph) |
Send | 并行分发(扇出) | LangGraph API,运行时动态生成分支 |
Command | 状态更新 / 跳转指令 | LangGraph API,update 改状态、goto 跳节点 |
| Tool | 工具 | 保持”工具” |
| Middleware | 中间件 | 拦截并改写模型调用配置 |
| Checkpoint / Checkpointer | 检查点 / 检查点存储器 | 让状态跨回合、跨进程存活 |
| Interrupt | 中断 | 暂停执行、向用户取信息或要审批 |
| Human-in-the-loop | 人工介入 | 人在关键节点确认 |
| Model calls | 模型调用次数 | 03 篇的核心指标之一 |
| Tokens processed | 处理的 Token 总量 | 03 篇的另一个核心指标 |
官方配图清单(images/,共 12 张)
图片均为官方原图(图内标签是英文),笔记里配了中文图注与”这张图在说什么”的解读。
| 文件 | 出处 | 用在 |
|---|---|---|
pattern-subagents.png | 总览页「Visual overview」 | 02 |
pattern-handoffs.png | 同上 | 02 |
pattern-skills.png | 同上 | 02 |
pattern-router.png | 同上 | 02 |
oneshot-subagents.png | 总览页「One-shot request」 | 03 |
oneshot-handoffs.png | 同上 | 03 |
oneshot-skills.png | 同上 | 03 |
oneshot-router.png | 同上 | 03 |
multidomain-subagents.png | 总览页「Multi-domain」 | 03 |
multidomain-handoffs.png | 同上 | 03 |
multidomain-skills.png | 同上 | 03 |
multidomain-router.png | 同上 | 03、12 |
除这些官方位图外,笔记里的流程图/时序图都是可编辑的 Mermaid(Obsidian、GitHub、VS Code 都能直接渲染)或 ASCII 图。
来源清单(10 篇原文)
| # | 原文标题 | URL |
|---|---|---|
| 1 | Multi-agent(总览) | https://docs.langchain.com/oss/python/langchain/multi-agent |
| 2 | Subagents | https://docs.langchain.com/oss/python/langchain/multi-agent/subagents |
| 3 | Handoffs | https://docs.langchain.com/oss/python/langchain/multi-agent/handoffs |
| 4 | Skills | https://docs.langchain.com/oss/python/langchain/multi-agent/skills |
| 5 | Router | https://docs.langchain.com/oss/python/langchain/multi-agent/router |
| 6 | Custom workflow | https://docs.langchain.com/oss/python/langchain/multi-agent/custom-workflow |
| 7 | Build a personal assistant with subagents | https://docs.langchain.com/oss/python/langchain/multi-agent/subagents-personal-assistant |
| 8 | Build customer support with handoffs | https://docs.langchain.com/oss/python/langchain/multi-agent/handoffs-customer-support |
| 9 | Build a SQL assistant with on-demand skills | https://docs.langchain.com/oss/python/langchain/multi-agent/skills-sql-assistant |
| 10 | Build a multi-source knowledge base with routing | https://docs.langchain.com/oss/python/langchain/multi-agent/router-knowledge-base |
延伸阅读(同源、不在本板块路径下):Deep Agents 内置了 subagents / skills / planning / 虚拟文件系统 / 上下文管理,想少写编排代码可以直接用它——Deep Agents 概览 | Subagents | Skills。另外 langgraph-supervisor 包已不再维护,官方给了迁移指南。
加工说明(哪些是原文、哪些是笔记加的)
为了不误导读者,这里把改动说清楚:
- 结构:概念篇保留原文全部小节(Key characteristics / When to use / Basic implementation / 各设计决策 / Context engineering / Checkpointing 等)并逐节讲解;官方总览页拆成
01/02/03三篇。 - 代码:概念篇的短示例整段保留,只把注释译成中文、删掉文档站特有的渲染标记(围栏上的主题参数、代码高亮指令注释等);实战篇(
09–12)采用提炼式精讲——每步给 10–30 行关键代码骨架,上千行的完整示例只给原文链接,不整段复制。 - 补充解读:凡标注 🧭 补充解读(非原文) 的段落,都是本笔记结合工程经验加的(类比、取舍建议、成本直觉、与 Deep Agents 的关系等),不是官方说法。
- 原文瑕疵:发现原文笔误或前后不一致时,保留原样并标注 ⚠️ 原文如此,不改写官方代码。
- 图片:官方位图为原图直存(图内英文标签未改),中文图注用于补齐语义;自绘的流程图/时序图使用 Mermaid(节点标签中文化,关键术语中英并列)与 ASCII 图。
- 未验证的部分:笔记未在本机实际运行任何示例代码,因此不承诺可直接跑通;模型名(如
gpt-5.5、gemini-3.6-flash)沿用原文,落地时请替换为你可用的模型。 - 以原文为准:文档会持续更新,遇到冲突请以官方文档为最终依据。
学完自测(能答上来就算过关)
- “我要上多 Agent”这句话背后,通常对应哪三种真实诉求?
- 五种模式里,哪一个支持”用户直接跟专家对话”?哪一个不支持多跳?
- 一次性请求里,Subagents 比 Handoffs 多出来的那一次调用花在哪?值不值?
- 为什么多领域任务里 Skills 只调 3 次却最贵?这个结论对你的选型意味着什么?
- Subagents 的”三处上下文阀门”分别是什么?各自影响谁?
- Handoffs 的交接工具里,为什么必须补一条
ToolMessage? - Router 用
Send扇出后,结果为什么必须靠 reducer 合并? - 什么情况下应该放弃”让模型决定路由”,改用 Custom workflow?
答案都在对应篇章里;
03篇的数字表建议反复看两遍——选型的一半功力在那张表上。
相邻主题:Agent 应用开发 | 相关主题:多 Agent 架构与业务流程梳理