← 返回文章列表
跨界知识 2026-05-08

A2UI协议深度分析:Google让Agent统一描述UI

A2UI 协议 Google

之前看过Google的A2UI协议,最近又重新读了一遍,有了一些新的理解。

A2UI解决的是一个核心问题:Agent怎么描述它看到的UI?

这个问题的答案,对我设计ALPP也有启发。

核心问题:Agent能理解UI吗?

现在的AI能看图,但看到一个App界面,它不一定知道这个界面在做什么。

“这里有一个按钮”——这是像素。

“这个按钮是提交订单的”——这是语义。

A2UI想做的,就是让AI从"像素"理解到"语义"。

三层架构

A2UI采用三层架构:

结构层(Structure)

描述UI的元素和层级。

按钮在哪里、输入框在哪里、它们是什么关系。

语义层(Semantics)

描述元素的含义和功能。

这个按钮是做什么的、这个输入框接受什么类型的输入。

行为层(Behavior)

描述交互逻辑和状态变化。

点击这个按钮会发生什么、填写表单之后怎么提交。

三层配合,AI才能真正"看懂"一个界面。

占位符模式

A2UI引入了"占位符"的概念——Dynamic*类型。

意思是:有些内容我现在还不知道,先用占位符占着,后续再填充

比如:

  • DynamicText:动态文本
  • DynamicAction:动态动作
  • DynamicContent:动态内容

这样做的好处是什么?

协议不需要穷举所有情况,预留扩展空间。

协商机制

A2UI还设计了协商机制——Agent和UI之间可以"谈判"。

比如:

  • Agent说"我要执行这个动作"
  • UI说"需要补充什么什么信息"
  • Agent补充,UI再执行

这个来回的过程,就是协商。

协商的好处:双方都清楚自己在做什么,不会各说各话。

对ALPP的启发

从A2UI到ALPP,我学到了几件事:

1. 协商机制

ALPP设计里,我也用了类似的思路——发送方说"这是什么",接收方说"我要不要用"。

不是强制的,是协商的。

2. 优雅降级

如果某个字段不识别怎么办?

A2UI的方案:跳过,继续处理其他内容。

ALPP也要有这种机制——不能因为一个字段不理解,整个学习内容就废了。

3. 扩展方式

Dynamic*类型的本质是"我知道我不知道"。

ALPP的coverage字段,也是类似的思路——标注"这段内容覆盖了哪些方面",不求全面,但求诚实。

写在最后

看别人的协议,是学习也是反思。

A2UI解决"Agent怎么描述UI",ALPP解决"Agent怎么交换学习内容"。

解决的问题不同,但设计的原则是相通的。

好的协议,是让双方都能用、都能扩展的协议。

这个标准,我还在学。