a2a-protocol — 本课题摘录
读了哪几篇: 02-task-lifecycle(Task 生命周期)。
其余三篇(发现与名片、传输与绑定、流与异步安全)本轮没读——属 agent 互操作课题。
这一家在本课题里的位置:它给了"一次运行有哪些状态、什么算终态"的一份权威定义。虽然它讲的是 agent 之间的互操作,但状态机本身是通用的。
它对本课题回答了什么
决定四:八态状态机 —— 终态、中断态、进行态分得很清
┌────────── 中断态(可恢复)──────────┐
│ 要更多输入 要鉴权 │
│ ▲ │ │
提交 │ │ │(补发消息) │
──► 已提交 ──► 进行中 ┘ └──► 进行中 … │
│ │ │
│ ├──► 已完成 (终态) │
│ ├──► 失败 (终态) │
│ ├──► 已取消 (终态) │
│ └──► 被拒绝 (终态) │
└────────────────────────────────────┘
(依据:协议库 · A2A (Agent2Agent) Protocol · Task 生命周期 —— TaskState 八个状态分三类——SUBMITTED/WORKING 是进行态,COMPLETED/FAILED/CANCELED/REJECTED 四个终态一到就冻结,INPUT_REQUIRED/AUTH_REQUIRED 两个中断态是暂停等你、补发消息后可回到 WORKING)
三类分法值得直接抄:
| 类 | 状态 | 特点 |
|---|---|---|
| 进行态 | 已提交、进行中 | 正常推进 |
| 终态 | 已完成、失败、已取消、被拒绝 | 一到就冻结 |
| 中断态 | 要更多输入、要鉴权 | 暂停等你,补上就能回到进行中 |
"被拒绝"单独是一个终态,不跟"失败"合并——跟 ACP 把"拒绝"单列一种停止原因一致。 两家独立做了同一个区分:"我做不到"和"我不做"不是一回事。
"中断态"这个类别对我们特别有用。 我们讨论"什么时候停"时,一直默认停就是结束。这里说的是第三种:暂停,而且暂停有类型。 缺输入和缺权限是两种不同的暂停,界面和调用方要做的事不一样。