Skip to content

开放式生成式 UI ​

在生成式 UI 光谱的开放端渲染在应用程序外部创建的 UI,例如沙箱化的 MCP Apps

概述 ​

开放式生成式 UI 处于生成式 UI 光谱中由 Agent 创建的一端。该界面是在你的应用程序外部编写的(例如由 MCP 服务器编写),而你的前端则在沙箱内对其进行渲染。你和 Agent 都不编写这些组件:由第三方提供它们,你的应用程序托管它们。

这种方案提供了最广泛的表达能力范围:Agent 拥有画布。某项功能可以自带已构建好的界面,因此你无需在自身前端编写任何代码,即可展现从未实现过的交互式工具。它适用于一次性可视化以及定制化回答——在这些场景中,令人惊喜且足够好的结果胜过完全可预测的结果。这也是最具实验性、确定性最低、运行更慢且成本更高的方法,而且不可信的 UI 最难保证一致性、无障碍访问(accessibility)与安全性,因此必须将其与应用程序的其余部分进行隔离。

何时使用此方案 ​

当你想要展现存在于应用程序外部且独立演进的功能和界面(例如由 MCP 服务器生态系统发布的工具)时,请选用开放式生成式 UI。当你需要保证品牌规范、无障碍访问或布局时,请沿着光谱返回到声明式或受控生成式 UI,在这些方案中由你的应用程序掌控组件。

MCP Apps ​

Model Context Protocol 允许 Agent 连接到提供工具和资源的外部服务器。MCP Apps 将这一理念扩展到了界面层:MCP 服务器交付交互式 UI,而前端通常在 iframe 中直接在对话里渲染它。服务器掌控组件、数据和交互,而你的应用程序则提供框架以及与 Agent 的连接。

CopilotKit 将此模式记录为 MCP Apps。

沙箱化与安全性 ​

由于界面来自第三方,因此应将其视为不可信的。请在隔离的上下文(例如沙箱化的 iframe)中对其进行渲染,并约束其可以访问的内容,以确保行为异常或恶意的应用程序无法访问页面的其余部分或用户的数据。沙箱化是使该光谱的开放端能够用于生产环境的关键:它容纳了表达能力范围,而不是限制它。

另请参阅 ​