AWS Community Day Hong Kong 2025 Recap

告别氛围编程:使用 Kiro 进行规格驱动开发

Recap Series

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 进行规格驱动开发可以实现哪些成果。