AG-UI 有了官方 .NET SDK,Blazor AI 组件同步登场:.NET 的 Agent 应用栈补齐了 - 张善友

AG-UI 有了官方 .NET SDK,Blazor AI 组件同步登场:.NET 的 Agent 应用栈补齐了 - 张善友

💡 原文中文,约7600字,阅读约需18分钟。
📝

内容提要

微软发布 AG-UI 协议官方 .NET SDK 及实验性 Blazor AI 组件,补齐 .NET Agent 应用界面层。AG-UI 通过类型化事件标准化 Agent 与前端通信,对框架零依赖,仅需 IChatClient 即可接入。Blazor AI 组件负责界面呈现,支持流式渲染、工具审批、可预测状态与生成式 UI,且不绑定 AG-UI 协议,保持生态自由。

🔎

延伸解读

AG-UI 的边界:管传输,不管呈现

AG-UI 定义的是类型化事件,而非界面。它标准化了 Agent 生命周期中的事件流,如 RUN_STARTED、TEXT_MESSAGE_CONTENT、STATE_DELTA,前端只需监听这些事件,无需关心后端实现语言。这种设计让同一个后端端点可以同时服务多种前端,打破了以往“一框架配一前端”的限制。协议只负责传输,呈现方式完全由应用决定,这为前端生态的多样性提供了基础。

低门槛接入:仅需 IChatClient

AG-UI 的 .NET SDK 对框架零依赖,服务端唯一集成点是 IChatClient 抽象。这意味着你不需要引入任何 Agent 框架,一个 Worker 服务或存量系统只要能返回 IChatClient,就能暴露 AG-UI 端点。微软没有让“必须先上 Agent 框架”成为前置条件,大大降低了使用门槛,让现有 .NET 应用可以平滑接入 Agent 能力。

Blazor AI 组件:呈现层的灵活与可控

Blazor AI 组件负责将事件流转化为界面,支持流式渲染、工具审批、可预测状态和生成式 UI。它不绑定 AG-UI 协议,可搭配任何 IChatClient 使用。组件通过 UIAgent 和 ContentBlock 实现状态驱动的响应式渲染,并允许用 Blazor 组件自定义工具调用结果的展示,避免了模型生成 HTML 带来的样式和交互问题。

可预测状态与人工审批:建立信任的关键

Agent 修改文档时不会直接覆盖,而是先给出提案,用户可接受或拒绝,未决提案会自动作废。对于有后果的服务端工具,通过 ApprovalRequiredAIFunction 包装,产生中断并在界面上呈现批准/拒绝按钮。这些机制让 AI 的操作可回退、可控制,解决了“AI 干活必须是可回退的”这一信任问题,是 Agent 应用落地的重要设计。

❓

Q&A

AG-UI 协议是什么?它主要解决什么问题?

AG-UI(Agent-User Interaction Protocol)是一个标准化 Agent 与前端通信的协议。它把 Agent 的整个生命周期拆成一组类型化事件(如 RUN_STARTED、TEXT_MESSAGE_CONTENT、STATE_DELTA 等),前端只需监听这些事件,无需知道后端用什么语言编写。它解决的是每个 Agent 框架各自定义流式事件格式、导致前端需要编写大量胶水代码的问题。

AG-UI 的 .NET SDK 对框架有依赖吗?怎么接入?

AG-UI 的 .NET SDK 对框架零依赖。服务端唯一的集成点是 IChatClient(来自 Microsoft.Extensions.AI 的标准聊天抽象)。你不需要引入任何 Agent 框架,一个 Worker 服务、内部 API 或存量业务系统,只要能返回 IChatClient,就能自己开口说 AG-UI。

Blazor AI 组件是什么?它和 AG-UI 协议是什么关系?

Blazor AI 组件是 .NET 11 RC1 中新增的实验性组件,负责把 Agent 事件变成界面。它的交互模型参考了 AG-UI,但没有直接绑定该协议——接任何 IChatClient 都能跑;想要 AG-UI 的丰富能力,再在外面套一层 AGUIChatClient 即可。这种解耦保持了生态自由度。

Blazor AI 组件如何实现流式渲染?

底层是一个 UIAgent,它包住 IChatClient,消费流式的 ChatResponseUpdate,把内容映射成一组可观察的 ContentBlock。每个 Block 有身份、角色、生命周期状态和变更通知。数据一到,组件自动重渲染——这是状态驱动的响应式,而不是定时器轮询。

在 Blazor AI 组件中,工具审批是怎么工作的?

把有后果的服务端工具(如 book_meeting)包进 ApprovalRequiredAIFunction,产生的 AG-UI interrupt 会变成一个 FunctionApprovalBlock,界面上显示 Approve 和 Reject 两个按钮。批准才执行工具,拒绝就带着决定返回、不执行。流式过程中还能通过 AgentContext.CancelAsync 随时叫停。

什么是可预测状态?它解决了什么问题?

可预测状态是指 Agent 想改文档时不会直接覆盖,而是先给一个提案:编辑器显示 diff,旧文档作为基线保留,用户点接受才 AcceptPredictiveState(),点拒绝就 RejectPredictiveState() 回滚。运行失败、被取消或始终没做决定,未决的提案会自动作废。它解决的是 AI 干活过程必须可回退的信任问题。

AG-UI 协议和 Blazor AI 组件在 .NET Agent 应用栈中分别扮演什么角色?

AG-UI 协议解决“事件怎么传”,负责传输层标准化;Blazor AI 组件解决“事件怎么变成界面”,负责呈现层。两者分别从传输和呈现两端给出官方答案,且都不强制全栈——一个标准抽象 IChatClient 打通了所有环节。

现在可以立即在生产中使用 AG-UI 协议和 Blazor AI 组件吗?

AG-UI 协议本身可以现在就押注——线格式稳定、跨语言兼容、且已被多个前端框架接受。但 Blazor AI 组件目前是实验性组件,在 Agent 这个快速迭代的领域里 API 变动概率不低,建议等它转正再在生产项目里用,值得观望几个预览版。

🏷️

标签

➡️

继续阅读