介绍
本文比较了实现"规格驱动开发(SDD)"的两种代表性方法,这种方法近期受到了广泛关注。
- VSCode + GitHub Copilot + SpecKit:向现有编辑器添加 SDD 工具包
- Kiro IDE:集成了 SDD 功能的一体化 IDE
什么是规格驱动开发(SDD)?
在传统开发中,代码是核心而规格是补充。SDD 反转了这一关系,将规格视为可执行的交付物。
SDD 的主要优势
- 需求的明确化和文档化
- 为 AI 代理提供精确指令
- 减少团队之间的偏差
- 支持迭代改进流程
环境 1:VSCode + GitHub Copilot + SpecKit
概述
SpecKit 是用于在现有开发环境中实现 SDD 的开源工具包。由 GitHub 提供,通过斜杠命令与 AI 代理交互。
设置
# 安装 Specify CLI
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
# 初始化新项目
specify init my-project --ai copilot
# 或在现有项目中
specify init . --ai copilot
开发流程
1. 建立项目章程
/speckit.constitution Create principles focused on code quality,
testing standards, user experience consistency, and performance requirements
此命令生成 .specify/memory/constitution.md,定义项目范围的指导方针。
2. 创建规格
/speckit.specify Build an application that can help me organize my photos
in separate photo albums. Albums are grouped by date and can be re-organized
by dragging and dropping on the main page.
生成的文件:
.specify/specs/001-feature-name/spec.md:功能需求和用户故事
3. 创建技术实施计划
/speckit.plan The application uses Vite with minimal number of libraries.
Use vanilla HTML, CSS, and JavaScript as much as possible.
生成的文件:
plan.md:技术架构data-model.md:数据模型定义contracts/api-spec.json:API 规格research.md:技术研究文档
4. 任务分解
/speckit.tasks
生成的文件:
tasks.md:实施任务列表(带依赖关系和并行执行标记)
5. 执行实施
/speckit.implement
基于任务列表按顺序进行实施。
SpecKit 提示文件详情
SpecKit 在 .github/prompts/ 目录中生成多个提示文件。
speckit.constitution.prompt.md
目的:为项目定义基本原则和开发指南
结构:
---
description: Create or update project governing principles
---
# Project Constitution
Create a comprehensive constitution document that includes:
1. **Code Quality Standards**
- Naming conventions
- Documentation requirements
- Code review processes
2. **Testing Standards**
- Unit test coverage requirements
- Integration test strategies
- Test documentation
3. **Architecture Principles**
- Design patterns to follow
- Technology stack constraints
- Performance requirements
4. **User Experience Guidelines**
- Accessibility standards
- Responsive design requirements
- Internationalization considerations
特性:
- AI 代理在所有后续阶段都参考此文档
- 强制执行项目特定的最佳实践
- 确保团队间的一致性
speckit.specify.prompt.md
目的:以用户故事格式构建功能需求
结构:
---
description: Define requirements and user stories
---
# Specification Template
## User Stories
**As a** [user type]
**I want** [goal]
**So that** [benefit]
### Acceptance Criteria
- [ ] Criterion 1
- [ ] Criterion 2
## Functional Requirements
### FR-001: [Requirement Name]
**Priority**: High/Medium/Low
**Description**: Detailed requirement description
**Dependencies**: [Other requirements]
生成流程:
- 解析用户的自然语言描述
- 转换为用户故事
- 明确验收标准
- 分配功能需求 ID
speckit.plan.prompt.md
目的:详细说明技术实施计划
结构:
---
description: Create technical implementation plans
---
# Implementation Plan
## Technology Stack
- Frontend: [Framework/Library]
- Backend: [Framework]
- Database: [Type]
- Deployment: [Platform]
## Architecture Overview
[系统架构图、组件图]
## Data Model
[实体关系图、表定义]
## API Specifications
[端点定义、请求/响应格式]
## Implementation Phases
1. Phase 1: [Core features]
2. Phase 2: [Advanced features]
## Technical Considerations
- Security requirements
- Performance optimization
- Scalability concerns
特性:
- 遵循 constitution.md 原则
- 技术上解决 spec.md 需求
- 比较多种技术选择
speckit.tasks.prompt.md
目的:分解为具体可实施的任务
结构:
---
description: Generate actionable task lists
---
# Task Breakdown
## User Story: [Story ID]
### Task 1: [Task Name]
**File**: `src/components/Feature.tsx`
**Type**: Implementation
**Dependencies**: None
**Parallel**: [P] (if parallelizable)
**Description**: Detailed task description
**Acceptance**: How to verify completion
### Task 2: [Task Name]
**File**: `tests/Feature.test.tsx`
**Type**: Testing
**Dependencies**: Task 1
生成规则:
- 明确管理依赖关系
- 具体指定文件路径
- 考虑测试驱动开发(TDD)顺序
- 标记可并行执行的任务
speckit.implement.prompt.md
目的:基于任务列表执行实施
执行流程:
---
description: Execute implementation plan
---
# Implementation Execution
1. **Validate Prerequisites**
- Constitution exists
- Spec is complete
- Plan is approved
- Tasks are defined
2. **Parse Tasks**
- Read tasks.md
- Build dependency graph
- Identify parallel tasks
3. **Execute Tasks**
For each task in order:
- Create/modify specified files
- Run tests (if TDD)
- Validate against acceptance criteria
- Update task status
4. **Progress Reporting**
- Mark tasks as In Progress/Done
- Report errors with context
- Suggest next steps
speckit.clarify.prompt.md
目的:通过提问澄清规格中的模糊部分
结构:
---
description: Clarify underspecified areas
---
# Clarification Questions
## Coverage Analysis
[识别规格中未覆盖的领域]
## Sequential Questions
1. **Question**: [具体问题]
**Context**: [为什么这很重要]
**Options**: [可能的答案]
[记录后将答案添加到 Clarifications 部分]
特性:
- 建议在创建计划前执行
- 通过结构化问题引出答案
- 将答案整合到规格中
生成文档示例
在实际项目中,目录结构如下:
my-project/
├── .specify/
│ ├── memory/
│ │ └── constitution.md # 项目原则
│ ├── specs/
│ │ └── 001-photo-albums/
│ │ ├── spec.md # 功能规格
│ │ ├── plan.md # 实施计划
│ │ ├── tasks.md # 任务列表
│ │ ├── data-model.md # 数据模型
│ │ ├── contracts/
│ │ │ └── api-spec.json # API 规格
│ │ └── research.md # 技术研究
│ ├── scripts/
│ │ ├── create-new-feature.sh
│ │ └── setup-plan.sh
│ └── templates/
│ ├── spec-template.md
│ ├── plan-template.md
│ └── tasks-template.md
├── .github/
│ └── prompts/
│ ├── speckit.constitution.prompt.md
│ ├── speckit.specify.prompt.md
│ ├── speckit.plan.prompt.md
│ ├── speckit.tasks.prompt.md
│ ├── speckit.implement.prompt.md
│ ├── speckit.clarify.prompt.md
│ └── speckit.analyze.prompt.md
└── src/
└── [实施文件]
优势
✅ 开源:MIT 许可证下免费使用
✅ 灵活性:支持多种 AI 代理(Claude、Gemini、Copilot 等)
✅ 渐进采用:可以从需要的功能开始逐步采用
劣势
❌ 手动设置:初始配置需要多个步骤
❌ 集成复杂性:需要组合多种工具
❌ UI 体验:以命令行为中心,视觉反馈有限
❌ 学习曲线:需要理解每个命令的作用和顺序
环境 2:Kiro IDE
概述
Kiro 是支持从原型到生产的 Agentic IDE,原生集成了 SDD 功能。
设置
- 从 kiro.dev 下载 IDE
- 安装并启动
- 可以自动导入 VS Code 设置和插件
开发流程
1. 生成 Steering 文档
从 Kiro 面板选择"Generate Steering Docs",在 .kiro/steering/ 中生成以下内容:
- 项目技术栈信息
- 编码规范
- 工作流指南
2. 规格创建的三个阶段
需求阶段
使用 EARS(Easy Approach to Requirements Syntax)格式描述用户故事和验收标准:
WHEN [condition/event]
THE SYSTEM SHALL [expected behavior]
生成的文件:.kiro/specs/feature-name/requirements.md
设计阶段
记录技术架构和序列图:
生成的文件:.kiro/specs/feature-name/design.md
任务阶段
实施任务的详细计划:
生成的文件:.kiro/specs/feature-name/tasks.md
3. 使用 Hooks 自动化
事件驱动的自动化,在响应文件更改时自动执行任务:
示例:"保存 React 组件时,自动生成测试文件"
{
"hooks": [
{
"trigger": "onFileSave",
"pattern": "**/*.tsx",
"action": "generateTests"
}
]
}
Kiro 文档结构
my-project/
├── .kiro/
│ ├── steering/
│ │ ├── tech-stack.md
│ │ ├── coding-standards.md
│ │ └── workflows.md
│ └── specs/
│ └── photo-albums/
│ ├── requirements.md # EARS 格式需求
│ ├── design.md # 架构设计
│ └── tasks.md # 实施任务
└── src/
└── [实施文件]
优势
✅ 集成体验:所有功能原生集成于 IDE
✅ 可视化 UI:可视化管理规格列表和任务状态
✅ 自动化:使用 Hooks 进行后台任务执行
劣势
❌ 需要专用 IDE:需要从现有编辑器迁移
❌ 供应商锁定:依赖 Kiro 特定功能
详细比较表
| 方面 | SpecKit | Kiro |
|---|---|---|
| 设置 | 通过 CLI 手动设置 | 仅需下载并安装 |
| 学习曲线 | 需要学习命令 | 直观的 UI |
| 规格格式 | 带模板的 Markdown | EARS + Markdown |
| 任务管理 | 在 tasks.md 中文本管理 | 在 IDE 中可视化管理 |
| 自动化 | 基于脚本 | 使用 Hooks 事件驱动 |
| Git 集成 | 基于分支的自动管理 | 手动或 IDE 功能 |
| AI 代理 | 支持 10+ 种 | Kiro 集成代理 |
| 可扩展性 | 模板自定义 | MCP + Powers |
| 成本 | 免费(OSS) | 预览期间免费 |
| 团队共享 | 通过 Git 完全共享 | Git + Kiro 特定功能 |
生成文档比较
章程/Steering
SpecKit:
.specify/memory/constitution.md:单一文件- 描述整体项目原则
- 被所有命令引用
Kiro:
.kiro/steering/:多个文件- 分别存放技术栈、编码规范、工作流
- 自动生成 + 可自定义
规格
SpecKit:
# spec.md
## User Stories
As a user, I want to...
## Functional Requirements
FR-001: Feature description
## Review Checklist
- [ ] Requirements are clear
- [ ] Acceptance criteria defined
Kiro:
# requirements.md (EARS format)
WHEN user clicks upload button
THE SYSTEM SHALL display file selection dialog
WHEN file size exceeds 10MB
THE SYSTEM SHALL display error message
实施计划
SpecKit:
# plan.md
## Architecture
- Frontend: React
- Backend: Node.js
## Implementation Details
[详细实施指南]
# data-model.md
[数据库架构]
# contracts/api-spec.json
{OpenAPI specification}
Kiro:
# design.md
## Component Architecture
[系统架构图]
## Sequence Diagrams
[流程图]
## Technical Considerations
[性能、安全等]
任务
SpecKit:
# tasks.md
## User Story: US-001
### Task 1: Setup database schema
File: src/db/schema.sql
Dependencies: None
[P] Parallel: Yes
### Task 2: Create API endpoint
File: src/api/upload.ts
Dependencies: Task 1
Kiro:
# tasks.md
## Phase 1: Core Implementation
- [ ] Task 1: Database setup
Status: Not Started
Assignee: [Auto]
- [ ] Task 2: API development
Status: Not Started
Dependencies: Task 1
使用指南
何时选择 SpecKit
-
想保持现有 VSCode 环境
- 原样使用大量插件和设置
- 避免编辑器迁移成本
-
整个团队是 SDD 新手
- 使用基于命令的方法逐步学习
- 通过 Git 轻松共享文档
-
想尝试多种 AI 代理
- 在 Claude、Gemini、Copilot 等之间切换
- 避免供应商锁定
-
开源优先
- 社区驱动的开发
- 自由定制
何时选择 Kiro
-
最大化生产力
- 使用集成 UI 快速工作
- 使用 Hooks 自动化重复任务
-
注重视觉
- 可视化管理规格和任务
- 在仪表盘上查看进度
-
需要高级自动化
- 事件驱动工作流
- 通过 MCP 与外部服务集成
-
新项目
- 不受现有环境约束
- 尝试最新 SDD 体验
使用 SpecKit 提示文件的高级用法
创建自定义提示
SpecKit 提示文件可以自由定制:
---
description: Custom quality checklist generator
---
# /speckit.custom-checklist
为以下内容生成质量检查清单:
1. **安全审查**
- 认证检查
- 授权验证
- 输入验证
2. **性能审查**
- 数据库查询优化
- 缓存策略
- 负载测试结果
[输出格式:spec 目录中的 Markdown 检查清单]
管理多个规格
# 功能 1
specify init . --ai copilot
/speckit.specify Build user authentication system
# 功能 2(在新分支上)
git checkout -b feature/002-payment
/speckit.specify Integrate payment gateway
实际工作流示例
使用 SpecKit 的团队开发
graph TD
A[产品经理] -->|定义需求| B["speckit.specify"]
B --> C["生成 spec.md"]
C --> D[技术负责人]
D -->|技术选择| E["speckit.plan"]
E --> F["生成 plan.md, data-model.md"]
F --> G[开发者]
G -->|审查任务| H["speckit.tasks"]
H --> I["生成 tasks.md"]
I --> J["speckit.implement"]
J --> K["生成代码"]
K --> L[Pull Request]
L --> M[代码审查]
M -->|批准| N[Merge]使用 SpecKit 的团队开发流程:不同角色使用不同命令,通过 Git 共享文档
使用 Kiro 的个人开发
graph TD
A[想法] --> B[Spec 聊天]
B --> C[生成需求]
C --> D[生成设计]
D --> E[生成任务]
E --> F[参考 #spec 编写代码]
F --> G[保存文件]
G --> H[触发 Hooks]
H --> I[自动生成测试]
I --> J[在后台运行]使用 Kiro IDE 的个人开发流程:集成 UI 和通过 Hooks 自动化的高效开发周期
结论
SpecKit 适合希望在利用现有开发环境的同时采用 SDD 的团队。它是开源的,高度灵活,允许渐进式采用。
Kiro 适合寻求最新 Agentic IDE 体验的开发者。凭借集成 UI、自动化功能和视觉反馈,它能最大化生产力。
两种环境都旨在摆脱传统的"随意编码",实现以规格为中心的系统化开发流程。根据项目性质、团队组成和现有开发环境进行选择。
