上次写了 Agentic AI 注定让超级应用 unbundling(
m.okjike.com),最近随着 OpenAI、Anthropic、Shopify 在 MCP-UI、MCP App 上的开放合作,以及由此发展出的以MCP为基础的「Agentic AI基金会」(AAIF)纳入了主要 AI Lab 和 Infra 厂商(图1。让我想起图2这个 USD/Khronos 和GLTF/W3C 强强联合的元宇宙标准基金会/MSF),下一代「Agentic OS/Web」的应用形态已经比较清晰了:
分发应用环节,会共存两类适合被通用 AI Agent 分发、可借助 「Tool Search Tool」被通用 AI Agent 自动发现的「Tool」:
1. 搜索发现「Action」(通过纯数据接口交互的 Tool) -> 发现 MCP Server -> 使用 MCP App
2. 搜索发现「UI」(通过 GUI 交互的 Tool) -> 发现 Web Page -> 使用 Web App
使用应用环节(这个使用过程也可以理解为对应用内部细粒度功能/内容的进一步分发),会共存两类适合通过(或结合)通用 AI Agent 来使用的「Install-free App」(这种应用能按需直接运行,能用完即抛无负担,不用限定于预设好的 Tool/Skill,能标准化和跨平台):
1. 以「UI」为中心、采用「Action 嵌在 UI 里」模式的「Install-free App」——Web App
就是现有的网站、PWA。可以基于 WebMCP、PWA Actions 这类等价于原生 App Intents 的技术,在 HTML 或 Web App Manifest 这样的 UI 代码中内嵌「Action」的声明和实现(比如就是 JS 函数)
通用 AI Agent 既可以跟真人一样直接操作这些 UI,也可以精准调用 UI 代码中声明的这些 Actions
2. 以「Action」为中心,采用「UI 嵌在 Action 里」模式的「Install-free App」——MCP App
这种应用就是返回数据中包含 MCP-UI 的 MCP Server,是对「Apps in ChatGPT」和 OpenAI 「Apps SDK」的标准化( MCP App 是 MCP 协议中的一个新标准,整合了另一个标准化项目 MCP-UI 和 ChatGPT 的 Apps)
目前已经有 ChatGPT App 之外的其他宿主应用支持 MCP-UI 和 MCP App,Block 的本地 AI Agent 开发框架 Goose 就重点支持了 MCP-UI,这次也被贡献给了 Agentic AI 基金会
其中的 MCP-UI 包含三种实现方式,都是基于 Web 技术的(后两种方式都来自 MCP-UI 项目,暂时还没有被 MCP Apps 协议纳入):
2.1 HTML Template(含 CSS/JS)
这种 UI 模版被作为「资源」,通过 MCP Server 下发,被通用 AI Agent 预加载/注册(因此在 UI 渲染前有机会先做自动化审查),可以在通用 AI Agent 渲染自身对话界面的过程中被按需使用,在对话界面中嵌入这些第三方 UI
可以在这些 UI 代码中注入当前实时的上下文数据,甚至对 UI 代码做大幅修改,但仍然要用标准的浏览器引擎来渲染这些 UI 模版(比如注入到 iframe / WebView 里渲染),否则无法支持跨平台兼容性、无法兼容已有的开放 Web 生态(比如 OpenAI 推荐用 React、乃至开了 SSR 的 Next.js 来提供「Apps in ChatGPT」 中的 UI 模版)
这些 UI 由第三方负责实现和发布,不能由通用 AI Agent 自己随意杜撰,在很多情况下这是刚需,因为第三方产品中很多独有的用户价值需要借助这些 UI 来实现和交付,这些 UI 是产品中核心功能和「解决问题」的必要组成部分
另一方面,通用 AI Agent 这个「平台方」就像应用商店一样,对这些第三方 UI 拥有一定的掌控,用不用、如何用都由自己决定,包含隐私信息的上下文数据也都在自己内部,不提供给第三方
这种模式可以进一步跟一个新 Web 标准——IWA(Isolated Web App,特别是其中的 Web Bundles 技术)结合,这种 Web App 需要事先签名和离线打包,从而锁定代码,有资格获得更多原生权限。MCP Server 下发的「HTML 模版」可以换成 Web Bundles,变成整套 Web App 实现,而不仅限于单一网页
2.2 External URL
就是在 MCP Server 返回的数据里,直接提供服务器端现成的 Web Page、Web App 的 URL
通用 AI Agent 只能直接使用这些 URL(比如在 iframe / WebView 里加载),如果 UI 中要包含当前实时的上下文数据,只能通过约定好的 URL 参数、postMessage 消息等 Web 标准方式提供给网页,由网页代码自行使用
这种模式相当于在通用 AI Agent 主导的交互界面中,直接使用现有的标准开放 Web 生态,只不过 URL 不来源于用户在地址栏输入或点击链接,也不来源于 AI Agent 的「搜索发现」,而是在 AI Agent 使用「Action」形式的第三方应用(MCP Server)过程中,作为配套 UI 自动获得,并附加第三方应用开发者提供的使用方式等信息
2.3 Remote DOM
相当于 React Native 模式。MCP Server 只提供 UI 描述(比如基于非标准 HTML 元素的 DOM API 调用代码,或基于自定义 JSX 组件的声明式代码),不提供具体 UI 实现,由通用 AI Agent 用本地原生 UI 组件,按照这些 UI 描述来渲染原生 UI
这种模式会受限于平台原生组件,只能渲染出原生组件支持的 UI(在前面两种模式里,借助浏览器引擎这个最强大的通用标准 App Runtime,第三方可以实现相对任意的 UI)
也始终面临跨平台难题,因为各个通用 AI Agent 平台的原生组件体系和原生 UI 风格趋向差异化,使用这种 MCP-UI 实现方式的应用开发者很难提供跨平台的 MCP App。而如果给各平台搞统一的原生 UI 组件体系设计,就相当于重复造轮子搞非标准 web 了,类似小程序
以上发展趋势已经非常明显,行业事实标准已经形成,所以只要满足下面这些条件,建议就别自己造轮子搞「卡片应用」、「AI Native 小程序」了,现在就可以开始用 MCP App(含 MCP-UI)实现:
1. 你产品中的 AI Agent 主要通过纯数据接口来自动化操作第三方工具,而不是通过模拟 UI 交互
2. 你产品中 AI Agent 使用过程的交互界面,是自己实现的 UI(比如不像浏览器插件那样围绕别人的 GUI、或寄身在别人的 GUI 里)
3. 你产品中的 AI Agent 在借助第三方工具完成任务的过程中,无法仅凭自然语言为中心的粗粒度交互界面满足需求,需要在信息流中「内嵌」一些 GUI 反馈给用户,方便用户查看,或让用户可以直接在图形界面上做些「确认」之类的人工交互作为补充
4. 不希望自己独立负担 AI Agent 使用第三方工具过程中的所有 GUI 需求,需要「内嵌/聚合/混搭」一些第三方的 GUI
如果第三方工具没有提供 MCP Server,或提供的 MCP Server 里没有 MCP-UI,很多时候你可以低成本先帮他做一个部署到 Cloudflare,这也是对 Web 独有优势的利用——Web 中的 URL、代码和 HTTP API 都是天然对混搭友好的
补充:这个帖子里术语很多,没做解释,可能会被误解为虚指或我生造的概念,我更新了一下发在知乎的版本,加了大量链接:
zhuanlan.zhihu.com