每日学习笔记 · 8/10 — Agent 异步架构与编排

5595 字
28 分钟
每日学习笔记 · 8/10 — Agent 异步架构与编排

每日学习笔记 · 8/10 — Agent 异步架构与编排#

当 Agent 走进生产环境,“调用即返回”的函数式思维就失效了。 今天的笔记把异步架构、协议、调度、可靠性一次性打通。


一、为什么 Agent 必须异步?#

Agent 系统的特点决定了它不能像普通函数那样”调用即返回”。一次用户请求往往要拆解为:理解意图 → 规划任务 → 拆分子任务 → 并发调用工具/大模型 → 等待结果 → 检查依赖 → 汇总上下文 → 生成答复。整个过程涉及大量长耗时、不确定、可能失败的操作。

问题具体表现异步架构的作用
长耗时调用LLM、Web Search、代码执行持续数秒到数分钟避免阻塞主线程,后台继续执行
多任务并发一个请求拆为多个并行子任务提升吞吐和响应速度
依赖编排部分任务须等前置任务完成使用 DAG / 状态机表达依赖
失败恢复模型超时、工具失败、worker 宕机持久化状态 + 重试 + 死信恢复
用户体验用户希望看到进度而非长时间无响应状态接口、SSE、WebSocket 推送
系统扩展单进程无法承载大量并发队列、worker pool、分布式调度

二、七类核心组件#

Agent 异步架构由七类组件协同工作:状态存储负责事实,事件通知负责触发,调度器负责决策,大模型和工具运行时负责执行。

#组件职责典型实现
1API / Session Service接收用户请求,维护会话,返回 run_id 或最终答复HTTP API、WebSocket Gateway
2Planner将用户目标拆解为任务计划或 DAGLLM Planner、规则引擎、模板化计划器
3Orchestrator推进 agent-loop,派发 Job,检查依赖,处理事件自研调度器、工作流引擎、状态机
4Job Store保存子任务状态、输入、输出引用、错误、重试次数PostgreSQL、Redis、MongoDB、DynamoDB
5Queue / Event Bus分发待执行任务和完成事件Kafka、RabbitMQ、Redis Stream、NATS
6Worker / Tool Runtime执行 LLM 调用、工具调用、浏览器、代码、文件处理线程池、进程池、容器、Serverless
7Result / Context Store保存中间结果、证据、文件、模型输出、最终报告数据库、对象存储、向量库

关键协作关系:Orchestrator 是 agent-loop 的中枢,但不亲自执行耗时任务。它只决定”下一步做什么”,再把执行交给 worker。worker 完成后把结果写入 Result Store,通过 Event Bus 发布 JobCompleted/JobFailed 事件,Orchestrator 消费事件后继续推进。


三、Agent Run 与 Job 状态模型#

3.1 Agent Run 状态(整体任务)#

状态含义典型触发条件
created请求已创建,尚未开始规划API 接收到请求并创建 run 记录
planning正在生成任务计划Planner 开始执行
executing子任务正在并发执行至少一个 Job 已派发
waiting等待外部工具、用户确认或定时器需要人工输入或外部回调
aggregating正在汇总多个子任务结果关键依赖全部完成
responding正在生成最终答复汇总结果已准备完成
completed整体任务成功完成最终结果已写入会话或结果存储
failed整体任务不可恢复失败达到最大重试次数或关键步骤失败
cancelled用户或系统取消任务用户取消、超时或资源回收

3.2 Job 状态(子任务)#

状态含义典型处理
pendingJob 已创建,尚未执行等待依赖满足或调度
queuedJob 已进入队列等待 worker 领取
leased已被某个 worker 领取设置租约和心跳,避免重复执行
running正在执行记录开始时间、worker ID、进度
succeeded成功完成写入结果引用并发布完成事件
failed执行失败记录错误,判断是否重试
retrying等待下一次重试使用退避策略重新入队
dead_lettered多次失败后进入死信等待人工排查或补偿处理
cancelledJob 被取消停止后续依赖任务或进入补偿流程

为什么需要这套状态机? 如果只依赖内存回调,进程退出后系统无法判断任务是否完成。借助 Job Store,worker 即使执行到一半崩溃,调度器也能通过心跳超时把卡在 leased/running 状态的任务重新置为 queued 或 retrying,实现可靠恢复。


四、同进程 vs 分布式 Agent 异步实现#

架构能力同进程 Agent分布式 Agent
状态保存内存对象数据库、Redis、工作流状态存储
完成通知callback、Future消息队列、事件总线、Webhook、outbox
执行资源本地线程池或协程多 worker、容器、Serverless、K8s job
失败恢复依赖进程存活状态表 + 租约 + 重试 + 死信
扩展性受单机资源限制水平扩展 worker 和队列
适用范围demo、插件、小规模服务生产级平台、多用户 SaaS、企业自动化

4.1 同进程实现机制#

  • Future / Promise:提交后返回未来结果对象,完成后可查询或回调
  • Callback:任务完成后执行注册函数
  • async / await:协程挂起等待异步结果,完成后恢复
  • Condition / Event:线程等待共享条件变化,被唤醒
  • Blocking Queue:worker 完成后结果入队,调度器消费

关键点:add_done_callback 只是把 Future 完成转换成 JobCompleted 事件,真正推进 agent-loop 的是 on_event() 中的依赖检查和后续派发。

4.2 分布式实现关键机制#

  • 租约机制(Lease):worker 领取任务后在 Job Store 设置 lease + 心跳,超时未续约则视为宕机
  • 幂等:消息队列通常是至少一次投递,使用 event_id + job_id + version 保证幂等
  • 事务 outbox:在同一 DB 事务中写入业务状态和待发布事件,由 outbox relay 异步投递
  • 事件结构化:事件只携带 result_ref,避免大消息体撑爆队列

典型事件格式:

{
"event_id": "evt_001",
"event_type": "JobCompleted",
"agent_run_id": "run_20260522_001",
"job_id": "T1",
"job_type": "research_product",
"status": "succeeded",
"result_ref": "s3://agent-results/run_20260522_001/T1.json",
"attempt": 1,
"created_at": "2026-05-22T10:00:00+08:00"
}

五、任务完成通知机制对比#

机制原理适用场景优点缺点
Future callback同进程任务完成后触发回调单机 Agent、原型简单、低延迟进程崩溃后丢失
状态轮询通过 run_id 查询状态HTTP 长任务、外部客户端简单可靠、兼容性强实时性差、轮询压力
消息队列事件worker 完成后发布消息微服务、生产级平台持久化、可重试、可削峰引入 broker 运维
Webhook完成后调用外部 URL第三方集成、企业回调外部系统被动接收需签名、幂等、防重放
SSE / WebSocket后端推送进度到前端实时查看执行过程用户体验好连接管理复杂

实践原则:轮询与回调不是非此即彼。状态查询提供可靠兜底,通知机制提供实时性。很多长任务 API 会同时提供这两种能力。


六、五项核心设计原则#

最终推荐:状态可查询 + 事件可通知 + 结果可恢复 + 失败可重试 + 执行可观测

  1. 状态可查询:状态存储是事实来源,可恢复、可查询、可审计
  2. 事件可通知:通知驱动下游处理、降低延迟
  3. 结果可恢复:先写结果再发事件,结果引用指向持久化存储
  4. 失败可重试:退避策略 + 重试计数 + 死信队列
  5. 执行可观测:trace_id + run_id + job_id 全链路日志

可靠性黄金顺序:

worker 写结果到持久化存储 → 再发布事件

如果需要强一致性,使用事务 outbox:在同一 DB 事务中写入业务状态 + 待发布事件,再由 relay 异步投递。即使事件消费者收到通知后立刻查询,也一定能读到结果。

已知挑战与应对#

挑战风险应对策略
状态复杂Run 和 Job 状态不一致定义明确状态机,集中管理状态迁移
事件重复队列至少一次投递event_id + version 幂等
事件乱序后发事件可能先到携带版本号和时间戳,消费端校验
结果丢失事件到了结果未落库先写结果再发事件;事务 outbox
调试困难异步链路跨多组件trace_id / run_id / job_id 全链路日志
资源泄露长任务、临时文件未清理TTL、心跳、租约、清理任务
成本上升并发放大模型调用配额、限流、优先级队列、模型路由、缓存
用户取消已派发任务仍在执行取消信号 + 协作式取消

七、多 Agent 系统的”操作系统”:三大核心支柱#

多 Agent 系统是 AI 从”单点智能”迈向”群体智慧”的关键,其核心是任务调度、通信协议、状态管理与可靠性设计。

7.1 主流架构范式#

范式核心机制设计理念典型场景代表框架
管理者/协调者模式(集中式)中央协调者负责任务接收、规划分解、调度派发模拟”项目经理-执行团队”金融合规、智能制造排产、标准化客服CrewAI、LangGraph
去中心化/对等网络(分布式)无单一控制中心,Agent 基于预定义规则直接 P2P 通信模拟”蜂群”对等协商开放式市场调研、头脑风暴、动态信息搜集AutoGen GroupChat
混合式架构主干流程集中式,局部环节分布式平衡可控性与灵活性复杂软件研发、智能运维(AIOps)LangGraph + CrewAI 定制组合

关键数据:研究表明,正确采用多智能体协作架构可实现错误率降低 65%、执行速度提升 40%。

7.2 任务调度策略#

  • 并行调度:多个无依赖任务同时进行(数据抓取与批量推理)
  • 依赖图调度:任务之间形成 DAG(“先检索→再分析→最后总结”)
  • 优先级调度:根据任务紧急程度动态分配资源
  • 资源感知调度:实时监测 Agent 负载,实现负载均衡

7.3 通信协议双轨#

  • A2A(Agent-to-Agent):横向协议,负责 Agent 间协调与任务委托
  • MCP(Model Context Protocol):纵向协议,负责 Agent 与外部工具/数据集成

典型架构:A2A 上层编排,Agent 通过 MCP 执行具体动作。


八、A2A 协议:Agent 间的”通用语言”#

A2A 是 Google 于 2025 年发起并贡献至 Linux 基金会的开源协议,目标是建立跨厂商、跨框架的标准化互操作机制。

8.1 协议栈#

  • 传输:HTTP(S) + mTLS
  • 消息格式:JSON-RPC 2.0
  • 核心抽象:
    • Agent Card:JSON 格式数字身份,托管于 /.well-known/agent-card.json,便于发现
    • Task:异步协作核心载体,拥有唯一 ID、生命周期状态(已提交/处理中/已完成)和 contextId

8.2 四种交互模式#

模式适用场景
同步请求/响应快速即时操作
异步轮询长耗时任务
流式更新(SSE)文本生成场景
推送通知(Webhook)超长任务

8.3 同步 RPC vs RocketMQ 异步通信#

维度同步 RPCRocketMQ(异步通信)
通信模型同步请求-响应(阻塞)异步发布-订阅/点对点(非阻塞)
解耦性紧耦合松耦合,通过 Topic 解耦
可靠性无内置重试/持久化消息持久化 + 自动重试 + 死信队列
流量削峰无法缓冲,易雪崩消息堆积能力,平滑应对高峰
事务一致性需外部协调原生支持分布式事务消息
可观测性依赖链路追踪中间件内置消息轨迹 + 全链路 TraceID 透传
扩展性需服务发现 + 负载均衡天然支持多消费者组,弹性扩缩容

九、LiteTopic:专为 AI 场景设计的轻量级通信#

Apache RocketMQ 推出 LiteTopic 通信模型,本质是独立的 Queue,基于百万队列核心技术构建。

9.1 四大核心优势#

特性说明
轻量级通信极低的资源动态创建开销,可轻松支持海量会话
企业级上下文管理以连续消息流保存 Session 上下文,顺序保障 + 排他消费 + 原生支持大消息体
单节点粒度订阅管理同一 CID 下不同节点可独立订阅不同 LiteTopic,支持运行时动态增减订阅
断点续传通过 Offset 位点实现故障恢复,无消息丢失、无重复消费

9.2 四大 Session 能力#

  1. 会话状态持久化——进程重启不丢会话
  2. 消息回溯与重放——断点精准恢复
  3. Session 隔离与路由——多会话并行无干扰
  4. 流量削峰与缓冲——保护下游应用稳定性

核心价值:将”Session”从内存易失状态转化为可持久、可追溯、可恢复的事件流,为多智能体系统提供企业级会话韧性。


十、AgentScope × RocketMQ:最佳组合实践#

阿里巴巴 AgentScope 框架面向多智能体、开发者友好,具备对开发者透明、实时可介入、模型无关、乐高式构建等核心优势。

10.1 集成架构#

  • 作为服务提供者:内部支持符合 A2A 协议的 JSONRPC WebService 和 RocketMQ Service,通过 well-known 接口暴露 Agent 能力
  • 作为服务调用者:通过 A2A 协议定义的 JSONRPCTransport 或 RocketMQTransport 发起请求并解析响应

10.2 典型协作流程(智能旅行助手)#

三个 Agent:

  • SupervisorAgent(总控):任务分解与逻辑编排
  • WeatherAgent(天气专家):查询天气
  • TravelAgent(旅行专家):依据天气规划行程

通信链路:

  1. Supervisor 拆分任务 → 发送至 B/C 的业务 Normal Topic
  2. B/C 集群拉取处理 → 结果发布到 Supervisor 订阅的 LiteTopic
  3. Supervisor 拉取 LiteTopic 汇聚响应 → 驱动后续编排

10.3 开箱即用的 A2A 实现#

基于 RocketMQ SDK 实现了 A2A 协议的 ClientTransport 接口,支持:

  • sendMessage:发送普通同步请求
  • sendMessageStreaming:发送 Stream 请求
  • resubscribe:重订订阅任务数据
  • getTask / cancelTask:查询/取消任务

开源地址:https://github.com/apache/rocketmq-a2a


十一、从 WebMCP 到 AgentOS:协议层到系统层的跃迁#

核心判断:WebMCP 与 AgentOS 的关系,并非版本迭代或功能叠加,而是一场从协议层到系统层、从解决”连接问题”到解决”调度与治理问题”的根本性架构跃迁。

维度WebMCP(协议层)AgentOS(系统层)
核心定位标准化”连接器”(USB-C 接口)系统级”调度与治理平台”(操作系统)
解决问题”如何让智能体安全、标准地调用外部能力""如何让智能体理解意图、自主规划、协同执行”
管理对象工具、资源、提示词LLM 算力、记忆系统、工具网络、Agent 实例
交互范式应用为中心(被动执行指令)意图为中心(主动解决问题)
驱动方式客户端主动”拉取”事件主动”推送”(发布-订阅)
类比”AI 时代的 USB-C 接口""智能时代的操作系统”

演进关系总结:MCP 让智能体有了”手”(连接能力),AgentOS 为这些”手”配上了”大脑”(规划调度)和”神经系统”(系统协调)。MCP 被内化至 AgentOS 架构的”执行与工具层”,成为智能体可调度的标准化”系统调用”接口。

WebMCP 的双通道传输架构#

通道方向作用技术原理
SSE 通道Server → Client异步通知、日志、进度推送基于 HTTP/1.1 长连接,Client 发起 GET 请求,Server 通过 data: … 事件流持续推送
HTTP POST 通道Client ↔ Server协议初始化、工具列表查询、工具调用消息体为 JSON-RPC 2.0 格式

四步骤通信生命周期:

  1. 连(Connect):Client 向 Server 的 SSE 端点发起 GET 请求
  2. 取(Get Endpoint):Server 立即通过 SSE 流发送 endpoint 事件
  3. 握(Handshake):发送 initialize 请求 → 响应 → notifications/initialized 通知
  4. 用(Usability):进入正常工作阶段,调用 tools/list、tools/call

十二、AgentOS 的六层分层架构#

层级名称核心职责关键技术与组件
L6基础设施层提供底层计算、存储、网络资源Docker 容器化、CPU/GPU/NPU 异构算力、Kafka/Pulsar、向量数据库、PostgreSQL、Redis
L5编排与治理层系统的”指挥中心”,协调组件、管理智能体生命周期Agno/LangGraph、任务调度器、权限管理、Human-in-the-Loop、MCP/A2A 协议
L4记忆与状态层管理短期上下文、长期知识与任务状态工作记忆、向量数据库、经验库、Redis 状态外部化
L3执行与工具层将决策转化为实际行动MCP 工具调用生态、CLI 编排引擎、代码解释器、行动执行器
L2认知与决策层负责任务规划、推理、策略选择LLM 内核、CoT/ToT 规划、多智能体协作调度器
L1接口与感知层统一接收并抽象多模态输入多模态输入抽象、意图识别、流式感知管道

关键架构机制:

  • 多智能体协作架构:通用 Agent(协调者)+ 垂直专业 Agent(执行者)
  • 控制平面与执行平面分离:控制平面负责协调与决策;执行平面在沙箱/容器中安全执行
  • 事件驱动架构(EDA):各层通过消息队列连接,实现松耦合、异步处理与弹性伸缩
  • 状态机与图编排:使用 LangGraph 将工作流定义为包含循环、条件分支的状态图

十三、消息中间件在 Agent 系统中的核心角色#

角色价值体现
通信总线提供可靠、可追溯、可扩展的 Agent 间消息传递通道
状态持久化层将易失的内存 Session 转化为可重放的事件流
流量调度器削峰填谷,保护下游 GPU 推理资源不被瞬时高并发击穿
故障恢复基座断点续传、动态订阅重平衡,实现会话级别的无损恢复
标准协议载体作为 A2A 协议的底层传输,支撑跨厂商/跨框架互操作
可观测性入口内置消息轨迹 + TraceID,便于多智能体系统的调试与审计

十四、企业级实施方法学:三阶段渐进式演进#

第一阶段:价值验证(1–3 个月)#

  • 选点:高重复性、高复杂性、高人工成本场景
  • 速建:GPT-4/Claude + LangChain/Dify MVP
  • 验证:任务完成率 > 85%

第二阶段:工程深化与试点(3–12 个月)#

  • 架构升级:LangGraph + CrewAI
  • 保障体系:安全护栏、最小权限、成本优化
  • 可观测:LangSmith 全链路追踪
  • 流程嵌入:CI/CD 流水线

第三阶段:规模化生产与生态集成(12 个月以上)#

  • 平台化治理:统一 AgentOps 平台
  • 生态互联:MCP/A2A 协议全面推广
  • 精细化运营:成本分摊、性能 SLA、合规审计
  • 文化制度化:设立 AI 治理委员会

十五、可靠性设计的四道防线#

防线机制适用场景
重试指数退避算法临时性错误(网络抖动、超时)
熔断连续失败率阈值触发下游服务不可用时暂停调用
降级兜底方案知识检索失败时返回标准答复
可观测日志 + 链路追踪 + 指标监控实时定位”为什么出问题”

核心原则:没有稳定性,就没有智能。多 Agent 系统在运行中必然遭遇工具调用失败、网络中断、Agent 宕机——关键是出问题后知道”为什么出问题”。


十六、核心设计哲学#

维度核心策略解决的核心问题
可恢复性状态可查询 + 结果可恢复进程崩溃后任务不丢失
可扩展性异步队列 + Worker 池单机资源瓶颈
可观测性trace_id + run_id + job_id 全链路异步链路调试
可治理性协议标准化 + 多智能体协同跨框架互操作
可编排性DAG + 状态机复杂任务依赖表达

一句话总结:Agent 异步架构的本质是事件驱动的任务状态机——Planner 拆解目标,Orchestrator 编排执行,Worker 调用模型和工具,Job Store 保存事实,Event Bus 通知变化,Result Store 保存上下文,前端通过轮询/SSE/WebSocket 感知进度。


十七、给生产团队的 Checklist#

设计 Agent 异步架构时的自检清单:

  • 状态机是否定义了 Run 和 Job 两层?

  • 是否采用”先写结果再发事件”的可靠性顺序?

  • 是否使用事务 outbox 保证强一致性?

  • 事件是否携带 event_id + version 以支持幂等?

  • 是否使用租约机制防止 worker 宕机后任务卡死?

  • 通知机制是否同时提供轮询和推送两种能力?

  • trace_id + run_id + job_id 是否贯穿全链路?

  • 多 Agent 通信是否采用 A2A 协议?

  • 工具调用是否采用 MCP 协议?

  • 是否选择了合适的消息中间件(Kafka/RocketMQ/NATS)?

  • 失败恢复路径是否经过端到端测试?

  • 监控告警是否覆盖 queued 堆积、dead_lettered、worker 心跳超时?


参考阅读#

今日笔记综合自以下 5 篇文章:

  1. 《Agent 异步架构原理》 — 七类核心组件、Run/Job 状态机、五项设计原则
  2. 《揭秘多 Agent 系统的”操作系统”》 — 任务调度、通信协议、可靠性设计
  3. 《企业级多 Agent 系统架构、协作机制与实施方法学》 — 架构范式、A2A/MCP 协议、三阶段实施
  4. 《AgentScope × RocketMQ:A2A 智能体通信基座》 — LiteTopic 模型、A2A 通道、最佳实践
  5. 《从 WebMCP 到 AgentOS:架构、通信与资源调度》 — 协议层到系统层演进、六层分层架构

写给未来的自己:Agent 异步架构不是”加一个消息队列”,而是”重新思考任务如何被表达、调度、执行、恢复”——把状态机、事件流、租约、幂等这些分布式系统的基础原则,与 LLM 的概率性、不确定性、长耗时特性结合起来,才能让 Agent 从”能跑”走向”能稳定跑”。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

每日学习笔记 · 8/10 — Agent 异步架构与编排
https://www.zgf.me/posts/每日学习笔记--8_10--agent-异步架构与编排/
作者
赵某人
发布于
2026-08-10
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
赵某人
俯视泥土,仰望星辰
公告
欢迎来到我的博客!这是一则示例公告。
分类
标签
最新动态
站点统计
文章
28
分类
1
标签
58
总字数
129,420
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.14.5
文章许可
CC BY-NC-SA 4.0