多 Agent 沟通与交互:从底层协议到进程线程
多 Agent 沟通与交互:从底层协议到进程线程
目录
- 三种沟通模式
- 底层核心技术
- 与多进程/多线程的关系
1. 三种沟通模式
多 Agent 系统里,Agent 之间怎么“说话”,主流有三种模式。
1.1 工具调用式 Handoff
思路:把每个执行 Agent 包装成一个“工具”,主管 Agent 像调用普通 Function Calling 一样调用它。
- 流程:主管决策 → 调用
call_xxx_agent工具 → 执行 Agent 被触发 → 返回结果给主管。 - 特点:控制流显式转移,主管拥有全局视野,避免执行 Agent 之间直接耦合。
- 适用:LangGraph 官方推荐,适合有明确层级的主管-执行架构。
1.2 共享状态通信
思路:所有 Agent 读写同一个共享 State,通过状态变化隐式协作。
- 流程:主管写入
next_agent和任务指令 → 执行 Agent 读取并执行 → 结果写回task_results→ 主管读取汇总。 - 特点:隐式沟通,天然支持并行——多个执行 Agent 可同时写不同字段,最后由主管合并。
- 适用:需要并行执行、结果汇总的场景。
1.3 标准化协议(MCP / A2A)
当 Agent 需要跨进程、跨系统通信时,必须用标准协议。
- MCP(Model Context Protocol):解决 Agent ↔ 工具/数据源 的垂直连接。底层是 JSON-RPC 2.0 over HTTP POST + 按需 SSE 流,2026 规范趋向无状态,便于水平扩展。
- A2A(Agent-to-Agent):解决 Agent ↔ Agent 的水平协作。底层是 JSON-RPC 2.0 over HTTP(S) / gRPC,支持 SSE 流式,明确支持有状态长周期任务。
- 关系:MCP 管工具访问,A2A 管 Agent 间任务委托,二者互补。
2. 底层核心技术
2.1 进程内:Pregel 消息传递
Handoff 和共享状态不涉及网络协议,它们发生在同一个 LangGraph 应用进程内。
- 引擎:LangGraph 基于 Google Pregel 思想,将工作流建模为图,节点间通过 Channel(通道) 通信。
- 机制:节点执行完毕 → 向通道写入消息(更新状态)→ Pregel 路由到下游节点。
- 数据:Python 对象(字典),内存传递,无网络开销。
- Handoff 本质:一个返回
Command对象的特殊工具,Command包含状态更新和ToolMessage,触发路由。
2.2 跨进程:HTTP / SSE / WebSocket
标准化协议依赖以下网络技术:
| 技术 | 方向 | 特点 | 用途 |
|---|---|---|---|
| HTTP | 单向请求-响应 | 简单通用,无状态 | A2A/MCP 主要传输载体 |
| SSE | 服务器→客户端单向流 | 基于 HTTP,轻量 | 流式返回 LLM 生成内容 |
| WebSocket | 全双工 | 实时双向,协议复杂 | 需要双向实时交互的场景 |
- MCP:JSON-RPC 2.0 over HTTP POST,服务器按需返回单个 JSON 或限定于该请求的 SSE 流。
- A2A:JSON-RPC 2.0 over HTTP(S)(主要)或 gRPC,流式场景用 SSE 包装事件。
2.3 数据格式:JSON-RPC 2.0
MCP 和 A2A 都采用 JSON-RPC 2.0 作为消息编码格式。请求、响应、通知都遵循统一结构,保证跨系统互操作。
3. 与多进程/多线程的关系
3.1 概念区分
- 多 Agent:应用架构层,关心“谁来做、做什么、怎么协作、如何决策”。
- 多进程/多线程:操作系统/运行时层,关心“怎么并发执行、资源怎么隔离、CPU 怎么调度”。
- 关系:正交且可组合。多 Agent 可以映射到协程、线程、进程或微服务,也可以单线程顺序执行。
3.2 组合方式
| 场景 | 底层执行手段 |
|---|---|
| 同一进程内、I/O 密集(调 LLM、查库) | asyncio 协程或线程池 |
| 同一进程内、CPU 密集 | 多进程,绕开 GIL |
| 跨机器、跨服务 | 每个 Agent 独立部署为进程/容器,通过 A2A/HTTP/gRPC 通信 |
| 共享状态协作 | LangGraph 图内 Pregel 通道,进程内消息传递 |
3.3 关键结论
- LangGraph 的节点不是操作系统线程,而是 Pregel 引擎调度的逻辑节点。
- 多 Agent 的“多”体现在角色分工和协作逻辑,不是线程数量。
- 一个 Supervisor 调度三个执行 Agent,完全可以在单个 FastAPI 进程内用异步并发跑完。
- 先设计协作逻辑(Handoff / 共享状态 / A2A),再根据负载类型选择底层并发方式。
总结:多 Agent 沟通的底层,进程内靠 Pregel 消息传递,跨进程靠 HTTP/SSE/JSON-RPC。多 Agent 是逻辑架构,多进程/多线程是执行手段,二者正交,按需组合。

浙公网安备 33010602011771号