让 AI 构建的应用更容易调试的六个前端概念

原标题Six front-end ideas that make AI-built apps easier to debug

Devin Chasanoff 用交互式游戏追踪器说明数据存放位置、计算值和组件之间的通信。

DCDevin Chasanoff讲者 · Google Cloud
频道
Google Cloud Tech
发布
2026年11月10日
视频
23:57
阅读
4 分钟
幻灯片
6
原文
英语
在 YouTube 打开
往下滚动阅读时,视频会缩到右下角继续播放。字幕跟随阅读语言。
阅读语言共 2 种语言可读
由 AI 从英语原文翻译。打开“对照原文”可以逐段核对。
摘要

30 秒看懂

当 AI 编程智能体一次只修复一个症状时,应用可能逐渐出现行为不一致。Google Cloud 的 Devin Chasanoff 演示了更精确地描述系统的方法:把页面拆成组件,区分父组件传入的数据与私有状态,并通过计算获得值,而不是重复保存。同样的模型也有助于说明条件显示、受限制的操作,以及整个应用共享的偏好。

  1. 1页面是一棵由可复用组件构成的树演示标出了父应用及独立的任务和物品组件。
  2. 2父组件传入详情,每张卡片可以拥有自己的进度Props 用于定制每张卡片,局部状态则追踪各自的计数。
  3. 3通过计算获得剩余数量,避免单独保存第二个计数分别维护两个计数可能让它们失去同步;计算值会跟随源值变化。
  4. 4状态不仅改变显示,还能控制操作任务完成前奖励按钮保持禁用,达到目标后计数按钮停止增加。
  5. 5多个组件需要的偏好可以使用共享状态货币和主题影响多个组件;单张卡片的备注保持局部。

要点建议

  1. 说明每个变化的值由哪个组件负责。
  2. 从源值计算剩余数量等结果,避免重复维护。
  3. 明确元素在什么条件下显示、改变样式、启用或禁用。
  4. 共享全应用偏好,将单个组件的行为保留在局部。
  5. 告诉编程智能体数据和操作之间的关系,而不只是要求修复症状。
全文

按章节阅读整理后的全文

只看原始文稿
01

从修补症状转向描述系统

Chasanoff 设置 AI 导师和游戏主题学习应用,目标是给编程智能体更精确的指令。

用 AI 构建的应用出现错误时,针对每个症状写模糊提示词,很容易变成按下葫芦浮起瓢。我认为更有用的方法是描述整个系统:它由哪些部分构成、信息存在哪里,以及变化如何传播。

这次我在 Google Antigravity 中使用一个自定义前端导师。导师边讲解边构建交互式学习应用:我选择角色扮演游戏的任务与物品追踪器,你也可以换一个主题并继续提问。

02

识别组件和数据存放的位置

父组件把任务详情传给可复用的子卡片,每张卡片可以保存自己的进度。

一个页面可以理解为由称作组件的可复用积木组成,组件按父子关系形成树。在示例中,整个应用是父组件,每张任务卡和背包都是子组件。X-ray 视图会标出这些边界。

用 X-ray 视图查看组件边界
幻灯片 1 / 6用 X-ray 视图查看组件边界应用外框包含独立的任务和背包子组件。

组件既可以通过 props 从父组件接收信息,也可以在本地状态中保存自己的变化信息。这个区别回答了一个实际问题:谁提供这个值,谁负责记住它?

最初的任务卡都显示相同的固定文字,进度按钮也还没有追踪任何东西。与其只要求“让卡片不同”,不如说明标题、地点和难度由父组件提供,而每张卡片各自保存进度计数。

父组件拥有任务列表,并把对应详情传给可复用卡片的每个实例。每个实例随后可以维护自己的进度:给采草药任务加一,不会改变击败龙的任务。

Props 与各卡片的局部进度
幻灯片 2 / 6Props 与各卡片的局部进度父组件提供任务详情,每张卡片各自维护计数。
03

通过计算避免状态冲突

演示对比了失去同步的剩余数量,以及根据基础计数和目标计算出的剩余数量。

计算值有时称为派生状态,可以避免重复信息逐渐失去同步。在故障示例中,已采集草药数量改变了,但单独保存的剩余数量仍停留在八。

重复计数失去同步
幻灯片 3 / 6重复计数失去同步已采集数量变化时,单独保存的剩余数量仍停留在八。

如果目标是八株、已经采集一株,剩余数量就应当是七。若已采集和剩余数量都作为独立状态更新,每次修改都必须让两者保持同步,从而增加不一致的机会。

可以要求智能体只保存基础计数,再由它计算剩余数量、完成状态和百分比。这样修改一个源值时,其他显示会像电子表格公式一样通过计算更新。

从一个计数计算剩余数量和状态
幻灯片 4 / 6从一个计数计算剩余数量和状态保存的计数发生变化时,计算值随之更新。
04

条件改变时更新显示和操作

生命值控制样式和显示,任务进度决定哪些操作可以使用。子组件可以通过事件通知父组件。

动态渲染和样式根据状态决定显示什么或如何显示。在游戏示例中,龙的生命值会改变徽章和颜色;低于 30% 时,卡片显示狂暴样式。另一个控件可以展开战术信息。

首领生命值低时的条件样式
幻灯片 5 / 6首领生命值低时的条件样式生命值低于阈值时,徽章和卡片样式会改变。

生命值降到零时可以显示胜利横幅。与其让模型把首领卡片“做酷一点”,不如说明条件和结果:生命值低于指定阈值时改变样式和徽章,降到零时显示胜利状态。

状态也可以控制操作。击败五只狼之前,领取奖励按钮应保持禁用;达到目标后,增加计数的按钮也应停止接受更多点击。这些条件让显示的操作与任务状态保持一致。

操作发生时,子组件可以通知父组件,让父组件更新共享信息。示例在领取奖励时使用这种连接,使更大范围的应用能够响应卡片中发生的事件。

05

区分全应用偏好和局部行为

货币、单位和主题由多个组件共享;只属于一张卡片的备注开关则保留在局部。

局部状态属于特定组件,但有些信息会被相距较远的多个组件使用。通过很长的父子链条传递相同偏好可能难以维护;另一种选择是在应用层共享状态。

在演示中,货币、距离单位和主题是共享的:一次更改可以同时更新页眉、任务卡和背包。相反,打开某张卡片的备注只影响该卡片,可以保留为局部状态。

共享偏好与卡片局部备注
幻灯片 6 / 6共享偏好与卡片局部备注货币和单位在整个应用中共享,而备注属于单张卡片。

更精确的请求会指出哪些偏好需要共享、哪些应用部分需要使用它们,以及哪些细节应当保持私有。不必记住所有术语:把关系解释清楚,就能帮助 AI 编程智能体理解想要的设计。

六个概念分别是组件与边界、props 与局部状态、计算值、条件渲染与样式、操作与事件,以及局部状态和全局状态。用它们描述应用作为一个系统应该如何运行,而不是一次只修补一个功能。

同频道的其他文章

4 张幻灯片41:04EN → 简体中文
Google Cloud Tech· 2026年11月9日Google 如何测试 Gemini 4,并用智能体维护代码Tulsee Doshi, Smitha, Rody Davis, Luke, Mollie, Billy, Annie · Google DeepMindTulsee Doshi 介绍分阶段发布和长时间任务;演示则用子智能体审查 Web、Android 和 iOS 代码。编程智能体Foundation ModelsAgent orchestration+2
8 张幻灯片17:27EN → 简体中文
Google Cloud Tech· 2026年11月9日修复混乱应用:先定义状态,再向智能体下指令Devin Chasanoff · GoogleDevin Chasanoff 先梳理健身界面的状态、转换和测试,再让智能体修改应用。开发流程与测试编程智能体产品与体验+1
3 张幻灯片11:59EN → 简体中文
Google Cloud Tech· 2026年11月3日用两个 AI 智能体把原型变成前端设计规范Devin Chasanoff · GoogleDevin Chasanoff 将规划和文档记录分开,让 Gemini 在应用开发前帮助用户完成设计。AI agentsSoftware engineering产品与体验
11:16EN → 简体中文
Google Cloud Tech· 2026年10月29日让 AI 智能体动工前,先核对规范并设置检查点Devin Chase · GoogleDevin 演示如何发现需求冲突、比较默认假设与建议,并制定分阶段实施计划。AI agentsSoftware engineering开发流程与测试
2 张幻灯片12:26EN → 简体中文
Google Cloud Tech· 2026年10月28日让 AI 智能体拥有两种长期记忆Annie Wang · Google CloudAnnie Wang 区分精确事实与语义偏好,并让较慢的记忆提取避开实时语音的关键路径。AI agentsMultimodal AI基础设施与部署