A2UI 解釋:代理到 UI 協定的作用(和不作用)
A2UI 是一種聲明性 JSON 協議,可讓 AI 代理程式描述客戶端要渲染的介面。它是如何運作的,有哪些渲染器,以及它不做什麼。
核心要點
A2UI(Agent to UI)是由 Google 創建的開放式宣告式 JSON 協定。 AI 代理程式發送介面的描述,客戶端使用自己的本機元件呈現它,而不是從代理執行程式碼。它是一種跨信任邊界移動 UI 結構和資料的方法,而不是動畫系統、元件庫或成品渲染器。 ExodeUI 不是 A2UI 渲染器,也不隸屬於 Google。
A2UI是什麼?
A2UI 是代理驅動介面的協定。 AI 代理程式不是返回文字牆或執行產生的程式碼,而是發送描述 UI 的 JSON 訊息流:要建立哪個表面、它包含哪些元件以及填充它們的資料。客戶端接收這些訊息並使用它已經信任的元件呈現結果。 A2UI 由 Google 創建,並獲得 Apache 2.0 許可,並獲得 CopilotKit 和開源社群的貢獻。截至 2026 年 10 月,目前生產規範為 v0.9.1,v1.0 為候選版本。
A2UI正在嘗試解決的問題
代理擅長產生有用的答案,但不擅長將其作為介面提供。文字回覆無法顯示比較表、訂單表或儀表板。產生任意 HTML 或 JavaScript 解決了表示問題並建立了安全性問題,因為客戶端現在正在執行它未編寫的程式碼。 A2UI 採用第三條路線:代理程式以受約束的格式描述 UI,客戶端決定如何呈現它。代理只能使用客戶端認可的元件,輸出是資料而不是可執行程式碼。
A2UI 曲面是如何建構的
該協定使用一小組訊息類型。確切的架構在版本之間會發生變化,因此在實現之前請檢查規範,但形狀是穩定的。
- createSurface:告訴渲染器建立一個新的表面,這是代理可以更新的介面區域
- updateComponents:新增或變更該表面上的元件定義
- updateDataModel:更改元件顯示的數據,而不重新傳送結構
- deleteSurface:刪除不再需要的表面
渲染器和傳輸
A2UI 與傳輸無關。該規範描述了訊息,而不是訊息的傳輸方式。本專案列出了 Angular、Flutter、Lit、React 和 Markdown 的渲染器實現,以及 AG-UI、A2A 和 MCP 的傳輸綁定,也可以使用 WebSockets、SSE 和 REST。這種靈活性就是重點:相同的代理回應可以由 Web 用戶端、行動應用程式或桌面應用程式呈現,每個應用程式都使用自己的設計系統。
A2UI 不做什麼
A2UI 很容易被過度閱讀。它不提供可放入應用程式的元件庫,而且它本身不會渲染任何內容:您需要客戶端控制的渲染器和元件目錄。它不決定 UI 如何移動。它不會取代 MCP(向模型公開工具和資料)或 AG-UI(承載代理與前端之間的交互事件)。而且它並沒有消除工程審查的需要:產生的介面仍然必須處理載入、空和錯誤狀態、權限和可存取性。
A2UI vs AG-UI vs MCP
這三者經常被一起提及,因為它們解決同一問題的不同層面。一個有用的簡寫:A2UI 描述介面,AG-UI 承載交互,MCP 提供代理工具和資料。 A2UI自己的文件將AG-UI描述為A2UI的傳輸綁定,並且A2UI也可以透過MCP傳輸。它們是互補的,而不是競爭的標準。如果您選擇集成,請從您的客戶端可以呈現的內容以及它已經支援的傳輸開始,而不是從最具動力的協定開始。
動畫和互動的契合點
A2UI描述結構和資料。運動是客戶關心的問題:渲染器決定表面是否立即出現、淡入或從先前狀態過渡。這對產品團隊來說是個好消息,因為它將動畫系統保留在客戶端中,可以尊重設計系統和輔助功能設定。這也意味著 A2UI 實作不會自動設定動畫。如果產生的介面需要按下按鈕、狀態轉換或吉祥物反應,則用戶端必須提供該行為。 ExodeUI可以在客戶端播放互動式動作,而且它有一個用於AI編碼工具的MCP伺服器,但它不是A2UI渲染器,不應該被描述為一個。
生產實施片段
// Simplified shape of an A2UI message stream (schema differs by version).
{ "createSurface": { "surfaceId": "cart" } }
{ "updateComponents": { "surfaceId": "cart", "components": [ /* ... */ ] } }
{ "updateDataModel": { "surfaceId": "cart", "data": { /* ... */ } } }
{ "deleteSurface": { "surfaceId": "cart" } }要記住的關鍵 Principle
- A2UI 是用於代理描述介面的 JSON 協議,由 Google 創建並在 Apache 2.0 下獲得許可
- 客戶端用自己的元件進行渲染;代理程式不會執行任意 UI 程式碼
- 它定義訊息並將渲染器、傳輸和運動留給客戶端
- 它不是動畫系統或嵌入式元件庫
- ExodeUI 不是 A2UI 渲染器,與 Google 沒有任何關係