Compose Multiplatform 1.12.0 新增实验性 MCP 服务器,使 AI Agent 能触发重载、截屏、检查语义树、模拟点击和输入、读取日志,从而把「能否写出 Composable」变成「能否观察编辑结果并发现交互失效」。
AI 编程代理擅长生成 UI 代码,却意外地不擅长验证 UI 是否真的能用。编译通过不等于渲染出了屏幕、语义树正确、或者点击能到达预期的事件处理器。
Compose Multiplatform 1.12.0 为 Compose Hot Reload 新增了一个实验性的 MCP server。它为 AI 编程代理提供了一条反馈通路,直连到正在运行的 Compose 应用:触发重载、截图、检查语义树、模拟点击和文本输入、以及读取应用日志。
这就将一个有用的问题从"代理能写出这个 composable 吗"变成了"代理能否观察到它编辑的结果并检测出交互破坏"。
根据 JetBrains 的发布公告,这个实验性 server 将代理连接到正在运行的应用,支持以下操作:
Compose Hot Reload 文档中包含连接详情和当前工具列表。Compose Multiplatform 1.12.0 的 release notes 是该功能的版本化参考文档。
这是一个观察循环,而不是自动化的正确性证明。截图可以展示按钮是否可见,而语义树和日志可以提供关于标签、角色和运行时失败的更有力证据。单独任何一项都不能证明该功能满足了产品需求。
一个有用的测试框架应该让代理遵循一个明确的序列,而不是让它在编译通过后就停止:
重要的设计选择是保持这些检查相互独立。"截图看起来没问题"不应该悄然替代"语义节点存在","重载成功"不应该替代"交互产生了预期的状态转换"。
对于具有短而确定的执行路径的 UI 变更,MCP server 尤其有用:
对于每条路径,定义一个可观测的契约。例如:在输入有效邮箱并点击继续后,语义树包含下一屏幕的标题,日志中不包含新的异常,截图显示预期的状态。
这是一个实验性开发工具,因此应该将其视为测试框架而不是生产控制面。一个能模拟输入并检查运行中应用的代理具有相当的能力。将其作用于可丢弃的或范围严格的环境中,避免真实的凭证和生产数据,并将可用操作限制在待测应用范围内。
还存在一个确定性问题。截图和日志会因时序、平台、字体、网络状态和后台工作而有所差异。优先对稳定的语义属性和明确的状态转换做断言。将截图作为辅助证据,而不是唯一的预言者。
最后,将执行证据与产品正确性分开。工具可以展示运行中的应用发生了什么;但它无法判断该功能是否合意、是否可以发布、或是否满足业务需求。这些仍是独立的评审关卡。
Compose Hot Reload 的实验性 MCP server 的价值在于,它闭合了 AI 编程代理与其所修改的 UI 之间的部分闭环。实际的好处不是代理因此变得可信。它在于框架可以在接受 UI 编辑之前要求可观测的证据。
因此最有效的工作流是:小 diff、重载、语义断言、定向交互、日志检查、以及持久化的证据。给代理一个看到结果的方式,然后将验收契约收严到"它编译通过了"之上。