Recap Series
- 第 02 场:使用 Terraform 实现 AWS 合规
- 第 03 场:从新手到构建者:一段精彩的云上之旅
- 第 04 场:团队优先的无服务器工程:Laravel 与 Bref
- 第 05 场:活动开场:AWS Community Day Hong Kong 2025
- 第 06 场:Agent-to-Agent:在 AWS 上构建可互操作的 AI
- 第 07 场:利用另一类遥测数据,借助 AI Agent 更快改进
- 第 08 场:告别氛围编程:使用 Kiro 进行规范驱动开发
- 第 09 场:使用 MCP 与 AI 智能体进行自动化测试
- 第 10 场:电信安全现代化:机器学习驱动的方法
- 第 11 场:重新思考生成式 AI 智能体:RAG 与 MCP
- 第 12 场:使用 TAK 与 AWS 开展灾难与应急响应
- 第 13 场:从测试视角重新思考无服务器应用程序工作流
- 第 14 场:实用 AWS FinOps,助力云上成功
Kiro 简介
Kiro 与 Visual Studio Code(VS Code)相似,因为它基于 VS Code 分支开发。Amazon 在此基础上增加了更多功能;由于其智能体编程功能依赖底层大语言模型(LLM),Kiro 采用订阅制服务模式。
规格模式与规格驱动开发
- 规格模式:Kiro 的一项独特功能,也称为规格驱动开发。
- 传统氛围编程:大多数开发者习惯于氛围编程,即通过提示词让编程智能体协助编写代码或调试。
- 规格驱动开发:一种不同的软件构建方式,从需求入手,依次完成设计、任务规划,最后才编写代码。在真正开始编码前,需要先形成结构化的需求和设计。
智能体引导功能
- 智能体引导:开发者可以借此指导编程助手如何编写软件。
- 产品概述 Markdown 文件:开发者可以提供一个描述产品的 Markdown 文件,其中包括产品概述、工作流和用例。这有助于让需求和设计与产品概述保持一致。
- 项目结构定义:开发者可以在编码开始前,通过 Markdown 文件定义项目结构,包括企业标准,或项目文件与测试文件的特定组织方式。
- 命名约定:开发者可以在 Markdown 文件中指定命名约定,确保创建的文件遵循正确规范。
定义技术栈
- 技术栈定义:智能体引导的第三个示例是定义项目技术栈。
- 前端:指定 React 等框架。
- 后端:指定后端框架或技术。
- 依赖项:在 Markdown 文件中定义项目依赖项。
编码约定
- 编码约定:预先定义组织的编码约定,确保编程助手遵循这些约定。
支持 agents readme
- 支持 Agents readme:Kiro 最新版本新增了对 agents.readme 的支持,这是一项面向智能体 Markdown 文件的开放标准。
- 互操作性:在 Kiro 中定义 agent readme 文件,并在 Cursor 等其他编程助手中使用,从而与智能体 Markdown 标准保持一致。
智能体钩子
- 智能体钩子:与 Webhook 类似,智能体钩子会在特定事件发生时(例如保存或更新文件)触发工作流。
- 安全标准:
- 示例:定义安全标准,确保代码不包含硬编码凭证或安全漏洞。
- 保存时安全扫描:定义一个用于安全审查的智能体钩子,扫描 API 密钥、私钥、IP 地址等内容,并自动进行修复。
- 演示:
- 现有代码:一个包含硬编码 IP 地址的简单示例。
- 创建智能体钩子:定义一个智能体钩子,在保存文件时执行安全扫描。
- 结果:安全扫描将硬编码 IP 地址识别为高风险项,并将其改为使用环境变量;如果环境变量不存在,则默认使用 localhost。
- 安全左移:安全扫描在保存文件时执行,将安全检查提前到开发流程前端,而不是等到 CI/CD 阶段。
智能体钩子的其他用途
- Figma 设计对比:
- 集成:使用智能体钩子,在保存文件时将已编码元素与 Figma UX 设计进行对比。
- Figma MCP:集成 Figma MCP,确保代码与既定设计保持一致。
- 示例:提示系统使用 Angular 实现一份 Figma 设计,直接根据 Figma 设计生成代码。
MCP 服务器集成(从 Figma 到代码)
- 示例:集成 Figma MCP,并提示系统根据 Figma 设计生成 Angular 代码。
- 结果:系统直接根据 Figma 设计生成代码,将设计转化为网站。
MCP 服务器集成(最新文档)
- 集成:使用 MCP 服务器查阅最新文档,例如 AWS 文档和知识库。
- 示例:集成 AWS 文档,并提示系统检查本地编写的代码能否在 AWS Lambda 上运行。
- 结果:系统不仅会识别代码部署到 Lambda 时存在的问题,还会制定迁移计划,并建议使用 S3 预签名 URL 传输文件等变更。
Kiro 中的规格驱动开发
- 规格驱动开发:被誉为敏捷开发诞生以来最出色的进步。
- 敏捷开发的挑战:由于需求不断变化,加之项目经理、业务分析师与用户之间沟通不畅,用户提出的需求往往与最终交付的成果不一致。
- 自适应方法:Kiro 的规格驱动开发正视这些挑战,在整个开发过程中动态调整。
真实用例演示
- 用户需求:用户希望构建一个文件分块应用,具体是将一个 500 MB 文件拆分成五个 100 MB 的分块。
- [ 1 ] 隐含需求:
- 图形用户界面(GUI)
- 通过拖放输入文件
- 分块配置选项(例如拆成五块,或每块 10 MB)
- 可下载单个文件,以及包含所有分块文件的 zip 文件
- [ 2 ] 开发时间:
- 传统估算:两周
- Kiro 开发:六小时(通过一段 10 分钟的加速视频演示)
- [ 3 ] 视频演示:
- 一段 10 分钟的视频展示了使用 Kiro 完成六小时开发的全过程,左上角显示实时计时器。
初始需求与设计
- 用户输入:产品负责人输入初始需求,要求构建一个将大文件拆分成较小分块的应用。
- Kiro 的响应:Kiro 在一分钟内生成七项用户需求及相应验收标准。
- 用户反馈:产品负责人审阅并批准这些需求。
设计调整
- 初始设计:Kiro 创建初始设计,并假设采用命令行界面(CLI)。
- 用户纠正:产品负责人要求使用图形用户界面(GUI),而不是 CLI。
- 实时更新:Kiro 实时调整设计,加入 GUI 和后端 API。
迭代式设计过程
- 待办事项文件:使用待办事项文件跟踪过程中出现的其他问题和需求。
- [ 1 ] 产品负责人询问如何将文件从前端发送到后端。
- 设计更新:更新设计文档,说明上传机制。
- [ 2 ] 新需求:产品负责人增加一项需求,要求支持最大一太字节的文件。
- 设计更新:更新设计,以处理一太字节的文件。
- [ 3 ] 产品负责人询问后端如何在分块前得知文件大小。
- 设计更新:补充更多设计细节,以回答这个问题。
任务规划
- 创建任务计划:确定需求和设计后,创建任务计划,将项目拆分为各项独立任务(任务 1 至任务 10)。
- 所用时间:从提出初始需求到完成任务规划,整个过程不到 20 分钟。
任务规划与编码
- 任务可追溯性:每项任务都可以追溯到对应需求,确保从需求、设计到任务计划的端到端可追溯性。
- 单元测试:Kiro 在编写代码的同时生成单元测试。任务必须通过所有单元测试,才算完成。
- 调试:Kiro 会自动调试并修复单元测试失败问题。
- 错误处理与优化:Kiro 将错误处理、验证和性能优化纳入任务范围。
测试与错误修复
- 初次测试:首次测试应用时发现了 UX 问题(例如蓝色字体难以阅读)。
- 错误识别:上传文件时发生错误,通过日志消息定位了该错误。
- 智能体辅助调试:将错误代码复制并粘贴给智能体,由智能体尝试修复错误。
- 上传成功:错误修复后,大文件成功上传。
- 分块与下载:应用成功拆分文件,并支持下载单个分块和 zip 文件。
UX 改进
- 更改颜色:将蓝色字体改为青色,提高可读性。
- 按钮外观:将按钮的灰色改为更合适的颜色。
- 多文件上传:使用一个 2 GB 文件测试应用,确保其能够处理大文件。
测试自动化
- 手动测试:最初采用手动测试,包括拆分多个文件以及检查 UX 问题。
- 自动化:Kiro 使用 Mermaid 图创建设计和文档,并通过 Playwright 实现自动化。
- 跨浏览器测试:在 Firefox、Chrome、Safari 和移动设备上运行自动化测试。
- 端到端流程:整个过程展示了从需求到软件构建,再到自动化实时验证的端到端流程,全部在 IDE 内完成。
总结
- 这一过程展示了 Kiro 处理规格驱动开发的能力,涵盖需求、设计、编码、单元测试和 UX 改进;与传统方法相比,所需时间大幅缩短。
结论与敏捷开发的未来
- 敏捷团队规模:由一名资深工程师和一名领域或职能专家组成,两人在同一个 IDE 中协作。
- 时间对比:从需求到自动化测试,整个过程仅用六小时,而完整敏捷团队给出的估算是两周。
- 规格驱动开发:本次分享旨在让大家初步了解使用 Kiro 进行规格驱动开发可以实现哪些成果。
