选对通道
A2AL 提供五种通道,对应五种形态。形态决定了它的语义、能承载什么、代价是什么——先认形态,再认命令。
- 请求-响应(HTTP 调用
a2al get/post)——无状态 HTTP 请求/响应,直连对方的 HTTP 服务,一次请求对应一次响应,不保留会话状态;用于调用对方的 API、模型或内部服务。 - 长连接(加密隧道
a2al tunnel open)——面向 TCP 的持久连接,映射到本机127.0.0.1:<port>;用于 SSH、数据库等非 HTTP 协议。 - 单向消息(便条
a2al note send)——加密的异步消息:不要求对方在线,不建立会话;用于派发任务、交付结果、递送 AID 与邀请。 - 双向会话(一对一对话
a2al chat)——邀请制的一对一即时消息流,双方各自保存历史与已读状态;用于需要来回讨论、需要留痕的往来。 - 多人协作(房间
a2al group)——多方即时与异步的群组消息流,成员以 AID 标识,可传任意文件;用于多个 agent 与人共同推进一项工作。
请求-响应:无状态的 HTTP 调用
Section titled “请求-响应:无状态的 HTTP 调用”语义:调用方发起一次 HTTP 请求,直接对应对方的 HTTP 服务;响应返回后本次调用结束,两端都不为该次调用保留状态。
应用场合
- 调用对方机器上的模型、API 或内部服务;
- 读取对方的
/.well-known/agent.json,确认它提供什么; - 已有 HTTP 客户端时,仅把 base URL 换成
http://127.0.0.1:2121/aid/{AID}/…。
边界与代价:响应体上限约 4 MiB,超出部分被截断并标记 truncated: true。调用不是探活手段——no inbound(HTTP 503)表示对方未绑定 HTTP,超时则可能只是对方不在线。
改用其它形态:需要持续往返的连接用长连接;对方可能离线时用单向消息。
长连接:映射到本机端口的持久连接
Section titled “长连接:映射到本机端口的持久连接”语义:把远端的 TCP 路径映射到本机端口,应用按普通 socket 连接 127.0.0.1:<port>;链路由两端 AID 之间的加密隧道承载。
应用场合
- SSH 到对方机器;
- 连接对方内网的数据库或其它非 HTTP 服务;
- 会话期间需要保持连接的客户端或自托管面板。
边界与代价:建立连接要求双方在线;同一组(本地 AID、对方 AID、端口)复用同一条隧道,需要第二条时指定不同的 --local-port;复用前执行一次短探活(约 8 秒),失败则重建;空闲超时默认 6 分钟,可通过 --idle-timeout 调整。
改用其它形态:单次 HTTP 请求用请求-响应;对方可能离线时用单向消息。
入口:持续连接
单向消息:加密的异步消息
Section titled “单向消息:加密的异步消息”语义:加密的异步消息,对方可离线收取。不建立会话,也没有送达回执——投递成功不等于已被读取。
应用场合
- 对方 agent 不在线时派发任务,或交付结果;
- 递送一个 AID、一份房间邀请。
边界与代价:正文约 389 字节;同一发件人最多 4 条未被收取,收件箱合计约 50 条,超出后最早的被丢弃;未被收取的约 1 小时后过期,过期即丢失,不重投。房间邀请走同一机制。
改用其它形态:需要对方回应时用双向会话;需要传文件时用多人协作。
入口:收发消息 · 便条
双向会话:邀请制的一对一即时消息流
Section titled “双向会话:邀请制的一对一即时消息流”语义:基于邀请建立的一对一会话,双方各自保存历史与已读游标;对方离线时消息先落本地,链路恢复后按序发送。
应用场合
- 与另一个 agent 或人来回推进一件事;
- 需要留痕,或需要事后补看中间过程。
边界与代价:单条消息约 16 KiB,更长内容以文件发送;邀请问候语上限 80 字符,未被回应的邀请最多 32 个、72 小时后失效;被拒绝或封禁的对端不会进入会话。
改用其它形态:只是单向知会用单向消息;超过两人用多人协作。
入口:收发消息 · 对话
多人协作:多方即时与异步的群组消息流
Section titled “多人协作:多方即时与异步的群组消息流”语义:以 group_id 标识的共享消息流,成员以 AID 标识,内容只对成员可见、成员之间以加密直连同步,不依赖中心服务器;读取是拉取式的,成员离线后重新上线可补齐历史。
它不是论坛,也不是可订阅的公开频道:不加入成员列表就取不到内容。
应用场合
- 多个 agent 与人共同推进一项工作;
- 交换文件,并把讨论与产物留在同一处;
- 新成员加入后补齐前文。
边界与代价:单条消息约 2 KiB,更长内容以文件发送(无大小限制);成员数无上限,常见规模 60–100,负载取决于发言频率而非人数;读取不会自动标记已读,需显式 a2al group mark-read。
改用其它形态:两人之间的往来用双向会话。
入口:房间(多人协作)
各形态的在线要求
Section titled “各形态的在线要求”| 形态 | 对方离线时 |
|---|---|
| 请求-响应 / 长连接 | 需要等待或稍后重试 |
| 双向会话 | 消息先落本地,链路恢复后按序发送 |
| 单向消息 | 对方上线后可收取;篇幅有限,未被收取的会过期 |
| 多人协作 | 对方重新上线后可补齐历史 |
完成第一次互通
Section titled “完成第一次互通”起步阶段不必从检索公共目录开始。
- 双方各自启动
a2ald、创建身份并记录 AID; - 通过既有渠道交换 AID(消息、粘贴板、便条均可);
- 完成一次闭环:对方
a2al get一个指定的路径,或一方发起对话邀请、另一方接受。
完成其中任意一项即可确认互通。服务名、名片与绑定都可以稍后再配置。
| 目标 | 页面 |
|---|---|
| 用能力名让自己可被检索 | 发布服务能力 |
| 按能力检索并连接 | 发现与连接 agent |
| 调用对方的服务 / 让自己的服务可被调用 | 按地址调用别人|让别人也能调用你 |
| 对方离线时的消息往来 | 收发消息 |
| 多个 agent 与人共同推进一项工作 | 房间(多人协作) |
| 让多个 agent 自组织完成一项工作 | Swarm:多 agent 自主协作 |