两个协议,两个层次
A2A(Agent-to-Agent 协议)和 iLang 处理的是多 Agent 技术栈里的不同部分。A2A 负责 Agent 之间怎么找到对方、怎么对话,iLang 负责 Agent 怎么理解要做什么。
| 维度 | A2A | iLang |
|---|---|---|
| 出自 | Google(现归 Linux 基金会) | iLang Research(开放社区) |
| 主要功能 | Agent 发现、能力协商、任务委派 | 指令结构、行为定义、通信格式 |
| 层次 | Agent 协调层 | 语义指令层 |
| 需要什么 | Agent Card 服务器、JSON-RPC 接口 | 什么都不需要。本身就是文本,在 ChatGPT、Claude、Gemini、DeepSeek、Kimi、通义千问和智谱 GLM 上测过 |
| 格式 | JSON-RPC、Agent Card、Task 对象 | 结构化文本:[VERB:@TARGET|mod=val] 和 ::GENE{} |
| 解决什么 | Agent A 怎么找到 Agent B,把工作委派给它 | 任何 Agent 怎么理解自己的指令和行为约束 |
什么时候用 A2A
你有多个 Agent,需要互相发现、协商能力、委派任务时,用 A2A。A2A 是协调层:它管 Agent 之间的握手,不管握手之后发生什么。
什么时候用 iLang
你需要 Agent 准确地照指令做事、行为保持一致、用结构化格式沟通时,用 iLang。iLang 工作在指令层:它定义 Agent 做什么、怎么表现,不管这个 Agent 是怎么被发现的,又是怎么接到委派的。
两者一起用
A2A 把 Agent 连起来,iLang 规定这些 Agent 之间怎么说。
Agent 之间怎样用 iLang 交接,见 Agent 通信协议。
例子:Agent A 用 A2A 发现了 Agent B(一个做数据分析的 Agent)。然后 Agent A 给 Agent B 发一条 iLang 指令链:
::GENE{analysis_rules|conf:confirmed|scope:task}
T:conclusions_first
T:include_confidence_intervals
A:hedging_without_data⇒avoid
[READ:@SRC|path=quarterly_data.csv]
=>[STAT|grp=region,product]
=>[TRND|grp=quarter]
=>[FMT|fmt=md]
=>[OUT]
路由由 A2A 处理,指令内容由 iLang 处理。两个协议各干各的活。
主要区别一览
| 问题 | A2A | iLang |
|---|---|---|
| 能帮 Agent 互相找到吗? | 是,通过 Agent Card | 否,不在它的范围内 |
| 它定义 Agent 的行为吗? | 否 | 是,通过 ::GENE{} 声明 |
| 它规定任务指令的结构吗? | Task 对象(高层级) | 动词链(精确,逐步) |
| 不搭基础设施也能用吗? | 否,需要服务器接口 | 是,本身就是文本 |
| 开源吗? | 是(Linux 基金会) | 是(MIT 许可) |
常见问题
iLang 和 A2A 有什么不同?
A2A 管 Agent 之间怎么找到对方、怎么对话:通过 Agent Card 和 Task 对象完成发现、能力协商和任务委派。iLang 管握手之后 Agent 怎么理解要做什么:任务用动词链,行为用 ::GENE{} 声明。本站的例子里,Agent A 通过 A2A 发现 Agent B,再给它发一条 iLang 链。路由由 A2A 处理,内容由 iLang 处理。