A2A Client 与远端 Agent
从 v0.0.16.beta 起,xAgent 提供用户级 A2A Client。打开“运行治理 > A2A”管理远端 Agent 和任务;A2A 不是本机 AgentPlugin,也不等于把远端 Agent 加进当前用户工作区。
适用场景与版本边界
当任务需要交给另一个独立部署、支持 A2A 的 Agent 时使用此入口。同一用户下的主/子会话协作应使用会话能力;IM 消息入口由 AgentPlugin 管理。三者的身份、凭据和结果返回路径不同。
本文的结果保存、效果未知与回投语义按 2026-10-01 主分支 43d2698 核对。v0.0.16.beta 是 A2A 入口的引入版本,不代表后续修复已包含在该版本或所有已部署实例中;请结合实际版本和更新日志核对。
添加远端 Agent
- 在 A2A 页面添加远端 Agent,填写对方提供的 Agent Card 地址,发起发现并检查 Card 的名称与能力。
- 根据远端服务要求配置 API Key、Bearer 或已有 OAuth bearer token,保存连接。凭据属于远端访问边界,不要粘贴到会话正文或文档中。
- 只有连接可用、认证正确且企业授权容量允许时,才能正常发起远端任务。
支持 A2A v1 JSON-RPC 与 HTTP+JSON。具体可用能力以远端 Card 和对端实现为准。
任务与结果
从 A2A 页面选择远端 Agent 并发送任务。已发任务可查询或刷新状态;远端要求补充输入时可以回复,未结束时可尝试取消。取得远端任务 ID 后,未结束且不在等待用户的任务优先通过流式更新,必要时回退轮询;服务重启后会尝试恢复对原任务的监控。等待输入或认证时,应先处理对应要求;有效回复后可恢复监控。
远端 Message、Artifact、状态与错误保留为收件事件事实,投递状态单独更新。若任务来自某个 Session,需要用户处理、终态或错误结果可回投来源 Session;单独的 Artifact 更新不触发这种回投。仍应在任务详情核对远端执行结果和错误。管理员可查看 A2A 容量与运行统计;它与 AgentPlugin Channel 的额度是不同权益。
先区分三种结果
| 看到的状态 | 能说明什么 | 还需要核对什么 |
|---|---|---|
| 本地任务已创建或已提交 | 已建立本地行动记录,并尝试提交远端 | 远端是否接收、远端任务 ID 和后续状态 |
| 收件事件已保存 | 本地保留了这次远端结果 | 产物内容、错误与实际业务效果 |
| 已回投来源会话 | 来源 Session 已可靠接收结果输入 | Agent 是否处理完成、审批是否仍在等待 |
最新实现把任务结果、对应收件事件和终态统计放在同一数据库提交中,并检查远端任务/上下文身份,防止无关或过期结果覆盖当前事实。回投使用稳定消息标识重试,只有 SessionEngine 可靠接收后才标为已投递;它不是“用户已读”或“业务已完成”的回执。
来源会话不存在、已删除或归属不匹配时,回投会跳过;暂时失败则保留待投递状态。结果通知可进入会话处理链,但不能被当成用户的审批或确认。
超时、效果未知与重试
发送、回复或取消请求超时,不证明远端没有执行。远端效果尚不能确认时,本地保留原任务并标记 unknown,不要据此重新提交同一业务动作。
- 保留本地任务 ID、已知远端任务 ID 和错误信息。
- 已有远端任务 ID 时,刷新或继续监控原任务;不要创建替代任务来“重试”。
- 尚未取得远端任务 ID 时,不能主动查询该任务,也不会在启动恢复时盲目重发;需要向远端核对原请求。
- 收到终态后检查结果和产物。取消请求不等于取消成功,也不保证撤销此前已产生的外部效果。
与定时任务一起使用
定时业务轮可以显式等待同一 Session 发起的 A2A 任务。等待关联的是原行动,后续回执不能自动变成新行动授权。已关闭旧轮的迟到结果仍可能需要人工处理;“本轮已完成”不证明远端没有产生效果,也不应唤醒或覆盖另一轮的等待。
相关文档:Agent 会话 · AgentPlugin · 更新日志