多 Agent 沟通与交互:从底层协议到进程线程

多 Agent 沟通与交互:从底层协议到进程线程

目录

  1. 三种沟通模式
  2. 底层核心技术
  3. 与多进程/多线程的关系

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 是逻辑架构,多进程/多线程是执行手段,二者正交,按需组合。

posted @ 2026-10-13 16:17  若-飞  阅读(9)  评论(0)    收藏  举报