AI 应用系统:编排层 — 从框架到协议
网关层确保 token 稳定、便宜地进入系统。token 进来之后呢?如果只有一个 Agent 在做一件事,不需要编排层。但当有了多个不同专长的 Agent,需要它们协作完成一个任务时,编排层就出现了。
套用四层比喻:模型层是工厂,网关层是批发商,编排层是消费 token 的公司,终端层是卖给消费者的成品。这篇文章讨论怎么"开公司"——但 2026 年的答案跟两年前完全不同。
编排层的定义
回到第一篇的定义:编排层协调多个不同能力的 Agent,打通跨 Agent 上下文,把任务拆解后分发到对应 Agent 并汇聚结果。它不是单次模型调用,也不是固定步骤的链式调用。
如果把编排层比作一家公司,那么:
- 每个 Agent 是公司里的一个员工,有各自的专长和工具
- 任务拆解和分发是管理层——收到一个项目,判断需要哪些人、谁来做哪部分、结果怎么拼
- 跨 Agent 上下文是公司的信息流通——不需要把同一个简报发给每个人重读一遍
范式转移:从框架到协议
过去两年编排层的讨论集中在"选哪个框架"上:写代码还是拖流程?图状态机还是角色扮演 Agent?但这个争论在 2026 年已经没有意义了。
框架是公司内部的 ERP 系统。协议是公司之间的贸易协定。
如果 Agent 只在公司内部协作,框架能搞定。但现实中,Agent 可能需要调用外部搜索引擎、读取第三方数据库、或者跟合作伙伴的 Agent 协同。框架管不到这些边界。协议可以。
2026 年的编排层正在被两个开放协议重新定义:MCP 和 A2A。它们回答了两个根本问题:
| 问题 | 协议 | 角色 | 推出方 |
|---|---|---|---|
| Agent 怎么接入外部工具和数据? | MCP | Agent ↔ 工具 | Anthropic |
| Agent 之间怎么互相通信? | A2A | Agent ↔ Agent | Google,Linux Foundation |
这两个协议构成了编排层的"通信基础设施"。跟框架不同,协议不绑定语言、不绑定厂商、不绑定 Agent 实现。
MCP:同一个插座
MCP(Model Context Protocol)是 Anthropic 在 2024 年 11 月开源的标准,它解决了 Agent 和外部世界之间的连接问题。Anthropic 把 MCP 比作"AI 的 USB-C"——不管什么设备,插同一个口就能通。
在 MCP 出现之前,每个模型提供商、每个工具都有各自的接入方式。Agent 想用 Google Drive 要用 Google 的 API,想用 GitHub 要用 GitHub 的 API,想查数据库要单独写连接。这个集成工作跟 Agent 的数量和工具的数量成倍增长。
MCP 做了一件事:把所有外部系统抽象成统一的 MCP Server 接口。Agent 作为 MCP Client 连接任意 MCP Server,不再关心背后的系统是什么。工具开发者只需要实现一次 MCP Server,所有 MCP 兼容的 Agent 都能直接调用。
市场上支持 MCP 的产品已经不是个位数了:Claude Desktop、ChatGPT、VS Code、Cursor、Replit、Sourcegraph 都内置了 MCP 客户端。MCP 的生态已经从"要不要用"进入了"怎么用"的阶段。
A2A:同一个电话线
如果说 MCP 解决了 Agent 和工具之间的连接,A2A(Agent-to-Agent Protocol)解决的是 Agent 和 Agent 之间的通信。
A2A 是 Google 发起、Linux Foundation 治理的开放协议,2026 年 5 月发布了 v1.0.1。核心设计思路是:Agent 之间不应该暴露内部状态、记忆、工具来实现协作。它们只需要知道对方的"能力卡片"(Agent Card)——类似公司里每个人对外声明自己擅长什么,而不需要知道用的是什么 IDE、配置了什么环境。
A2A 的机制:
- Agent Card:每个 Agent 公开声明自己的能力、支持的交互方式(文本/表单/媒体)、连接信息
- 任务生命周期管理:支持同步请求、流式响应(SSE)、异步推送通知。长任务不需要阻塞等待
- 不透明性:Agent 之间不需要共享内部记忆、prompt、工具配置
举个例子:一个通过 Agent SDK 实现的写手 Agent 和另一个不同框架的审校 Agent,只要都实现了 A2A,就能在一个任务里协作——写手产出草稿后委托给审校,审校返回修改意见,写手再改。两者不需要知道对方"内部"怎么实现的。
A2A 已经提供 Python、Go、JavaScript、Java、.NET 五种语言的 SDK。任何框架只要能接入 A2A,就能跟其他 A2A 兼容的 Agent 合作。
协议和框架的关系
协议出现之后,框架的价值在哪里?
框架仍然是编排层的实现手段,但不再是锁定的入口。一个 Agent 可以基于框架 A 实现,另一个基于框架 B,第三个是自己写的纯 Python 循环——但只要都支持 A2A 和 MCP,它们就能在一个任务里协作。
这意味着三件事:
- 框架变得可替换了。选框架 A 还是框架 B 变成一个局部决策,不影响全局架构。换框架不需要重写其他 Agent。
- 编排的逻辑上移。不再是"在框架内部安排 Agent 的执行顺序",而是"定义 Agent 之间如何通过 A2A 交换任务和结果"。编排从一个编码问题变成了一个协议设计问题。
- 工具的接入成本趋近于零。新的外部能力以 MCP Server 形式接入,Agent 无需改动。
用公司的比喻来总结:以前每开一家子公司,都要自己设计组织架构软件。现在所有公司的员工都讲同一种"工作语言"(A2A),所有供应商都接同一个接口(MCP)。开公司变得更快,员工可以来自不同的人才市场,组织架构软件(框架)换成什么都行。
什么时候需要编排层
这个判断没有因为协议的出现而改变。回到 Anthropic 在 Building Effective Agents 中的核心建议:找到最简单的解决方案,只在必要时增加复杂度。
当满足以下三个条件时,才需要编排层:
- 多个不同专长的 Agent 需要协作(不是一个 Agent 反复调工具)
- 任务结构不可预知(不知道需要多少步、多少 Agent)
- 跨 Agent 需要共享上下文(不是一个接一个传递结果)
如果现在的场景是:
- 单个 Agent 用多种工具完成任务 → 不需要编排层,终端层就够
- 固定步骤的链式调用 → Anthropic 说的 prompt chaining 就够了
- 按任务类型路由到不同模型 → 网关层的路由功能就够了
编排层不是架构进化的必然终点。大多数项目永远不需要它。
编排层的新陷阱
协议解决了一些老问题,也引入了一些新问题:
协议不等于编排。A2A 让 Agent 能互相通信,但它不帮助设计任务拆解逻辑。Agent 之间"能说话"和"能协作做事"是两回事。协议是基础设施,编排是业务逻辑,后者还是需要写。
协议版本管理。MCP 和 A2A 都在快速迭代。MCP 的规格和 SDK 每几个月就有破坏性变更。生产环境里如果三个 Agent 各自绑定了不同版本的协议,兼容性会是一个持续的工作。
过早采用。MCP 和 A2A 已经是事实标准,但并不是所有场景都需要它们。如果只有两个 Agent 在同一个 Python 进程里协作,直接调函数比走 A2A 网络协议更快、更简单。协议多了一层网络开销和序列化成本,在不需要跨进程、跨语言、跨系统的场景里反而是一种过度设计。
团队的学习成本。用框架的 API 写一个 Agent 门槛不高。但要理解 Agent Card 的设计、任务生命周期、A2A 的 push notification 机制、MCP Server 的实现,需要额外的学习。这笔投入在大规模、多团队协作时有回报,在小项目里不划算。
总结
编排层是四层架构里最容易被"建了不该建"的一层。2026 年,判断标准不是"我该用哪个框架",而是:
- 我真的有多个不同专长的 Agent 需要协作吗?
- 如果是,这些 Agent 是否通过 MCP 接入工具、通过 A2A 互相通信?
- 如果不是,我还不需要编排层。
参考
- A2A Protocol — Linux Foundation 治理,v1.0.1
- Model Context Protocol — Anthropic 开源标准
- Building Effective Agents — Anthropic, 2024