课程PPT笔记
CS146S 第八周笔记总结:Automated UI and App Building
Stanford University · Fall 2025 · 讲师:Mihail Eric 课程网站:themodernsoftware.dev
📅 课程安排
| 日期 | 主题 | 内容 |
|---|---|---|
| Mon 11/10 | End-to-End Apps with a Single Prompt | Web 开发演化 → Vibe Coding → App Builder 架构 → 局限性(17 slides) |
| Fri 11/14 | 🎤 Guest: Gaspar Garcia (Head of AI Research & Tech Lead v0, Vercel) | v0 引擎内部 → Agent 架构 → Stream Manipulation → 微调(29 slides) |
本周特点: 没有阅读材料,重点是实操演示和工具体验。
第一讲:End-to-End Apps with a Single Prompt(11/10)
开场定位
Slide 3: "This is not the 'vibe coding' class — Because I'm a software development purist" Slide 4: "…except today"
Mihail 一直强调专业软件开发,但今天是例外——因为 AI app builder 已经成为不可忽视的现实。
第一部分:Web 开发的演化史
为什么这个话题重要? 现代 SaaS 开发以 Web 应用为中心已经超过 20 年(Salesforce 1999 年常被视为第一个 SaaS 平台)。
传统技术栈演化:
| 技术栈 | 组成 | 描述 |
|---|---|---|
| LAMP | Linux + Apache + MySQL + PHP | 经典开源 Web 栈,用于动态网站 |
| MERN | MongoDB + Express.js + React + Node.js | 全 JavaScript 栈,用于现代 SPA |
| MEVN | MongoDB + Express.js + Vue.js + Node.js | 类似 MERN,用 Vue 替代 React |
| JAM | JavaScript + APIs + Markup | 静态站点 + 现代 Web 应用(Gatsby, Next.js, Nuxt.js + Headless CMS) |
| Serverless | React/Vue/Svelte + Lambda/Cloud Functions + DynamoDB/Firebase | 云原生、按需运行、无需管理服务器 |
传统三层架构: client-side → server-side → database(Slide 7, MERN 为例)
第二部分:第一次尝试——Visual Low-code/No-code
- Wix — 拖拽式网站构建
- Squarespace — 设计师友好的模板
- Webflow — 可视化 Web 开发
这些是"Take #1",降低了门槛但仍有显著局限。
第三部分:The New AI World
Slide 11: 新一代 AI 工具
| 工具 | 定位 |
|---|---|
| Lovable | 全栈 AI app builder |
| Replit | 云端 AI 开发环境 |
| Vercel v0 | AI 前端/全栈 builder |
| Base44 | 一体化 AI app builder |
| Cursor/Claude Code/etc | AI IDE / Agent |
第四部分:What Has Changed
Slide 12 三大变革:
- Prompt your way to a fully fledged app — 用自然语言直接生成完整应用
- Engineers are becoming more cross-functional — 工程师开始跨越设计和产品管理的边界
- Anyone can build an app now — 比第一代 no-code 平台(Webflow, Wix, Squarespace)更用户友好
第五部分:现场演示——Let's Make An App Right Now
Slide 13: Bolt 演示——"Make salsa partner finder"
演示流程:
- 用 Bolt 生成一个带前端和后端的 salsa 舞伴查找应用
- 初始生成后进行迭代修改:
- 更新色彩方案(#EF8354, #660000, #EFCA08)
- 图标
- 字体排版
第六部分:App Builder 架构
Slide 14: WebContainer
核心架构:WebContainer 运行任意生成的代码。
WebContainer 是什么? 由 StackBlitz 开发的浏览器内 Node.js 运行时——不需要任何本地安装,代码在浏览器沙箱中运行。
第七部分:App Builder System Prompt
Slide 15: Bolt 的系统提示词
关键设计原则:
- 明确要求只使用成熟、知名的技术/框架 — 避免幻觉出不存在的库
- 使用
boltartifact/boltaction标签来指定 WebContainer 中的操作(文件创建、文件运行等) - 参考链接:Bolt Agent System Prompt(GitHub Gist + PromptHub)
📚 课程关联: 这与第四周的 CLAUDE.md 和第二周的 System Prompt 设计完全一致——通过精心设计的系统提示来控制 AI 行为。App Builder 的 system prompt 本质上就是一个高度专用化的 agent 指令。
第八部分:Limitations(关键!)
Slide 16: 五大局限性
| 局限性 | 详细说明 |
|---|---|
| 一切正常时很棒,但一旦出错我们就回到原点 | AI 生成的代码出 bug 时,调试难度不减 |
| Prompts are just suggestions | 不是每个用户都理解——prompt 只是建议,不是精确命令 |
| 安全一直是个问题 | 直接引用了 Lovable 漏洞(CVE-2025-48757) |
| 如何防止所有这些应用看起来都一样? | 同质化设计问题 |
| 这些应用现实中能做到多复杂? | 复杂度天花板问题 |
📚 课程关联:
- "一旦出错回到原点" 呼应第三周 Cursor 的 "Sync Agent" 局限——AI 无法替代工程师的调试能力
- "安全问题" 直接连接第六周——Lovable 的 CVE-2025-48757(RLS 配置错误导致 170+ 应用数据泄露)是 AI 安全双刃剑的又一案例
- "Prompts are just suggestions" 呼应第一周 Prompt Engineering 的核心教训
第二讲:Guest Lecture——Gaspar Garcia(Head of AI Research, Vercel)(11/14)
嘉宾背景
Gaspar Garcia:
- Head of AI Research, Vercel
- Tech Lead, v0
- 职责:Data Pipelines, Training + Finetuning, Agent Development, Web Infrastructure
- Stanford Class 2016(BS Computer Science Theory, MS Computer Science AI)
第一部分:v0 的定位
Slide 4: "Free for students → https://v0.app/students" Slide 6: "Most likely its not"(暗示你的第一个想法大概率不对) Slide 7: "Fail fast, fail often — Accelerate the learning moments of product development"
v0 的核心价值不是"一次做对",而是加速试错循环——快速失败、快速学习。
第二部分:From Idea to Production in Minutes
Slide 8: 四步流程
Natural Language Input → AI Processing → Live Preview → One-Click Deploy
描述 UI 愿景 → 模型生成代码 → 即时预览 → 一键部署
第三部分:The Developer Landscape is Shifting
Slide 10-11:
v0 的快速采用反映了前端开发方式的根本性变化——不仅是速度,更是技术能力的民主化。
打破团队壁垒(Breaking Down Silos)——四种角色都能使用:
| 角色 | v0 的价值 |
|---|---|
| Product Managers | 快速验证概念,无需等待工程周期。把 PRD 变成交互原型 |
| Designers | 桥接设计工具和生产代码。即时看到设计实现,完整响应式 |
| Engineers | 专注复杂逻辑,让 AI 处理样板代码。加速功能交付 |
| Founders | 无需大型工程团队即可构建和发布 MVP |
📚 课程关联: 这与第五周 Warp 的理念完全一致——Zach Lloyd 说"Terminal 不应该只给 10x engineer",Gaspar 说"App building 不应该只给工程师"。工具民主化是 W5-W8 的共同主题。
第四部分:Inside v0's Engine(核心技术内容!)
Slide 13: v0 引擎的五步流程
| 步骤 | 名称 | 详细说明 |
|---|---|---|
| 1 | Intent Understanding | NLP 从对话输入中提取结构化需求——识别组件、布局、交互、数据流 |
| 2 | Context Assembly | 收集相关信息:设计系统 token、现有组件、API schema、可访问性要求 |
| 3 | Code Generation | LLM 生成生产级 React 组件——含 TypeScript 类型、响应式设计、最佳实践 |
| 4 | Validation & Testing | 自动检查:可访问性合规、响应式行为、代码质量 |
| 5 | Human-in-the-Loop | 工程师审查、改进、提供反馈来训练模型 |
📚 课程关联:
- 步骤 2 "Context Assembly" = 第四周的 Context Engineering
- 步骤 5 "Human-in-the-Loop" = 第四周 Claude Code 的 permission system + 第七周 code review
- 整个流程 = 第二周 Agent 架构(感知 → 推理 → 行动)的具体实现
第五部分:Agents are Workflows
Slide 14: "Agents are Workflows" Slide 16: "But they're still probabilistic systems" Slide 17: "Give them Frameworks"
关键洞见:
- Agent 本质上是工作流——不是魔法,而是精心设计的步骤序列
- 但它们仍然是概率系统——输出不确定
- 解决方案:给它们框架来约束行为
引用了 Vercel AI SDK:https://ai-sdk.dev/docs/agents/overview
📚 课程关联: "Agents are Workflows" 是第二周内容的精炼总结。"But they're still probabilistic systems" 是第六周非确定性 SAST 问题在更广泛层面的表述。
第六部分:Corrections and Fine-Tuning(深度技术!)
Slide 20: Key Limitations
两个核心限制:
- 模型知识很快过时 — 对于变化快的话题(如 Next.js 16 的最新 API)
- 前沿模型实验室不会为你定制流水线 — OpenAI/Anthropic 不会专门为 "生成正确的 Next.js 16 代码" 创建训练管道
Stream Manipulation(Slide 21-23)
"Sometimes, just adjusting the prompt isn't enough."
解决方案:Stream Manipulation
Vercel 创建了一个子系统,可以在 LLM 输出流到达用户之前监听和捕获它。
这意味着:
- LLM 生成的代码可以被实时修正
- 不需要改变模型本身
- 类似于编译器的中间层——在 AI 输出和用户之间插入一个"修正层"
📚 课程关联: 这是极其重要的工程洞见——当 prompt engineering 不够时,你需要在模型输出层做工程。这与第四周 Claude Code 的 "generative command injection detection"(不是硬编码规则,而是分析命令的子 prompt)是同一类思路——在 AI 输出的管道中插入额外的处理层。
Training + Fine-Tuning(Slide 24-25)
v0 使用 composite model family(复合模型族)——不是依赖单一模型,而是针对不同任务微调了专门的模型。
参考:https://vercel.com/blog/v0-composite-model-family
📚 课程关联: 第四周 Claude Code 的 subagent(不同 agent 处理不同任务),在 v0 这里是不同模型处理不同任务——同样的"分而治之"思路。
第七部分:The Broader AI Tooling Landscape
Slide 26: "A Cambrian Explosion of AI Dev Tools"
v0 存在于专业化 AI 开发工具的生态系统中:
| 层级 | 工具类型 | 示例 |
|---|---|---|
| 1 | Code Assistants | Vercel Agent, GitHub Copilot, Cursor |
| 2 | Frontend Builders | 可视化开发平台 |
| 3 | Testing & QA | 自动化测试生成、视觉回归 |
| 4 | DevOps Automation | AI 驱动的部署、监控、事件响应 |
关键差异化因素:处理整个功能的端到端工作流,而不仅仅是自动补全建议。
第八部分:Real-World Impact
Slide 27: 三种采用模式
| 模式 | 说明 |
|---|---|
| Startup Velocity | 早期公司在天而非月内发布 MVP(全新产品/功能 + 现有功能修改) |
| Enterprise Modernization | 大型组织用 v0 做原型,在投入工程资源前获得利益相关者对齐,减少开发浪费 |
| Agency Efficiency | 设计机构在客户会议数小时内交付交互原型——每个 sprint 5x 更多概念 |
🔗 两讲之间的联系
| 维度 | 第一讲(Mihail) | 第二讲(Gaspar/Vercel) |
|---|---|---|
| 视角 | 整个 AI app builder 生态概览 | v0 引擎内部技术深潜 |
| 演示 | Bolt 现场演示(salsa partner finder) | v0 技术架构(5 步流程 + Stream Manipulation) |
| 历史 | LAMP → MERN → JAM → Serverless → AI | 前端开发的根本性转变 |
| 局限性 | "出错回到原点"、安全、同质化 | 模型知识过时、概率系统、需要 Framework |
| 解决方案 | System Prompt 设计(Bolt) | Stream Manipulation + Composite Model Family |
🔒 安全焦点:Lovable CVE-2025-48757
第一讲 Slide 16 直接引用了 Lovable 的安全漏洞,这是第八周与第六周安全主题的关键桥梁。
CVE-2025-48757 核心:
- 漏洞类型: Supabase RLS(行级安全)配置缺失/错误
- 影响: 1,645 个项目中 303 个端点跨 170 个应用存在漏洞(约 10.3%)
- 后果: 未认证攻击者可读写数据库——用户数据、API 密钥、财务记录全部暴露
- 发现时间线: 2025.3.20 发现 → 2025.4.14 Palantir 工程师独立发现并公开 → 2025.4.24 Lovable 2.0 发布"安全扫描"(不够用)→ 2025.5.29 CVE 正式发布
根因分析:
- Lovable 的架构是客户端驱动的,安全责任被推给了应用构建者
- 但使用 Lovable 的很多人恰恰是没有安全知识的非开发者
- Lovable 的"安全扫描器"只检查 RLS 策略是否存在,而不检查是否正确——提供虚假的安全感
📚 课程关联:
- 第六周 Copilot RCE(CVE-2025-53773): AI IDE 的安全漏洞——AI 修改自身配置实现 RCE
- 第八周 Lovable CVE-2025-48757: AI app builder 的安全漏洞——AI 生成不安全的默认配置
- 共同主题: AI 工具降低开发门槛的同时,也降低了安全门槛。当"Anyone can build an app"时,安全不能依赖用户自己配置——必须 secure by default。
- 这也验证了第七周的核心观点:"Code review is more important now than ever — You own the code that is merged and shipped, no blaming of the AI"
📚 第 1-8 周课程脉络
W1: LLM + Prompt Engineering(基础能力)
↓
W2: Agent + MCP Protocol(自主能力)
↓
W3: AI IDE + Specs-Driven(开发环境)
↓
W4: Agent Manager + Context Engineering(管理架构)
↓
W5: Product Design + Terminal ADE(产品思维)
↓
W6: Security + Testing(防护体系)
↓
W7: Code Review(质量保障)
↓
W8: Automated UI + App Building(极致应用)
第八周的独特位置: 这是课程中最"激进"的一讲——从"AI 辅助开发"跳跃到"AI 替代开发"。但 Mihail 开场就说"this is not the vibe coding class",并在 Slide 16 用五大局限性拉回现实。
核心张力:
- W1-W7 构建的全部知识(prompt engineering、agent 架构、security、code review)——在 AI app builder 面前,这些还重要吗?
- 答案是Yes:Lovable 漏洞证明安全仍然重要(W6)、"出错回到原点"证明工程能力仍然重要(W3-W4)、同质化设计证明产品思维仍然重要(W5)
- Gaspar 的技术深潜(Stream Manipulation、Composite Model Family)证明:即使是构建"让非开发者也能开发"的工具,背后仍然需要极深的工程能力
🛠️ 第八周作业
Multi-stack Web App Builds — 多技术栈 Web 应用构建
阅读材料笔记
本周未提供阅读材料笔记。
思维导图
本周暂未提供思维导图。
知识图谱
本周暂未提供知识图谱。