kiro-spec-engine 1.3.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +85 -0
- package/README.md +228 -367
- package/README.zh.md +0 -330
- package/docs/README.md +223 -0
- package/docs/command-reference.md +252 -0
- package/docs/examples/add-export-command/design.md +194 -0
- package/docs/examples/add-export-command/requirements.md +110 -0
- package/docs/examples/add-export-command/tasks.md +88 -0
- package/docs/examples/add-rest-api/design.md +855 -0
- package/docs/examples/add-rest-api/requirements.md +323 -0
- package/docs/examples/add-rest-api/tasks.md +355 -0
- package/docs/examples/add-user-dashboard/design.md +192 -0
- package/docs/examples/add-user-dashboard/requirements.md +143 -0
- package/docs/examples/add-user-dashboard/tasks.md +91 -0
- package/docs/faq.md +696 -0
- package/docs/integration-modes.md +529 -0
- package/docs/integration-philosophy.md +313 -0
- package/docs/quick-start-with-ai-tools.md +374 -0
- package/docs/quick-start.md +711 -0
- package/docs/spec-workflow.md +453 -0
- package/docs/tools/claude-guide.md +653 -0
- package/docs/tools/cursor-guide.md +705 -0
- package/docs/tools/generic-guide.md +445 -0
- package/docs/tools/kiro-guide.md +308 -0
- package/docs/tools/vscode-guide.md +444 -0
- package/docs/tools/windsurf-guide.md +390 -0
- package/docs/troubleshooting.md +795 -0
- package/docs/zh/README.md +275 -0
- package/docs/zh/quick-start.md +711 -0
- package/docs/zh/tools/claude-guide.md +348 -0
- package/docs/zh/tools/cursor-guide.md +280 -0
- package/docs/zh/tools/generic-guide.md +498 -0
- package/docs/zh/tools/kiro-guide.md +342 -0
- package/docs/zh/tools/vscode-guide.md +448 -0
- package/docs/zh/tools/windsurf-guide.md +377 -0
- package/package.json +1 -1
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
# 在 VS Code + Copilot 中使用 kse
|
|
2
|
+
|
|
3
|
+
> 将 kse 与 VS Code 和 GitHub Copilot 集成进行 AI 辅助开发的完整指南
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
**版本**: 1.0.0
|
|
8
|
+
**最后更新**: 2026-01-23
|
|
9
|
+
**工具**: VS Code + GitHub Copilot
|
|
10
|
+
**集成模式**: 手动导出 + 内联注释
|
|
11
|
+
**预计设置时间**: 5 分钟
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 概述
|
|
16
|
+
|
|
17
|
+
**VS Code** 是最流行的代码编辑器,**GitHub Copilot** 提供 AI 驱动的代码补全。
|
|
18
|
+
|
|
19
|
+
**kse 与 VS Code + Copilot 的集成**使用**手动导出**和**内联注释**,让 Copilot 理解你的 Spec 并生成匹配你设计的代码。
|
|
20
|
+
|
|
21
|
+
### 为什么在 VS Code + Copilot 中使用 kse?
|
|
22
|
+
|
|
23
|
+
- ✅ **熟悉的环境** - 使用你已知的编辑器
|
|
24
|
+
- ✅ **智能补全** - Copilot 遵循你的 Spec
|
|
25
|
+
- ✅ **内联建议** - 在你输入时获得上下文感知的代码
|
|
26
|
+
- ✅ **灵活集成** - 多种使用 kse 的方式
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 集成模式
|
|
31
|
+
|
|
32
|
+
**模式:** 手动导出 + 内联注释
|
|
33
|
+
|
|
34
|
+
**工作原理:**
|
|
35
|
+
1. 你在 kse 中创建 Spec(需求、设计、任务)
|
|
36
|
+
2. 你在代码中添加引用 Spec 的注释
|
|
37
|
+
3. Copilot 读取注释和 Spec 文件
|
|
38
|
+
4. Copilot 生成匹配你设计的代码
|
|
39
|
+
5. 你在 tasks.md 中更新任务状态
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 设置
|
|
44
|
+
|
|
45
|
+
### 前置条件
|
|
46
|
+
|
|
47
|
+
- 已安装 **VS Code**([下载](https://code.visualstudio.com/))
|
|
48
|
+
- 已安装 **GitHub Copilot** 扩展
|
|
49
|
+
- 已全局安装 **kse**(`npm install -g kiro-spec-engine`)
|
|
50
|
+
- 项目已被 kse **采用**(`kse adopt`)
|
|
51
|
+
|
|
52
|
+
### 步骤 1:安装推荐的扩展
|
|
53
|
+
|
|
54
|
+
在 VS Code 中安装这些扩展:
|
|
55
|
+
|
|
56
|
+
1. **GitHub Copilot** - AI 代码补全
|
|
57
|
+
2. **GitHub Copilot Chat** - 与 Copilot 聊天
|
|
58
|
+
3. **Markdown All in One** - 更好的 Spec 编辑
|
|
59
|
+
4. **Mermaid Preview** - 可视化设计图
|
|
60
|
+
|
|
61
|
+
### 步骤 2:配置 VS Code 设置
|
|
62
|
+
|
|
63
|
+
创建 `.vscode/settings.json`:
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"files.associations": {
|
|
68
|
+
"*.md": "markdown"
|
|
69
|
+
},
|
|
70
|
+
"markdown.preview.breaks": true,
|
|
71
|
+
"github.copilot.enable": {
|
|
72
|
+
"*": true,
|
|
73
|
+
"markdown": true
|
|
74
|
+
},
|
|
75
|
+
"github.copilot.advanced": {
|
|
76
|
+
"inlineSuggestCount": 3
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 步骤 3:创建 Workspace 片段(可选但推荐)
|
|
82
|
+
|
|
83
|
+
创建 `.vscode/kse.code-snippets`:
|
|
84
|
+
|
|
85
|
+
```json
|
|
86
|
+
{
|
|
87
|
+
"kse Spec Reference": {
|
|
88
|
+
"prefix": "kse-ref",
|
|
89
|
+
"body": [
|
|
90
|
+
"// Task ${1:1.1}: ${2:Task description}",
|
|
91
|
+
"// Spec: .kiro/specs/${3:spec-name}/",
|
|
92
|
+
"// Design: See ${4:ComponentName} in design.md",
|
|
93
|
+
"// Requirements: ${5:FR-1, FR-2}",
|
|
94
|
+
"//"
|
|
95
|
+
],
|
|
96
|
+
"description": "Add kse Spec reference comment"
|
|
97
|
+
},
|
|
98
|
+
"kse Task Header": {
|
|
99
|
+
"prefix": "kse-task",
|
|
100
|
+
"body": [
|
|
101
|
+
"/**",
|
|
102
|
+
" * Task ${1:1.1}: ${2:Task description}",
|
|
103
|
+
" * ",
|
|
104
|
+
" * Spec: .kiro/specs/${3:spec-name}/",
|
|
105
|
+
" * Requirements: ${4:FR-1}",
|
|
106
|
+
" * Design: ${5:ComponentName} in design.md",
|
|
107
|
+
" * ",
|
|
108
|
+
" * Implementation notes:",
|
|
109
|
+
" * - ${6:Note 1}",
|
|
110
|
+
" */"
|
|
111
|
+
],
|
|
112
|
+
"description": "Add kse task header comment"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 使用方法
|
|
120
|
+
|
|
121
|
+
### 方法 1:内联 Spec 引用(推荐)
|
|
122
|
+
|
|
123
|
+
**最佳用于:** 实现新功能和组件
|
|
124
|
+
|
|
125
|
+
**步骤:**
|
|
126
|
+
|
|
127
|
+
1. **创建新文件**(例如 `src/auth/AuthController.js`)
|
|
128
|
+
|
|
129
|
+
2. **添加 Spec 引用注释:**
|
|
130
|
+
```javascript
|
|
131
|
+
/**
|
|
132
|
+
* Task 1.1: 设置项目依赖
|
|
133
|
+
*
|
|
134
|
+
* Spec: .kiro/specs/01-00-user-login/
|
|
135
|
+
* Requirements: FR-1, FR-2, NFR-1
|
|
136
|
+
* Design: AuthController in design.md
|
|
137
|
+
*
|
|
138
|
+
* 实现说明:
|
|
139
|
+
* - 使用 Express 进行路由
|
|
140
|
+
* - 使用 bcrypt 进行密码哈希
|
|
141
|
+
* - 使用 JWT 进行令牌
|
|
142
|
+
* - 实现速率限制
|
|
143
|
+
*/
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
3. **开始输入** - Copilot 将:
|
|
147
|
+
- 读取你的注释
|
|
148
|
+
- 读取引用的 Spec 文件
|
|
149
|
+
- 建议匹配你设计的代码
|
|
150
|
+
|
|
151
|
+
4. **按 Tab** 接受建议
|
|
152
|
+
|
|
153
|
+
### 方法 2:使用 Copilot Chat
|
|
154
|
+
|
|
155
|
+
**最佳用于:** 复杂实现和讨论
|
|
156
|
+
|
|
157
|
+
**步骤:**
|
|
158
|
+
|
|
159
|
+
1. **打开 Copilot Chat**
|
|
160
|
+
- 按 `Cmd+Shift+I`(macOS)或 `Ctrl+Shift+I`(Windows/Linux)
|
|
161
|
+
- 或点击侧边栏中的 Copilot 图标
|
|
162
|
+
|
|
163
|
+
2. **引用你的 Spec:**
|
|
164
|
+
```
|
|
165
|
+
我正在实现 .kiro/specs/01-00-user-login/ 中的用户登录功能。
|
|
166
|
+
|
|
167
|
+
请阅读:
|
|
168
|
+
- requirements.md
|
|
169
|
+
- design.md
|
|
170
|
+
- tasks.md
|
|
171
|
+
|
|
172
|
+
然后帮我实现任务 1.1:"设置项目依赖"
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
3. **Copilot 将:**
|
|
176
|
+
- 读取你的 Spec 文件
|
|
177
|
+
- 提供代码建议
|
|
178
|
+
- 解释实现决策
|
|
179
|
+
|
|
180
|
+
4. **插入代码** 到你的文件中
|
|
181
|
+
|
|
182
|
+
### 方法 3:使用 Workspace 片段
|
|
183
|
+
|
|
184
|
+
**最佳用于:** 快速添加 Spec 引用
|
|
185
|
+
|
|
186
|
+
**步骤:**
|
|
187
|
+
|
|
188
|
+
1. **在文件中输入:**
|
|
189
|
+
```
|
|
190
|
+
kse-ref
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
2. **按 Tab** - 片段展开为:
|
|
194
|
+
```javascript
|
|
195
|
+
// Task 1.1: Task description
|
|
196
|
+
// Spec: .kiro/specs/spec-name/
|
|
197
|
+
// Design: See ComponentName in design.md
|
|
198
|
+
// Requirements: FR-1, FR-2
|
|
199
|
+
//
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
3. **填写详细信息** 并开始编码
|
|
203
|
+
|
|
204
|
+
4. **Copilot 使用此上下文** 进行建议
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## 工作流示例
|
|
209
|
+
|
|
210
|
+
### 完整功能实现工作流
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
# 1. 创建 Spec
|
|
214
|
+
kse create-spec 01-00-user-login
|
|
215
|
+
|
|
216
|
+
# 2. 在 VS Code 中编写 Spec
|
|
217
|
+
# - 打开 requirements.md
|
|
218
|
+
# - 打开 design.md
|
|
219
|
+
# - 打开 tasks.md
|
|
220
|
+
|
|
221
|
+
# 3. 创建实现文件
|
|
222
|
+
# src/auth/AuthController.js
|
|
223
|
+
|
|
224
|
+
# 4. 添加 Spec 引用(使用 kse-ref 片段)
|
|
225
|
+
kse-ref [Tab]
|
|
226
|
+
|
|
227
|
+
# 5. 开始编码 - Copilot 建议代码
|
|
228
|
+
|
|
229
|
+
# 6. 接受建议(Tab)
|
|
230
|
+
|
|
231
|
+
# 7. 在 tasks.md 中标记任务为完成
|
|
232
|
+
- [x] 1.1 设置项目依赖
|
|
233
|
+
|
|
234
|
+
# 8. 对下一个任务重复
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## 最佳实践
|
|
240
|
+
|
|
241
|
+
### 1. 始终添加 Spec 引用
|
|
242
|
+
|
|
243
|
+
在每个文件顶部添加 Spec 引用:
|
|
244
|
+
```javascript
|
|
245
|
+
// Spec: .kiro/specs/01-00-user-login/
|
|
246
|
+
// Task: 1.1 - 设置项目依赖
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### 2. 使用描述性注释
|
|
250
|
+
|
|
251
|
+
Copilot 读取注释。要具体:
|
|
252
|
+
```javascript
|
|
253
|
+
// 实现 AuthController.login() 方法
|
|
254
|
+
// 要求:
|
|
255
|
+
// - 验证邮箱和密码
|
|
256
|
+
// - 检查速率限制
|
|
257
|
+
// - 返回 JWT 令牌
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### 3. 在注释中引用设计
|
|
261
|
+
|
|
262
|
+
```javascript
|
|
263
|
+
// 参见 design.md 中的 AuthController 设计
|
|
264
|
+
// 使用 design.md 中指定的确切方法名称
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### 4. 分解复杂任务
|
|
268
|
+
|
|
269
|
+
对于复杂任务,添加分步注释:
|
|
270
|
+
```javascript
|
|
271
|
+
// 步骤 1:验证输入
|
|
272
|
+
// 步骤 2:检查速率限制
|
|
273
|
+
// 步骤 3:验证凭据
|
|
274
|
+
// 步骤 4:生成令牌
|
|
275
|
+
// 步骤 5:返回响应
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### 5. 使用 Copilot Chat 进行复杂逻辑
|
|
279
|
+
|
|
280
|
+
对于复杂实现,使用 Copilot Chat:
|
|
281
|
+
- 讨论方法
|
|
282
|
+
- 获取代码示例
|
|
283
|
+
- 要求解释
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## 示例代码模式
|
|
288
|
+
|
|
289
|
+
### 模式 1:组件实现
|
|
290
|
+
|
|
291
|
+
```javascript
|
|
292
|
+
/**
|
|
293
|
+
* AuthController - 处理认证请求
|
|
294
|
+
*
|
|
295
|
+
* Spec: .kiro/specs/01-00-user-login/
|
|
296
|
+
* Task: 3.1 - 实现 AuthController
|
|
297
|
+
* Design: 参见 design.md 中的 AuthController
|
|
298
|
+
* Requirements: FR-1, FR-2, NFR-1
|
|
299
|
+
*
|
|
300
|
+
* 此控制器实现:
|
|
301
|
+
* - POST /api/auth/login - 用户登录
|
|
302
|
+
* - 输入验证
|
|
303
|
+
* - 速率限制
|
|
304
|
+
* - JWT 令牌生成
|
|
305
|
+
*/
|
|
306
|
+
|
|
307
|
+
class AuthController {
|
|
308
|
+
// Copilot 将基于上述上下文建议实现
|
|
309
|
+
}
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### 模式 2:方法实现
|
|
313
|
+
|
|
314
|
+
```javascript
|
|
315
|
+
/**
|
|
316
|
+
* 验证用户凭据
|
|
317
|
+
*
|
|
318
|
+
* Task: 2.2 - 实现 AuthService.authenticate()
|
|
319
|
+
* Design: 参见 design.md 中的 AuthService
|
|
320
|
+
*
|
|
321
|
+
* @param {string} email - 用户邮箱
|
|
322
|
+
* @param {string} password - 用户密码
|
|
323
|
+
* @returns {Promise<User|null>} 如果有效则返回用户,否则返回 null
|
|
324
|
+
*
|
|
325
|
+
* 实现:
|
|
326
|
+
* 1. 通过邮箱查找用户
|
|
327
|
+
* 2. 使用 bcrypt 比较密码
|
|
328
|
+
* 3. 如果匹配则返回用户
|
|
329
|
+
*/
|
|
330
|
+
async authenticate(email, password) {
|
|
331
|
+
// Copilot 将建议实现
|
|
332
|
+
}
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### 模式 3:测试实现
|
|
336
|
+
|
|
337
|
+
```javascript
|
|
338
|
+
/**
|
|
339
|
+
* AuthService 测试
|
|
340
|
+
*
|
|
341
|
+
* Spec: .kiro/specs/01-00-user-login/
|
|
342
|
+
* Task: 4.1 - 编写全面的测试
|
|
343
|
+
*
|
|
344
|
+
* 测试场景:
|
|
345
|
+
* - 有效凭据 → 返回用户
|
|
346
|
+
* - 无效凭据 → 返回 null
|
|
347
|
+
* - 缺少邮箱 → 抛出错误
|
|
348
|
+
* - 无效邮箱格式 → 抛出错误
|
|
349
|
+
*/
|
|
350
|
+
|
|
351
|
+
describe('AuthService', () => {
|
|
352
|
+
// Copilot 将建议测试用例
|
|
353
|
+
});
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## 故障排除
|
|
359
|
+
|
|
360
|
+
### 问题:Copilot 不遵循我的 Spec
|
|
361
|
+
|
|
362
|
+
**解决方案:**
|
|
363
|
+
1. 使你的注释更详细
|
|
364
|
+
2. 在注释中引用特定的设计部分
|
|
365
|
+
3. 在 design.md 中添加代码示例
|
|
366
|
+
4. 使用 Copilot Chat 进行复杂实现
|
|
367
|
+
|
|
368
|
+
### 问题:Copilot 建议不相关的代码
|
|
369
|
+
|
|
370
|
+
**解决方案:**
|
|
371
|
+
1. 添加更多上下文到注释
|
|
372
|
+
2. 引用 Spec 文件:`// Spec: .kiro/specs/...`
|
|
373
|
+
3. 要具体:"实现 design.md 中的确切 AuthController"
|
|
374
|
+
|
|
375
|
+
### 问题:Copilot 看不到我的 Spec 文件
|
|
376
|
+
|
|
377
|
+
**解决方案:**
|
|
378
|
+
1. 确保 Spec 文件在工作区中
|
|
379
|
+
2. 在 VS Code 中打开 Spec 文件
|
|
380
|
+
3. 在注释中使用相对路径
|
|
381
|
+
4. 检查 `.gitignore` 是否排除了 `.kiro/`
|
|
382
|
+
|
|
383
|
+
---
|
|
384
|
+
|
|
385
|
+
## 高级技巧
|
|
386
|
+
|
|
387
|
+
### 1. 使用多文件上下文
|
|
388
|
+
|
|
389
|
+
在多个文件中打开 Spec:
|
|
390
|
+
- requirements.md
|
|
391
|
+
- design.md
|
|
392
|
+
- 你的实现文件
|
|
393
|
+
|
|
394
|
+
Copilot 使用所有打开文件的上下文。
|
|
395
|
+
|
|
396
|
+
### 2. 使用 Copilot Labs
|
|
397
|
+
|
|
398
|
+
如果你有 Copilot Labs:
|
|
399
|
+
- 使用"解释"功能理解 Spec
|
|
400
|
+
- 使用"翻译"功能转换设计为代码
|
|
401
|
+
- 使用"测试"功能生成测试
|
|
402
|
+
|
|
403
|
+
### 3. 创建模板文件
|
|
404
|
+
|
|
405
|
+
为常见模式创建模板:
|
|
406
|
+
```javascript
|
|
407
|
+
// templates/controller-template.js
|
|
408
|
+
/**
|
|
409
|
+
* [ComponentName] - [Description]
|
|
410
|
+
*
|
|
411
|
+
* Spec: .kiro/specs/[spec-name]/
|
|
412
|
+
* Task: [task-id] - [task-description]
|
|
413
|
+
* Design: See [ComponentName] in design.md
|
|
414
|
+
* Requirements: [requirements]
|
|
415
|
+
*/
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### 4. 使用任务注释
|
|
419
|
+
|
|
420
|
+
在 tasks.md 中添加实现注释:
|
|
421
|
+
```markdown
|
|
422
|
+
- [ ] 1.1 设置项目依赖
|
|
423
|
+
<!-- 实现:src/package.json -->
|
|
424
|
+
<!-- 参考:design.md 中的技术栈部分 -->
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
## 相关文档
|
|
430
|
+
|
|
431
|
+
- 📖 [快速入门指南](../quick-start.md) - 开始使用 kse
|
|
432
|
+
- 🔌 [集成模式](../integration-modes.md) - 理解手动导出模式
|
|
433
|
+
- 📋 [Spec 工作流](../spec-workflow.md) - 创建有效的 Spec
|
|
434
|
+
- 🔧 [故障排除](../troubleshooting.md) - 常见问题
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
## 下一步
|
|
439
|
+
|
|
440
|
+
- 设置 VS Code 片段以快速引用 Spec
|
|
441
|
+
- 尝试使用 Copilot Chat 进行复杂实现
|
|
442
|
+
- 探索 [Cursor 指南](cursor-guide.md) 获取更集成的体验
|
|
443
|
+
- 查看 [API 示例](../examples/add-rest-api/) 获取完整的 Spec 示例
|
|
444
|
+
|
|
445
|
+
---
|
|
446
|
+
|
|
447
|
+
**版本**: 1.0.0
|
|
448
|
+
**最后更新**: 2026-01-23
|