DEV 赛道聚焦:构建实时全栈生成式 AI 应用 (DEV310)
Source: Dev.to
介绍
“这就是我们唯一的幻灯片,” Salih Gueler 在开启 DEV310(re:Invent 第一天的最后一场会议)时宣布。随后进行的全程现场编码:在不到一小时的时间里从零构建一个完整的全栈生成式 AI 应用。
Salih Gueler(AWS 高级开发者倡导者)和 Matt Goldberg(AWS 开发者工具高级首席工程师)演示了使用 Kiro(一个具备代理能力的 IDE)、通过 AWS CDK 部署、集成 Amazon Bedrock,以及利用新发布的 AWS MCP server 的现代开发者工作流。
该应用是一个受 Salih 个人需求启发的游戏平台:“我玩很多游戏,缺少一个可以交换游戏、出售游戏或查看朋友在玩什么的平台。我喜欢 Goodreads… 我想要一个针对游戏的类似版本。”
AI 辅助开发的演进
在演示之前,Salih 回顾了 AI 辅助开发的快速演变。
- 两年前 – 开发者惊叹于自动补全能够在 Java 中生成 “two plus two” 这样简单的函数。
- 去年(2024) – 开发者从 ChatGPT 或 Claude 中复制粘贴整个应用程序。
- 今天(2025) – 我们正处于代理时代。AI 系统可以在几乎不需要人工干预的情况下构建、部署并迭代应用。
“代理的智能程度取决于你告诉它多少。如果我只坐在这里说‘给我构建一个游戏平台’,它可能会生成你见过的最丑陋、最无结构的应用。但如果你提供更多信息,它就会明白你的意图。”
使用 Kiro 构建前端
从上下文开始
Salih 首先使用 Vite 创建了一个 React 应用,但立刻解决了一个常见挑战:大语言模型有知识截止日期,可能不了解最新的库版本。
解决方案: 模型上下文协议(MCP)服务器。他添加了 Context7 MCP 服务器,为 Shadcn UI 提供最新文档,因为该库不在 LLM 的知识库中。
提示简洁而具体:
“创建一个使用 Vite 的 React 应用,使用 Tailwind CSS 进行样式,并利用 Shadcn UI 组件。”
Kiro 通过 Context7 获取最新的 Shadcn UI 文档并构建了项目结构。
引导文件的力量
Kiro 最有价值的功能之一是 引导文件——定义应用边界的规则。Salih 的引导文件包括:
- React 项目: 始终确保
npm run build能成功运行。 - TypeScript 项目: 永不使用
any类型。
这些护栏让代理保持最佳实践,并在错误出现时及时捕获。错误出现时,引导文件会立即标记,Kiro 自动修复。
迭代开发
Salih 将开发拆分为小而可管理的步骤:
- 创建基础 React 项目。
- 添加 CSS 和 UI 组件。
- 创建 TypeScript 接口和模拟数据。
- 构建布局组件(页眉、页脚、响应式设计)。
- 创建认证页面。
- 添加 AI 聊天功能。
- 美化并完善 UI。
每次迭代大约耗时 2–3 分钟。关键洞见:将提示拆分为小步骤,而不是一次性让代理完成所有工作。
描述你的需求
在创建认证页面时,Salih 并没有仅说“创建登录页”。他提供了详细指导:
- 将卡片布局居中。
- 为注册按钮使用特定颜色。
- 包含邮箱和密码字段。
- 确保响应式设计。
“我在这里解释的所有内容…都来源于我的设想。”
愿景越具体,代理执行得越好。
使用 CDK 部署到 AWS
MCP 服务器方法
Matt Goldberg 接手演示使用他自定义的 MCP 服务器进行部署。与其把部署拆成许多细小步骤,MCP 服务器返回了一个完整的提示,引导代理完成全套部署工作流,并提供了检查清单:
- 使代码库对代理友好。
- 生成 AWS CDK 基础设施。
- 部署到 AWS。
- 为生产环境设置 CI/CD 流水线。
最佳实践 #1 – 对代理友好的代码库
Matt 创建了 agents.md 文件,为在项目上工作的 AI 代理提供指导,例如:
- 在
docs/design/component.md中引用设计文档。 - Git 提交信息规范。
- 常见任务的技巧(如在 CloudWatch 中查找日志)。
这些文档帮助代理了解项目上下文,并能够独立诊断问题。当部署出错时,代理会去检查 CloudWatch 日志,而不是盲目猜测。
最佳实践 #2 – 基础设施即代码
使用 AWS CDK 能让代理完整了解已有基础设施。若没有 IaC,代理可能会通过 AWS CLI 添加资源,导致代码库对这些资源一无所知。
生成的 CDK 代码包括:
- 用于前端资产的 S3 存储桶。
- 用于内容分发的 CloudFront 分配。
- 正确的 IAM 资源策略。
- 用于组织和成本跟踪的标签。
最佳实践 #3 – 确定性的部署脚本
Matt 编写了 deploy.sh 脚本,以确保在不同环境下部署保持一致。简化版如下:
#!/usr/bin/env bash
if [ "$ENVIRONMENT" = "preview" ]; then
# 使用热替换回退以加速本地开发
cdk deploy --hotswap-fallback
else
# 生产环境使用完整的 CloudFormation 部署
cdk deploy
fi
- 热替换回退 直接更新 Lambda 函数和 S3 存储桶,无需等待完整的 CloudFormation 部署——非常适合快速本地迭代。
- 对于生产环境,完整的 CloudFormation 部署提供一致性和正确性。
通过将部署逻辑封装在脚本中,代理调用脚本而不是随意构造命令,从而保证确定性的行为。
最佳实践 #4 – CI/CD 流水线
虽然因时间限制未现场演示,Matt 仍强调在与代理协作时 CI/CD 流水线的重要性:
- 自动化测试捕获 bug。
- 安全扫描检测漏洞。
- 成本分析防止费用失控。
- 代码审查要求。
这些防护措施确保即使代理生成了有问题的代码,也不会直接进入生产环境。
集成 Amazon Bedrock
应用部署完成后,Matt 将 Amazon Bedrock 集成进来,为 AI 聊天功能提供动力。他使用了另一个代理生成的提示,其中包含详细的检查清单:
- 将 Bedrock SDK 添加到项目。
- 为 Bedrock 集成创建 Lambda 函数。
- 更新 CDK 基础设施。
- 将前端连接到新的 API。
- 测试集成。
代理按照每一步操作,更新 CDK 堆栈以包含具备适当 IAM 权限的新 Lambda 函数,将其与前端对接,并验证聊天功能的可用性。