服务端架构详解
服务端把 JSON-RPC/REST 请求 转为对 Agent Executor 的调用,经 EventBus 更新 TaskStore,并输出同步响应或 SSE 流。
1. 核心组件
| 组件 | 职责 |
|---|---|
| RequestHandler | 路由 RPC 方法 |
| DefaultRequestHandler | 标准 message/send、tasks/* |
| AgentExecutor | 业务:收消息、产出事件 |
| TaskStore | 持久化 Task(内存/自定义) |
| ExecutionEventBus | Executor → 框架事件 |
2. 请求处理流
mermaid
sequenceDiagram
participant C as Client
participant H as Handler
participant E as Executor
participant S as TaskStore
C->>H: message/send
H->>S: 创建/加载 Task
H->>E: 执行(异步)
E->>H: 事件
H->>S: 更新状态
H->>C: Task / SSE3. 非阻塞执行
长任务:先返回 Task id,Executor 后台跑;客户端轮询或 SSE 跟状态(与协议「异步优先」一致)。
4. 流式响应
- 同连接 SSE 推送
TaskStatusUpdate、Artifact等。 - 结束发送 terminal 事件。
5. 任务取消
cancelTask → 向 Executor 发取消信号 → 状态 canceled;运行中工具应监听 abort。
6. 推送通知
可选:任务变更 异步 POST 到客户端 webhook(不阻塞主请求)。
7. Express 集成
A2AExpressApp 挂载 well-known、RPC、SSE 路由;中间件层加认证。
8. 总结
实现 A2A Server = 实现 Executor + 选 TaskStore;框架处理协议与并发。