Kiro 深度使用介绍 | 亚马逊挑战Cursor重建开发流程
亚马逊进入AI开发工具市场, AI 开发神器有多神?Kiro 这款 AI IDE 能让编程像变魔术,还能轻松搞定生产落地难题。它靠 Specs 和 Hooks 重构流程,能否挑战Cursor的地位?本文深度使用解读!
作者:黑夜路人
时间:2025年7月
Kiro 快速介绍
Kiro是什么
Kiro 是亚马逊公司在2025年7月16日发布的AI IDE(AI驱动的集成化开发工具),Kiro的核心理念是帮助开发者从概念到开发高效交付。
开发者有过这样的经历:写了几个prompt,很快就构建出一个能运行的应用程序,感觉像变魔术一样。但当你真正想要将它部署到生产环境中时,却发现困难重重。
- 模型在构建过程中做出了哪些假设?
- 在引导Agent时做了很多决策,但这些决策有没有被记录?
- 需求很模糊,代码是否合规无法判断?
- 系统设计不透明,维护困难重重?
而擅长Spec-Driven Development(以需求为导向的开发)的Kiro,就是这些问题的方式之一。
Kiro 通过 Specs(Specification)和Hooks(自动化触发器)两大核心模式,简化开发流程。Kiro specs 先聊天,再构建,能将需求分解为用户故事、设计文档和技术任务,让开发目标明确且可追溯;Kiro hooks 先规划,再构建,优先创建需要文档和设计,通过事件驱动自动化,自动完成测试更新、文档刷新等重复性任务,提升开发效率并减少错误。Kiro 支持多种编程语言和插件,兼容 VS Code 设置,提供完整的 AI 编程体验。
Kiro正处于预览阶段,目前完全免费,用户可以免费使用Claude-Sonnet-4和Claude-Opus-4模型。


为什么亚马逊可以这么硬气的使用Claude模型,主要是因为它是Anthropic重要投资人之一。2023年9月,亚马逊向Anthropic注资12.5亿美元。2024年3月,亚马逊宣布对Anthropic追加27.5亿美元投资,总投资达40亿美元。2024年11月22日,亚马逊再次向Anthropic追加投资40亿美元,使其总投资额达到80亿美元。亚马逊通过AWS已累计向Anthropic投资超过80亿美元,是Anthropic最大的机构投资者之一。
Kiro的主要功能
- 需求管理(Specs):将模糊需求拆解为具体用户需求,补充边界条件,生成开发指导手册,并保持需求与代码同步。
- 自动化开发(Hooks):自动更新测试文件、刷新文档、扫描安全问题和校验代码规范。
- 集成与扩展:支持 Model Context Protocol(MCP)连接专业工具,提供引导规则和代理聊天功能,满足多样化开发需求。
- 兼容性与用户体验:基于 Code OSS构建,保留 VS Code 设置和插件,支持多平台和主流编程语言,无缝融入现有开发环境。
- 预览代码修改:执行任务时,Follow按钮支持预览代码修改,把选择权交给用户。
- 即时撤销修改:发现不对劲可立即点击Revert按钮撤销,避免错误。
- Agentic Chat:结合上下文进行即时编程任务。


Kiro的应用场景
- 快速原型开发:快速将概念转化为可运行的原型,适合初创团队或个人开发者快速验证想法。
- 复杂系统开发:帮助团队从需求分析到设计、实现,再到部署,确保复杂系统的开发流程清晰、高效。
- 安全应用开发:用 Kiro 的自动化触发器和最佳实践,快速开发安全应用,如加密文件共享系统。
- 游戏开发:不擅长游戏开发的开发者,快速构建游戏逻辑和功能。
- 团队协作开发:通过规格和自动化触发器,确保团队成员遵循相同的代码标准和开发流程,提升协作效率。
Kiro 快速使用
如何使用Kiro
- 访问官网并下载:访问 kiro官网 kiro.dev ,下载适合操作系统的 Kiro 安装包。
- 安装 Kiro:运行下载的安装程序,按照提示完成安装。
- 注册与登录:打开 Kiro IDE,选择登录方式(如 Google 或 GitHub 账号),完成注册或登录。
- 创建或导入项目:在 Kiro IDE 中创建新项目或导入现有代码库。
- 使用 Kiro 的核心功能:
- Specs:输入需求描述,Kiro 自动生成用户故事、设计文档和任务。
- Hooks:设置自动化触发器,Kiro 在保存文件时自动执行任务,如更新测试文件或文档。
- 开始开发:用 Kiro 的代码编辑和 AI 功能进行开发,逐步完成任务。
- 提交代码:用 Kiro 的 Git 集成功能提交代码,自动化触发器自动进行安全和规范检查。
下载
地址:https://kiro.dev/downloads/

安装
安装过程非常明显可以看出来就是VSCode魔改来的,跟 Cursor/Windsurf/Trae 一样。
安装后打开主界面:

个人推荐Google账户登录:(因为你可以无限制注册gmail账户 ^_^ )

登录后,可以导入你的VSCode配置和扩展(特别是VSCode里安装了RooCode/AMP等都可以无缝导入):


注意,RooCode、Cline、AMP 等插件都能够正常导入,但是大概率Augment无法导入。
如果Augment这样的扩展无法导入,那么就手工导入就好了,在VSCode中如下操作:

成功提示:

把你VSCode中安装的Augment以VSIX方式导出下载到本地,会变成一个类似于下面文件名的文件:
augment.vscode-augment-x.xxx.x.vsix

然后在Kiro中导入这个VSIX插件,按 Ctrl + Shif + P 键 ,搜索“VSIX”:

选中刚才从VSCode中保存的VSIX文件:

安装完成后,在Kiro中就会出现Augment插件了:

不过,目前Augment还无法唤醒Kiro完成登录操作,估计因为Kiro IDE太新,还有兼容性方面的原因,可以再等等,上面只是告诉如何安装Augment,方便后续并行使用:

模式说明
它核心主要是有两种模式:Vibe 和 Spec ,可以认为就是“氛围”模式和“规格”模式。

Vibe(氛围模式),就是类似于标准的 Cursor/Winsurf 的模式,我们叫做聊天式编程,这个没什么好讲的。
Spec(规格模式),这个是Kiro的核心区别,就是把 需求、技术、设计等都规格化:
需求规格说明书(Requirements Specification)
描述软件系统 “需要做什么”,包括用户需求、功能需求、性能需求等。
例如:“用户可以上传图片并调整尺寸”、“系统响应时间不超过 2 秒”。
技术规格说明书(Technical Specification)
描述软件系统 “如何实现”,包括架构设计、数据结构、接口定义、算法逻辑等。
例如:“使用 REST API 实现用户认证”、“采用 MySQL 存储用户数据”。
设计规格说明书(Design Specification)
专注于软件的界面设计、交互流程和视觉规范。
例如:“登录页面包含用户名 / 密码输入框和登录按钮”、“主色调为蓝色 (#165DFF)”。
“Spec” 是Kiro 核心功能之一,它利用 AI 自动将开发者的自然语言描述转化为结构化的软件开发规范。
- 自动生成需求细节:将模糊的需求(如 “添加评论系统”)拆解为具体的用户故事(如 “用户可以发布评论”、“作者可以删除恶意评论”)。
- 补充技术细节:生成系统设计文档,包括数据库模式、API 接口、数据流图等。
- 创建任务清单:将需求分解为可执行的开发任务,并为每个任务添加测试用例和验收标准。
对于Kiro的“spec” 价值:
- 减少误解:清晰的规范能避免团队成员对需求或设计产生歧义。
- 提高效率:开发人员可以直接根据规范编写代码,无需反复沟通。
- 便于测试和维护:规范为测试提供了明确的标准,也为后续维护提供了文档支持。
我们后面重点介绍一下Spec模式,因为Vibe模式跟Cursor差不多,就不赘述,自行体验就可以了。
Spec 模式实战
假设我们的spec(需求规格如下,示例):
### 用户注册功能规格说明书
#### 1. 需求概述
用户可以通过邮箱和密码创建账户,并接收验证邮件。
#### 2. 功能细节
- **输入字段**:
- 邮箱地址(格式验证)
- 密码(至少8位,包含字母和数字)
- 确认密码
- 同意隐私政策(勾选框)
- **业务逻辑**:
- 邮箱已注册时提示错误
- 密码不一致时提示错误
- 注册成功后发送验证邮件
- 用户需点击邮件中的链接激活账户
#### 3. 技术实现
- **API 接口**:
- POST /api/register
- 请求参数:{ email, password, agreeTerms }
- 响应:201(成功)或 400(错误)
- **数据库表**:
- users 表:id, email, password_hash, is_verified, created_at
在Spec模式下,我们跟Kiro交互。
第一步:优化需求文档(生成用户故事,Requirement)

然后它就会在 .kiro/specs 目录下面创建一个用户注册目录下面生产对应的需求文档:

它针对我们上面模糊的需求文档明显做了很多的扩充工作,变成了一个个的用户故事,它扩充后的:
# 需求文档
## 介绍
用户注册功能允许新用户通过提供邮箱地址和密码来创建账户。系统将验证用户输入的信息,创建账户后发送验证邮件,用户需要通过邮件激活账户才能完成注册流程。
## 需求
### 需求 1
**用户故事:** 作为一个新用户,我希望能够使用邮箱和密码注册账户,以便我可以访问系统功能。
#### 验收标准
1. 当用户访问注册页面时,系统应当显示包含邮箱、密码、确认密码和隐私政策同意选项的注册表单
2. 当用户输入邮箱地址时,系统应当验证邮箱格式的有效性
3. 当用户输入密码时,系统应当验证密码至少包含8个字符且包含字母和数字
4. 当用户输入确认密码时,系统应当验证确认密码与原密码一致
5. 当用户未勾选隐私政策同意选项时,系统应当阻止注册并显示错误提示
### 需求 2
**用户故事:** 作为系统管理员,我希望防止重复邮箱注册,以便维护用户数据的唯一性。
#### 验收标准
1. 当用户使用已注册的邮箱地址注册时,系统应当返回错误信息"该邮箱已被注册"
2. 当用户使用未注册的邮箱地址时,系统应当允许继续注册流程
3. 系统应当在数据库中检查邮箱地址的唯一性
### 需求 3
**用户故事:** 作为一个新注册用户,我希望收到邮箱验证邮件,以便我可以激活我的账户。
#### 验收标准
1. 当用户成功提交注册信息时,系统应当创建未激活状态的用户账户
2. 当账户创建成功时,系统应当向用户邮箱发送包含激活链接的验证邮件
3. 当用户点击邮件中的激活链接时,系统应当将用户账户状态更新为已激活
4. 当用户尝试使用未激活账户登录时,系统应当提示"请先激活您的账户"
### 需求 4
**用户故事:** 作为开发者,我希望有清晰的API接口来处理用户注册,以便前端可以正确调用注册功能。
#### 验收标准
1. 当前端发送POST请求到/api/register端点时,系统应当接收包含email、password和agreeTerms字段的JSON数据
2. 当注册成功时,系统应当返回HTTP状态码201和成功消息
3. 当注册失败时,系统应当返回HTTP状态码400和具体的错误信息
4. 当服务器内部错误时,系统应当返回HTTP状态码500和通用错误消息
### 需求 5
**用户故事:** 作为系统架构师,我希望有合适的数据库结构来存储用户信息,以便支持用户管理功能。
#### 验收标准
1. 系统应当创建users表包含以下字段:id(主键)、email(唯一索引)、password_hash、is_verified、created_at
2. 当存储用户密码时,系统应当使用安全的哈希算法而不是明文存储
3. 当创建新用户记录时,系统应当自动设置created_at为当前时间戳
4. 当用户激活账户时,系统应当将is_verified字段更新为true
我们继续让它完成下一步。
第二步:进行技术设计(Design)
我们跟Kiro讲继续下一步,它会进入技术设计:

然后它生成了 design 技术设计的文档,包括技术选型都补全了:

如果对它产出的技术设计不满意,还可以互动迭代修改:

Kiro 经过几轮迭代后生成的完整设计:
# 设计文档
## 概述
用户注册功能采用前后端分离的架构设计,使用RESTful API进行通信。后端负责业务逻辑处理、数据验证和存储,前端负责用户界面和用户体验。系统将实现安全的密码存储、手机号短信验证和用户状态管理。
## 架构
### 整体架构
```mermaid
graph TB
A[前端注册页面] --> B[API网关]
B --> C[用户注册服务]
C --> D[SQLite数据库]
C --> E[短信服务]
E --> F[阿里云短信API]
subgraph "后端服务"
C
G[验证中间件]
H[密码加密服务]
I[短信模板服务]
end
C --> G
C --> H
C --> I
```
### 技术栈选择
- **后端框架**: Node.js + Express.js
- **数据库**: SQLite
- **ORM**: Prisma
- **密码加密**: bcrypt
- **短信服务**: 阿里云短信服务 (Alibaba Cloud SMS)
- **验证库**: Joi
- **前端框架**: Next.js + React + TypeScript
- **构建工具**: Vite
- **状态管理**: Zustand
- **UI组件库**: ShadCN/UI + Tailwind CSS
- **HTTP客户端**: Axios
- **表单验证**: React Hook Form + Zod
## 组件和接口
### 后端组件
#### 1. 用户注册控制器 (UserRegistrationController)
```typescript
interface UserRegistrationController {
register(req: Request, res: Response): Promise<Response>
sendVerificationCode(req: Request, res: Response): Promise<Response>
verifyPhone(req: Request, res: Response): Promise<Response>
}
```
**职责:**
- 处理注册请求
- 协调各个服务组件
- 返回适当的HTTP响应
#### 2. 用户服务 (UserService)
```typescript
interface UserService {
createUser(userData: CreateUserDto): Promise<User>
findUserByPhone(phone: string): Promise<User | null>
activateUser(phone: string, code: string): Promise<boolean>
generateVerificationCode(phone: string): Promise<string>
validateVerificationCode(phone: string, code: string): Promise<boolean>
}
```
**职责:**
- 用户业务逻辑处理
- 用户数据操作
- 验证码管理
#### 3. 短信服务 (SmsService)
```typescript
interface SmsService {
sendVerificationCode(phone: string, code: string): Promise<boolean>
generateVerificationCode(): string
validatePhoneFormat(phone: string): boolean
}
```
**职责:**
- 发送验证短信
- 生成验证码
- 手机号格式验证
#### 4. 验证中间件 (ValidationMiddleware)
```typescript
interface ValidationMiddleware {
validateRegistrationData(req: Request, res: Response, next: NextFunction): void
validatePhoneFormat(phone: string): boolean
validatePasswordStrength(password: string): boolean
}
```
**职责:**
- 输入数据验证
- 格式检查
- 业务规则验证
### 前端组件
#### 1. 注册表单组件 (RegistrationForm)
```typescript
interface RegistrationFormProps {
onSubmit: (data: RegistrationData) => void
onSendCode: (phone: string) => void
loading: boolean
errors: ValidationErrors
codeSent: boolean
}
```
**职责:**
- 用户输入收集
- 实时表单验证
- 错误信息显示
- 验证码发送触发
#### 2. Zustand状态管理 (RegistrationStore)
```typescript
interface RegistrationStore {
formData: RegistrationData
loading: boolean
errors: ValidationErrors
submitStatus: 'idle' | 'code-sent' | 'success' | 'error'
codeSent: boolean
setFormData: (data: Partial<RegistrationData>) => void
setLoading: (loading: boolean) => void
setErrors: (errors: ValidationErrors) => void
sendVerificationCode: (phone: string) => Promise<void>
verifyAndRegister: (data: RegistrationData) => Promise<void>
reset: () => void
}
```
**职责:**
- 全局状态管理
- API调用协调
- 用户反馈处理
### API接口设计
#### 发送验证码接口
**端点:** `POST /api/send-verification-code`
**请求格式:**
```json
{
"phone": "13800138000"
}
```
**响应格式:**
成功响应 (200):
```json
{
"success": true,
"message": "验证码已发送,请查收短信",
"data": {
"phone": "13800138000",
"expiresIn": 300
}
}
```
错误响应 (400):
```json
{
"success": false,
"message": "发送失败",
"errors": [
{
"field": "phone",
"message": "手机号格式不正确"
}
]
}
```
#### 注册接口
**端点:** `POST /api/register`
**请求格式:**
```json
{
"phone": "13800138000",
"password": "SecurePass123",
"verificationCode": "123456",
"agreeTerms": true
}
```
**响应格式:**
成功响应 (201):
```json
{
"success": true,
"message": "注册成功,账户已激活",
"data": {
"userId": "uuid-string",
"phone": "13800138000"
}
}
```
错误响应 (400):
```json
{
"success": false,
"message": "注册失败",
"errors": [
{
"field": "phone",
"message": "该手机号已被注册"
}
]
}
```
## 数据模型
### 用户表 (users)
```sql
CREATE TABLE users (
id TEXT PRIMARY KEY,
phone VARCHAR(20) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
is_verified BOOLEAN DEFAULT FALSE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_users_phone ON users(phone);
```
### 验证码表 (verification_codes)
```sql
CREATE TABLE verification_codes (
id TEXT PRIMARY KEY,
phone VARCHAR(20) NOT NULL,
code VARCHAR(6) NOT NULL,
expires_at DATETIME NOT NULL,
used BOOLEAN DEFAULT FALSE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_verification_codes_phone ON verification_codes(phone);
CREATE INDEX idx_verification_codes_code ON verification_codes(code);
```
### 数据模型接口
```typescript
interface User {
id: string
phone: string
passwordHash: string
isVerified: boolean
createdAt: Date
updatedAt: Date
}
interface VerificationCode {
id: string
phone: string
code: string
expiresAt: Date
used: boolean
createdAt: Date
}
interface CreateUserDto {
phone: string
password: string
verificationCode: string
agreeTerms: boolean
}
interface RegistrationData {
phone: string
password: string
confirmPassword: string
verificationCode: string
agreeTerms: boolean
}
```
## 错误处理
### 错误类型定义
```typescript
enum ErrorCodes {
PHONE_ALREADY_EXISTS = 'PHONE_ALREADY_EXISTS',
INVALID_PHONE_FORMAT = 'INVALID_PHONE_FORMAT',
WEAK_PASSWORD = 'WEAK_PASSWORD',
PASSWORD_MISMATCH = 'PASSWORD_MISMATCH',
TERMS_NOT_AGREED = 'TERMS_NOT_AGREED',
SMS_SEND_FAILED = 'SMS_SEND_FAILED',
INVALID_VERIFICATION_CODE = 'INVALID_VERIFICATION_CODE',
CODE_EXPIRED = 'CODE_EXPIRED',
CODE_ALREADY_USED = 'CODE_ALREADY_USED',
TOO_MANY_ATTEMPTS = 'TOO_MANY_ATTEMPTS'
}
```
### 错误处理策略
1. **输入验证错误**: 返回400状态码,包含具体字段错误信息
2. **业务逻辑错误**: 返回400状态码,包含业务相关错误消息
3. **系统错误**: 返回500状态码,记录详细日志但只返回通用错误消息
4. **短信发送失败**: 记录错误但不阻止用户注册,提供重发机制
### 全局错误处理中间件
```typescript
interface ErrorHandler {
handleValidationError(error: ValidationError): ErrorResponse
handleBusinessError(error: BusinessError): ErrorResponse
handleSystemError(error: SystemError): ErrorResponse
logError(error: Error, context: RequestContext): void
}
```
## 测试策略
### 单元测试
1. **用户服务测试**
- 用户创建逻辑
- 手机号唯一性检查
- 密码加密验证
- 验证码生成和验证
2. **验证中间件测试**
- 手机号格式验证
- 密码强度验证
- 必填字段检查
3. **短信服务测试**
- 短信发送功能
- 验证码生成
- 阿里云API调用
### 集成测试
1. **API端点测试**
- 注册流程完整测试
- 错误场景测试
- 边界条件测试
2. **数据库集成测试**
- 用户数据持久化
- 约束条件验证
- 事务处理
### 端到端测试
1. **用户注册流程**
- 表单填写和提交
- 短信验证码接收和验证
- 账户激活确认
2. **错误处理流程**
- 重复手机号注册
- 无效输入处理
- 网络错误处理
### 测试工具
- **单元测试**: Jest + Supertest
- **集成测试**: Jest + Test Database
- **端到端测试**: Cypress
- **API测试**: Postman/Newman
## 安全考虑
### 密码安全
1. **密码加密**: 使用bcrypt进行密码哈希,salt轮数设置为12
2. **密码策略**: 最少8位,包含字母和数字
3. **密码传输**: 仅通过HTTPS传输
### 验证码安全
1. **验证码生成**: 使用crypto.randomInt生成6位数字验证码
2. **验证码过期**: 设置5分钟过期时间
3. **一次性使用**: 验证后立即标记为已使用
4. **阿里云短信安全**: 使用AccessKey和AccessSecret进行API认证
### 输入验证
1. **SQL注入防护**: 使用参数化查询
2. **XSS防护**: 输入数据清理和转义
3. **CSRF防护**: 实现CSRF令牌验证
### 速率限制
1. **注册限制**: 每IP每小时最多5次注册尝试
2. **短信发送限制**: 每手机号每小时最多3次验证码发送
3. **验证尝试限制**: 每验证码最多5次验证尝试
## 性能优化
### 数据库优化
1. **索引策略**: 在phone和verification_code字段上创建索引
2. **SQLite优化**: 启用WAL模式提高并发性能
3. **查询优化**: 使用高效的查询语句和预编译语句
### 缓存策略
1. **验证码缓存**: 使用内存缓存活跃的验证码
2. **手机号检查缓存**: 缓存最近检查的手机号存在性结果
3. **静态资源缓存**: 前端资源使用CDN和浏览器缓存
### 异步处理
1. **短信发送**: 使用消息队列异步发送短信
2. **日志记录**: 异步写入日志文件
3. **数据库写入**: 使用事务批量处理
第三步:制定实施计划(Task)
下一步就是生成实施计划,就是生成执行中需要的Task:

检查没问题,最后生产的 task.md 内容如下:
# 实施计划
- [ ] 1. 项目初始化和基础配置
- 在kiro_test目录下创建前后端分离的项目结构(frontend/backend目录)
- 配置后端Node.js + Express.js + TypeScript开发环境
- 配置前端Next.js + React + TypeScript + Vite开发环境
- 安装和配置Tailwind CSS、ShadCN/UI组件库
- 配置Zustand状态管理
- 设置基础中间件(CORS、JSON解析、错误处理)
- _需求: 需求1.1, 需求4.1_
- [ ] 2. 数据库设计和初始化
- 在后端项目中配置Prisma ORM连接SQLite数据库
- 创建用户表和验证码表的Prisma schema定义
- 生成并运行数据库迁移文件
- 在手机号字段上创建唯一索引
- 编写数据库连接测试和基础查询功能
- _需求: 需求5.1, 需求5.2, 需求5.3, 需求5.4_
- [ ] 3. 阿里云短信服务集成
- 安装阿里云短信SDK依赖包
- 创建短信服务类,实现发送验证码功能
- 实现6位数字验证码生成逻辑
- 实现手机号格式验证功能
- 编写短信服务的单元测试用例
- _需求: 需求3.1, 需求3.2_
- [ ] 4. 用户数据访问层实现
- 创建用户数据访问层(UserRepository类)
- 实现用户CRUD操作方法
- 实现根据手机号查询用户功能
- 实现用户激活状态更新功能
- 编写用户数据访问层单元测试
- _需求: 需求2.1, 需求2.2, 需求5.1_
- [ ] 5. 验证码数据访问层实现
- 创建验证码数据访问层(VerificationCodeRepository类)
- 实现验证码存储和查询功能
- 实现验证码过期检查和清理功能
- 实现验证码使用状态更新功能
- 编写验证码数据访问层单元测试
- _需求: 需求3.1, 需求3.2, 需求3.3_
- [ ] 6. 用户业务逻辑服务实现
- 创建用户业务逻辑服务(UserService类)
- 实现用户注册业务逻辑
- 实现密码加密和验证功能(使用bcrypt)
- 实现手机号唯一性检查逻辑
- 编写用户服务层单元测试
- _需求: 需求1.1, 需求2.1, 需求2.2, 需求2.3_
- [ ] 7. 验证码业务逻辑服务实现
- 创建验证码业务逻辑服务(VerificationCodeService类)
- 实现验证码生成、存储和验证完整流程
- 实现验证码过期时间管理(5分钟过期)
- 实现验证码一次性使用逻辑
- 编写验证码服务层单元测试
- _需求: 需求3.1, 需求3.2, 需求3.3_
- [ ] 8. 请求数据验证中间件
- 创建输入数据验证中间件(使用Joi库)
- 实现手机号格式验证规则
- 实现密码强度验证规则(至少8位,包含字母和数字)
- 实现必填字段检查和错误消息返回
- 编写验证中间件单元测试
- _需求: 需求1.2, 需求1.3, 需求1.4, 需求1.5_
- [ ] 9. 发送验证码API接口实现
- 创建POST /api/send-verification-code路由处理器
- 集成手机号验证和短信发送功能
- 实现发送频率限制(每手机号每小时最多3次)
- 返回标准化JSON响应格式
- 编写API接口集成测试用例
- _需求: 需求3.1, 需求3.2_
- [ ] 10. 用户注册API接口实现
- 创建POST /api/register路由处理器
- 集成注册数据验证和用户创建流程
- 实现验证码校验和用户激活逻辑
- 实现重复手机号注册检查
- 编写注册API集成测试用例
- _需求: 需求1.1, 需求1.2, 需求1.3, 需求1.4, 需求1.5, 需求2.1, 需求2.2, 需求3.3, 需求4.2, 需求4.3_
- [ ] 11. 全局错误处理中间件
- 实现全局错误捕获和处理中间件
- 创建标准化错误响应格式
- 实现不同类型错误的分类处理
- 实现错误日志记录功能
- 编写错误处理中间件测试用例
- _需求: 需求4.2, 需求4.3, 需求4.4_
- [ ] 12. 前端Zustand状态管理store
- 创建用户注册相关的Zustand状态store
- 实现表单数据状态管理
- 实现API调用状态管理(loading、error、success状态)
- 实现验证码发送状态和倒计时管理
- 编写状态管理逻辑单元测试
- _需求: 需求1.1, 需求3.1_
- [ ] 13. 注册表单UI组件开发
- 使用ShadCN/UI组件创建注册表单
- 实现手机号输入框和实时格式验证
- 实现密码和确认密码输入框
- 实现验证码输入框
- 实现隐私政策同意复选框
- 使用Tailwind CSS进行样式美化
- _需求: 需求1.1, 需求1.2, 需求1.3, 需求1.4, 需求1.5_
- [ ] 14. 验证码发送功能组件
- 实现发送验证码按钮组件
- 实现60秒倒计时功能和按钮禁用状态
- 集成Zustand store的验证码发送方法
- 实现发送成功/失败的Toast提示
- 编写验证码发送组件交互测试
- _需求: 需求3.1, 需求3.2_
- [ ] 15. 表单验证和提交逻辑
- 使用React Hook Form + Zod实现客户端表单验证
- 实现实时输入验证和错误提示显示
- 集成用户注册API调用功能
- 实现注册成功/失败的用户反馈
- 处理各种API错误场景的UI展示
- _需求: 需求1.2, 需求1.3, 需求1.4, 需求1.5, 需求2.1, 需求3.3_
- [ ] 16. 注册页面组件整合
- 创建完整的用户注册页面组件
- 集成表单组件、状态管理和API调用
- 实现页面布局和响应式设计
- 实现加载状态、成功状态和错误状态的UI
- 添加页面标题和SEO优化
- _需求: 需求1.1, 需求4.1_
- [ ] 17. HTTP客户端封装和配置
- 使用Axios创建HTTP请求客户端
- 实现请求和响应拦截器
- 封装注册相关的API调用方法
- 实现请求错误处理和重试机制
- 编写API客户端功能测试
- _需求: 需求4.1, 需求4.2, 需求4.3_
- [ ] 18. 端到端功能测试
- 使用Cypress编写用户注册流程端到端测试
- 测试完整的注册流程(输入→发送验证码→验证→注册成功)
- 测试各种错误场景的处理(重复手机号、验证码错误等)
- 测试表单验证和用户交互反馈
- 验证数据库中用户数据的正确性
- _需求: 需求1.1, 需求1.2, 需求1.3, 需求1.4, 需求1.5, 需求2.1, 需求2.2, 需求2.3, 需求3.1, 需求3.2, 需求3.3_
- [ ] 19. 安全加固和性能优化
- 实现API请求速率限制中间件
- 配置CORS和安全请求头
- 优化SQLite数据库查询性能和索引
- 实现前端代码分割和懒加载优化
- 配置生产环境安全设置
- _需求: 所有安全和性能相关需求_
如果你对执行计划不满意,可以点击更新重新找大模型生成 (使用UPdate tasks):

第四步:按照实施计划进行最终编程开发(Code)
执行实施计划:
指定某一项进行执行,在task.md文件打开它在每个section上面都有一个 Start task 按钮,点击即可执行这个环节中的任务:

也可以直接指令,然后从头开始一个个执行:

约定好执行以后,它就会像 Cursor/Winsurf/Augment 一样去执行任务:

会生成对应的项目目录结构和一些基本配置等:

会自动生成对应的项目README,在中间也包含了项目任务进展:
# 用户注册系统
基于手机号短信验证的用户注册功能,采用前后端分离架构。
## 技术栈
### 后端
- Node.js + Express.js + TypeScript
- SQLite + Prisma ORM
- 阿里云短信服务
- bcrypt 密码加密
- Joi 数据验证
### 前端
- Next.js + React + TypeScript
- Vite 构建工具
- Zustand 状态管理
- Tailwind CSS + ShadCN/UI
- React Hook Form + Zod
## 项目结构
```
kiro_test/
├── backend/ # 后端服务
│ ├── src/ # 源代码
│ ├── prisma/ # 数据库配置
│ └── package.json
├── frontend/ # 前端应用
│ ├── src/ # 源代码
│ └── package.json
└── README.md
```
## 快速开始
### 后端服务
```bash
cd backend
npm install
npm run dev
```
### 前端应用
```bash
cd frontend
npm install
npm run dev
```
## 开发进度
- [x] 项目初始化和基础配置
- [ ] 数据库设计和初始化
- [ ] 阿里云短信服务集成
- [ ] 用户数据访问层实现
- [ ] 验证码数据访问层实现
- [ ] 用户业务逻辑服务实现
- [ ] 验证码业务逻辑服务实现
- [ ] 请求数据验证中间件
- [ ] 发送验证码API接口实现
- [ ] 用户注册API接口实现
- [ ] 全局错误处理中间件
- [ ] 前端Zustand状态管理store
- [ ] 注册表单UI组件开发
- [ ] 验证码发送功能组件
- [ ] 表单验证和提交逻辑
- [ ] 注册页面组件整合
- [ ] HTTP客户端封装和配置
- [ ] 端到端功能测试
- [ ] 安全加固和性能优化
## 环境配置
### 后端环境变量
复制 `.env.example` 为 `.env` 并配置:
```env
DATABASE_URL="file:./dev.db"
PORT=3001
ALIBABA_CLOUD_ACCESS_KEY_ID=your_access_key_id
ALIBABA_CLOUD_ACCESS_KEY_SECRET=your_access_key_secret
```
### 前端环境变量
复制 `.env.example` 为 `.env.local` 并配置:
```env
NEXT_PUBLIC_API_URL=http://localhost:3001
```
## 功能特性
- 📱 手机号注册
- 🔐 短信验证码验证
- 🛡️ 密码安全加密
- ⚡ 实时表单验证
- 🎨 现代化UI设计
- 📊 完整的错误处理
- 🧪 全面的测试覆盖
## 作者
老黑
package.json文件
{
"name": "user-registration-backend",
"version": "1.0.0",
"description": "用户注册功能后端服务",
"main": "dist/index.js",
"scripts": {
"dev": "tsx watch src/index.ts",
"build": "tsc",
"start": "node dist/index.js",
"test": "jest",
"test:watch": "jest --watch",
"db:generate": "prisma generate",
"db:migrate": "prisma migrate dev",
"db:studio": "prisma studio"
},
"keywords": ["用户注册", "Express", "TypeScript", "Prisma", "SQLite"],
"author": "老黑",
"license": "MIT",
"dependencies": {
"express": "^4.18.2",
"cors": "^2.8.5",
"helmet": "^7.1.0",
"bcrypt": "^5.1.1",
"joi": "^17.11.0",
"prisma": "^5.7.1",
"@prisma/client": "^5.7.1",
"@alicloud/dysmsapi20170525": "^3.0.0",
"@alicloud/openapi-client": "^0.4.6",
"dotenv": "^16.3.1",
"express-rate-limit": "^7.1.5"
},
"devDependencies": {
"@types/express": "^4.17.21",
"@types/cors": "^2.8.17",
"@types/bcrypt": "^5.0.2",
"@types/node": "^20.10.5",
"typescript": "^5.3.3",
"tsx": "^4.6.2",
"jest": "^29.7.0",
"@types/jest": "^29.5.8",
"ts-jest": "^29.1.1",
"supertest": "^6.3.3",
"@types/supertest": "^6.0.2"
}
}
执行过程中也有需要确认的时候:

如果执行过程中,某些代码你发现写的不对,那么就可以执行撤销操作:

如果使用过程中上下文特别长,会要求你压缩上下文然后导入到新会话:


然后Summary之后的session就可以继续执行,它会先读取task的进展:

中间如果它停止或者是某些 task.md 没有顺利完成,那么就需要人工让它更新 task.md 和按照对应步骤进行执行:


然后经过一些“继续”和task的更新,然后终于能够走到最后完成步骤:

在所有代码完成以后,还需要让它跟需求、设计等进行比对,看是否完整实现了:

它会给出最终的报告:

Kiro的不足
执行过程中,非常容易发生错误,需要各种重试:

或者是模型访问的人太多:

各种奇怪错误,比如文件写不成功啥的:

目前任务执行完成了,但是没有更新task.md文档,导致如果开始新会话会不知道实际执行到了什么地方:

必须主动出发才会进行更新:

指令遵从性不是太好,比如要求中文,后面就是不改:

Kiro 使用总结
优势
-
1. 独特的Spec-Driven开发模式
- 结构化需求管理:Kiro最突出的特点是将模糊需求自动分解为结构化的用户故事、验收标准和技术任务,这解决了传统AI IDE中需求不明确、开发目标模糊的问题
- 完整的开发流程:从需求分析 → 技术设计 → 任务规划 → 代码实现,形成了闭环的开发工作流
- 可追溯性强:每个功能都有明确的需求来源和设计依据,便于后期维护和团队协作
-
2. 强大的AI能力
- 免费使用Claude-4模型:得益于亚马逊对Anthropic的80亿美元投资,用户可以免费使用最先进的Claude Sonnet-4和Opus-4模型
- 智能任务分解:能够将复杂项目分解为具体的、可执行的开发任务
- 上下文理解能力强:在整个开发过程中保持对项目需求和设计的理解
-
3. 良好的兼容性和用户体验
- VS Code生态兼容:基于VS Code OSS构建,可以无缝导入VS Code的配置和大部分插件
- 多模式支持:既有传统的Vibe聊天模式,也有创新的Spec规格模式
- 代码预览和撤销:提供Follow预览和Revert撤销功能,给用户更多控制权
-
4. 完整的项目管理
- 自动生成文档:自动创建README、技术设计文档、API文档等
- 进度跟踪:通过task.md清晰显示项目进展
- 会话压缩:支持长对话的上下文压缩和恢复
不足
-
1. 稳定性问题
- 频繁出错:使用过程中经常遇到各种错误,需要多次重试
- 服务不稳定:模型访问人数过多时容易出现服务不可用
- 文件操作问题:存在文件写入失败等技术故障
-
2. 任务执行和状态管理缺陷
- 任务状态不同步:任务完成后不自动更新task.md,导致状态不一致
- 会话恢复困难:新会话时难以准确了解实际执行进度
- 手动干预频繁:需要人工触发状态更新和任务继续
-
3. 指令遵从性问题
- 语言偏好不稳定:即使要求使用中文回复,后续对话仍可能切换回英文
- 用户意图理解偏差:在某些情况下可能误解用户指令
-
4. 产品成熟度
- 预览阶段局限:作为预览版本,功能还不够完善
- 插件兼容性:部分VS Code插件(如Augment)导入后无法正常工作
- 错误处理机制:对异常情况的处理还需要改进
总体评价
Kiro最大的创新在于Spec-Driven Development理念,这确实解决了当前AI辅助编程中的一个重要痛点——需求模糊和开发过程不可控。它通过结构化的方式将"魔术般"的AI编程变得透明和可管理,这对于企业级开发和团队协作具有重要意义。
然而,作为一个预览版产品,Kiro在稳定性和用户体验方面还有待改进。频繁的错误和不稳定的服务体验可能会影响用户的使用积极性。
对于开发者而言,Kiro值得尝试,特别是对于需要规范化开发流程的团队项目。但在关键项目中使用时,建议做好备份和应急方案。
【想要讨论AI编程和AI技术加群,请去WX公众号:黑夜路人技术】
更多推荐


所有评论(0)