aico-cli 0.3.0 → 0.3.2

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.
@@ -13,7 +13,7 @@ import { join as join$1 } from 'node:path';
13
13
  import { join, dirname, basename } from 'pathe';
14
14
  import { fileURLToPath } from 'node:url';
15
15
 
16
- const version = "0.3.0";
16
+ const version = "0.3.2";
17
17
 
18
18
  function displayBanner(subtitle) {
19
19
  const defaultSubtitle = "\u4E00\u952E\u914D\u7F6E\u4F60\u7684\u5F00\u53D1\u73AF\u5883";
@@ -3191,16 +3191,6 @@ async function updateCcr(force = false) {
3191
3191
  }
3192
3192
  console.log(ansis.cyan(`\u5F53\u524D\u7248\u672C: ${currentVersion || ""}`));
3193
3193
  console.log(ansis.cyan(`\u6700\u65B0\u7248\u672C: ${latestVersion}`));
3194
- const { confirm } = await inquirer.prompt({
3195
- type: "confirm",
3196
- name: "confirm",
3197
- message: "\u786E\u8BA4\u66F4\u65B0 CCR\uFF1F",
3198
- default: true
3199
- });
3200
- if (!confirm) {
3201
- console.log(ansis.gray("\u66F4\u65B0\u5DF2\u8DF3\u8FC7"));
3202
- return true;
3203
- }
3204
3194
  const updateSpinner = ora("\u6B63\u5728\u66F4\u65B0 CCR...").start();
3205
3195
  try {
3206
3196
  await execAsync$4("npm update -g @musistudio/claude-code-router");
@@ -4696,7 +4686,7 @@ const DEFAULT_FILE_COPY_CONFIGS = [
4696
4686
  destination: join(CLAUDE_DIR, "personality.md"),
4697
4687
  type: "file",
4698
4688
  options: {
4699
- mergeStrategy: "copy",
4689
+ mergeStrategy: "merge",
4700
4690
  backupBeforeCopy: true,
4701
4691
  deleteBeforeCopy: true
4702
4692
  }
@@ -4706,7 +4696,7 @@ const DEFAULT_FILE_COPY_CONFIGS = [
4706
4696
  destination: join(CLAUDE_DIR, "code.md"),
4707
4697
  type: "file",
4708
4698
  options: {
4709
- mergeStrategy: "copy",
4699
+ mergeStrategy: "merge",
4710
4700
  backupBeforeCopy: true,
4711
4701
  deleteBeforeCopy: true
4712
4702
  }
@@ -4716,7 +4706,7 @@ const DEFAULT_FILE_COPY_CONFIGS = [
4716
4706
  destination: join(CLAUDE_DIR, "language.md"),
4717
4707
  type: "file",
4718
4708
  options: {
4719
- mergeStrategy: "copy",
4709
+ mergeStrategy: "merge",
4720
4710
  backupBeforeCopy: true,
4721
4711
  deleteBeforeCopy: true
4722
4712
  }
@@ -4798,11 +4788,21 @@ function handleDirectoryCopy(sourcePath, destPath, options) {
4798
4788
  if (options?.deleteBeforeCopy && destExists) {
4799
4789
  removeDir(destPath);
4800
4790
  }
4801
- ensureDir(destPath);
4802
- copyDir(sourcePath, destPath, {
4803
- overwrite: options?.overwrite ?? true,
4804
- filter: options?.filter
4805
- });
4791
+ if (options?.mergeStrategy === "skip-if-exists" && destExists) {
4792
+ return;
4793
+ }
4794
+ if (options?.mergeStrategy === "merge" && destExists) {
4795
+ copyDir(sourcePath, destPath, {
4796
+ overwrite: false,
4797
+ // 不覆盖已存在的文件
4798
+ filter: options?.filter
4799
+ });
4800
+ } else {
4801
+ copyDir(sourcePath, destPath, {
4802
+ overwrite: options?.overwrite ?? true,
4803
+ filter: options?.filter
4804
+ });
4805
+ }
4806
4806
  }
4807
4807
  function copyClaudeMemoryFiles(lang, rootDir) {
4808
4808
  const memorySourceDir = join(rootDir, "templates");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aico-cli",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "packageManager": "pnpm@9.15.9",
5
5
  "description": "AI CLI",
6
6
  "repository": {
@@ -1,3 +1,2 @@
1
1
  @language.md
2
2
  @personality.md
3
- @code.md
@@ -313,7 +313,203 @@ ADD COLUMN new_field VARCHAR(100);
313
313
  4. ⚡ **实施难度**是否在可接受范围内?
314
314
  5. 🔄 **依赖关系**是否明确?
315
315
 
316
- **请确认此方案是否可行,确认后我们将进入开发任务拆分阶段。**
316
+ **请确认此方案是否可行,确认后我们将进入测试脚本创建阶段。**
317
317
  ```
318
318
 
319
+ ### 阶段五:测试脚本创建与确认
320
+
321
+ 在技术方案确认后,自动创建对应的测试脚本以确保质量:
322
+
323
+ ```bash
324
+ # 检测项目测试框架并创建测试脚本
325
+ if [ -f "package.json" ]; then
326
+ # 分析package.json识别测试框架
327
+ if grep -q "vitest\|jest\|mocha\|ava\|tape" package.json; then
328
+ echo "📦 检测到现有测试框架,创建对应测试文件..."
329
+ # 根据技术方案创建测试文件
330
+ cat > "test/unit/[功能模块]/[功能模块].test.ts" << 'EOF'
331
+ // 自动生成的测试脚本 - 基于技术方案
332
+ import { describe, it, expect } from 'vitest'
333
+
334
+ // 根据技术方案中的组件/服务编写测试
335
+ describe('[功能模块]', () => {
336
+ it('应该满足基本功能要求', () => {
337
+ // 测试逻辑基于技术方案文档
338
+ expect(true).toBe(true)
339
+ })
340
+
341
+ it('应该处理边界条件', () => {
342
+ // 边界条件测试
343
+ })
344
+
345
+ it('应该集成现有功能', () => {
346
+ // 集成测试
347
+ })
348
+ })
349
+ EOF
350
+ else
351
+ echo "📝 未检测到标准测试框架,创建通用测试脚本..."
352
+ mkdir -p ".aico/scripts/[功能模块]"
353
+ # 创建跨平台测试脚本
354
+ cat > ".aico/scripts/[功能模块]/test-script.sh" << 'EOF'
355
+ #!/usr/bin/env bash
356
+ # 跨平台测试脚本 - 支持 Windows (Git Bash/Cygwin/WSL)、Linux、macOS
357
+
358
+ set -euo pipefail
359
+
360
+ # 检测操作系统
361
+ detect_os() {
362
+ case "$(uname -s)" in
363
+ Darwin*) echo "macOS" ;;
364
+ Linux*) echo "Linux" ;;
365
+ CYGWIN*|MINGW*|MSYS*) echo "Windows" ;;
366
+ *) echo "Unknown" ;;
367
+ esac
368
+ }
369
+
370
+ # 主测试函数
371
+ run_tests() {
372
+ local os="$(detect_os)"
373
+ echo "🚀 运行测试 - 操作系统: $os"
374
+
375
+ # 根据技术方案执行测试逻辑
376
+ echo "✅ 测试1: 验证基本功能"
377
+ # 这里添加具体的测试命令
378
+
379
+ echo "✅ 测试2: 验证边界条件"
380
+ # 边界条件测试
381
+
382
+ echo "✅ 测试3: 验证集成功能"
383
+ # 集成测试
384
+
385
+ echo "🎉 所有测试通过!"
386
+ }
387
+
388
+ # 执行测试
389
+ run_tests "$@"
390
+ EOF
391
+
392
+ # 设置执行权限
393
+ chmod +x ".aico/scripts/[功能模块]/test-script.sh"
394
+ fi
395
+ else
396
+ echo "📝 创建通用测试脚本..."
397
+ mkdir -p ".aico/scripts/[功能模块]"
398
+ cat > ".aico/scripts/[功能模块]/test-script.bat" << 'EOF'
399
+ @echo off
400
+ REM Windows批处理测试脚本
401
+ echo 🚀 运行测试 - Windows平台
402
+
403
+ REM 根据技术方案执行测试逻辑
404
+ echo ✅ 测试1: 验证基本功能
405
+ REM 这里添加具体的测试命令
406
+
407
+ echo ✅ 测试2: 验证边界条件
408
+ REM 边界条件测试
409
+
410
+ echo ✅ 测试3: 验证集成功能
411
+ REM 集成测试
412
+
413
+ echo 🎉 所有测试通过!
414
+ pause
415
+ EOF
416
+
417
+ cat > ".aico/scripts/[功能模块]/test-script.sh" << 'EOF'
418
+ #!/usr/bin/env bash
419
+ # Unix/Linux/macOS测试脚本
420
+
421
+ echo "🚀 运行测试 - Unix平台"
422
+
423
+ # 根据技术方案执行测试逻辑
424
+ echo "✅ 测试1: 验证基本功能"
425
+ # 这里添加具体的测试命令
426
+
427
+ echo "✅ 测试2: 验证边界条件"
428
+ # 边界条件测试
429
+
430
+ echo "✅ 测试3: 验证集成功能"
431
+ # 集成测试
432
+
433
+ echo "🎉 所有测试通过!"
434
+ EOF
435
+
436
+ chmod +x ".aico/scripts/[功能模块]/test-script.sh"
437
+ fi
438
+
439
+ # 生成测试说明文档
440
+ cat > ".aico/scripts/[功能模块]/README.md" << 'EOF'
441
+ # 测试脚本说明
442
+
443
+ ## 测试策略
444
+ 基于技术方案文档 `.aico/docs/[需求名称]/技术对齐方案文档.md` 创建
445
+
446
+ ## 测试覆盖
447
+ - ✅ 基本功能验证
448
+ - ✅ 边界条件测试
449
+ - ✅ 集成功能测试
450
+
451
+ ## 运行方式
452
+
453
+ ### Windows
454
+ ```cmd
455
+ test-script.bat
456
+ ```
457
+
458
+ ### Unix/Linux/macOS
459
+ ```bash
460
+ ./test-script.sh
461
+ ```
462
+
463
+ ## 自定义测试
464
+ 编辑对应的脚本文件来添加具体的测试逻辑
465
+ EOF
466
+ ```
467
+
468
+ **测试确认流程**:
469
+
470
+ ```markdown
471
+ ## 🧪 测试脚本已创建
472
+
473
+ 已根据技术方案自动生成测试脚本,请确认:
474
+
475
+ ### 📋 测试文件位置
476
+ - **标准测试框架**: `test/unit/[功能模块]/[功能模块].test.ts`
477
+ - **通用测试脚本**: `.aico/scripts/[功能模块]/test-script.*`
478
+
479
+ ### ✅ 需要确认的内容
480
+ 1. 🎯 **测试覆盖范围**是否满足需求?
481
+ 2. 🔧 **测试环境兼容性**是否合适?
482
+ 3. 📊 **测试用例设计**是否合理?
483
+ 4. ⚡ **测试执行方式**是否清晰?
484
+
485
+ ### 🔄 测试脚本管理
486
+ 使用以下命令管理测试脚本:
487
+ ```bash
488
+ # 查看测试脚本
489
+ aico test-script list [需求名称]
490
+
491
+ # 运行测试脚本
492
+ aico test-script run [需求名称]
493
+
494
+ # 编辑测试脚本
495
+ aico test-script edit [需求名称]
496
+ ```
497
+
498
+ **请确认测试脚本无误,确认后我们将进入开发任务拆分阶段。**
499
+ ```
500
+
501
+ ### 确认状态管理
502
+
503
+ **确认状态机:**
504
+ - 📝 **等待确认**:默认为该状态,生成技术方案后等待用户响应
505
+ - ✅ **已确认**:用户明确回复"确认"、"正确"、"是的"等
506
+ - 🔄 **需要修改**:用户指出技术方案需要调整
507
+ - ❌ **已拒绝**:用户明确表示不需要此技术方案
508
+
509
+ **状态检查逻辑:**
510
+ 1. 执行前必须检查共识文档状态是否为"已确认"
511
+ 2. 生成技术方案后状态设为"等待确认"
512
+ 3. 用户确认后状态更新为"已确认"
513
+ 4. 只有状态为"已确认"时才能进入下一阶段
514
+
319
515
  严格按照用户确认后才能将上下文交接给下一个智能体的原则执行。
@@ -446,4 +446,18 @@ DB-001 → BE-001 → FE-001 → TEST-001
446
446
  **确认后将正式生成开发任务清单,并可开始自动执行开发任务。**
447
447
  ```
448
448
 
449
+ ### 确认状态管理
450
+
451
+ **确认状态机:**
452
+ - 📝 **等待确认**:默认为该状态,生成任务清单后等待用户响应
453
+ - ✅ **已确认**:用户明确回复"确认"、"正确"、"是的"等
454
+ - 🔄 **需要调整**:用户指出任务拆分需要修改
455
+ - ❌ **已拒绝**:用户明确表示不需要此任务拆分
456
+
457
+ **状态检查逻辑:**
458
+ 1. 执行前必须检查技术方案状态是否为"已确认"
459
+ 2. 生成任务清单后状态设为"等待确认"
460
+ 3. 用户确认后状态更新为"已确认"
461
+ 4. 只有状态为"已确认"时才能进入执行阶段
462
+
449
463
  严格按照用户确认后才能交接给任务执行智能体的原则执行。
@@ -8,109 +8,115 @@ argument-hint: <需求描述>
8
8
 
9
9
  `/requirement <需求描述>`
10
10
 
11
- ## 目标
12
-
13
- 作为需求管理的指挥官,统筹整个需求从识别、对齐、拆分到执行的全生命周期:
14
-
15
- - 🎯 **需求识别**:深度理解用户意图,生成共识文档
16
- - 🔄 **需求对齐**:分析现有代码库,制定技术实施方案
17
- - 📋 **任务拆分**:将需求分解为可执行的原子任务
18
- - ⚡ **自动执行**:按依赖关系自动执行开发任务
19
- - **质量保障**:全程质量评估和验证
11
+ ## 全生命周期管理
12
+
13
+ 作为需求管理的指挥官,统筹整个需求从识别到实现的全生命周期,各阶段职责和调用参数如下:
14
+
15
+ ### 🎯 需求识别阶段
16
+ **职责**:深度理解用户意图,生成共识文档
17
+ **智能体**:`requirement-identifier`
18
+ **调用参数**:
19
+ - `user_input`: $ARGUMENTS
20
+ - `current_timestamp`: (来自时间戳智能体)
21
+ - `project_context`: (当前项目的 CLAUDE.md 信息)
22
+ - `document_status`: `待确认`
23
+ **输出**:`.aico/docs/[需求名称]/共识文档.md`
24
+ **状态流转**:生成后设为`待确认` → 用户确认后更新为`已确认`
25
+
26
+ ### 🔄 需求对齐阶段
27
+ **职责**:分析现有代码库,制定技术实施方案
28
+ **智能体**:`requirement-aligner`
29
+ **调用参数**:
30
+ - `consensus_document_path`: `.aico/docs/[需求名称]/共识文档.md`
31
+ - `current_timestamp`: (来自时间戳智能体)
32
+ - `document_status`: `待确认`
33
+ **前置条件**:共识文档状态为`已确认`
34
+ **输出**:`.aico/docs/[需求名称]/技术对齐方案文档.md`
35
+ **状态流转**:生成后设为`待确认` → 用户确认后更新为`已确认`
36
+
37
+ ### 📋 任务拆分阶段
38
+ **职责**:将需求分解为可执行的原子任务
39
+ **智能体**:`task-splitter-validator`
40
+ **调用参数**:
41
+ - `consensus_document_path`: `.aico/docs/[需求名称]/共识文档.md`
42
+ - `technical_alignment_path`: `.aico/docs/[需求名称]/技术对齐方案文档.md`
43
+ - `current_timestamp`: (来自时间戳智能体)
44
+ - `document_status`: `待确认`
45
+ **前置条件**:技术方案状态为`已确认`
46
+ **输出**:`.aico/docs/[需求名称]/开发任务清单.md`
47
+ **状态流转**:生成后设为`待确认` → 用户确认后更新为`已确认`
48
+
49
+ ### ⚡ 自动执行阶段
50
+ **职责**:按依赖关系自动执行开发任务
51
+ **智能体**:`task-executor`
52
+ **调用参数**:
53
+ - `task_list_path`: `.aico/docs/[需求名称]/开发任务清单.md`
54
+ - `current_timestamp`: (来自时间戳智能体)
55
+ - `document_status`: `已确认`
56
+ **前置条件**:任务清单状态为`已确认`
57
+
58
+ ### ✅ 质量保障阶段
59
+ **职责**:全程质量评估和验证
60
+ **智能体**:`task-executor-validator`
61
+ **调用参数**:
62
+ - `task_list_path`: `.aico/docs/[需求名称]/开发任务清单.md`
63
+ - `completion_report_path`: `.aico/docs/[需求名称]/开发任务完成报告.md`
64
+ - `current_timestamp`: (来自时间戳智能体)
65
+ **触发条件**:任务执行完成后自动调用
20
66
 
21
67
  ## 编排说明
22
68
 
23
69
  **步骤 1**:调用 `get-current-datetime` 子智能体获取当前时间戳。
24
70
 
25
- **步骤 2**:根据用户输入和上下文智能识别当前处于哪个阶段,调用相应的子智能体:
71
+ **步骤 2**:根据用户输入和上下文智能识别当前处于哪个阶段,用户确认后再调用相应的子智能体:
26
72
 
27
73
  ### 阶段判断逻辑
28
74
 
29
- 1. **识别阶段**:用户提供新需求描述 → 调用 `requirement-identifier`
30
- - 必须生成 `.aico/docs/[需求名称]/共识文档.md`
31
- - 文档状态必须设置为`待确认`
32
- - 必须等待用户确认后,自动更新状态为`已确认`并进入下一阶段
33
- 2. **对齐阶段**:存在共识文档且状态为`已确认`但无技术方案 → 调用 `requirement-aligner`
34
- - 必须存在 `.aico/docs/[需求名称]/共识文档.md`并且需求状态为`已确认`
35
- - 必须生成 `.aico/docs/[需求名称]/技术对齐方案文档.md`
36
- - 文档状态必须设置为`待确认`
37
- - 必须等待用户确认后,自动更新状态为`已确认`并进入下一阶段
38
- 3. **拆分阶段**:存在技术方案且状态为`已确认`但无任务清单 → 调用 `task-splitter-validator`
39
- - 必须存在 `.aico/docs/[需求名称]/技术对齐方案文档.md`并且状态为`已确认`
40
- - 必须生成 `.aico/docs/[需求名称]/开发任务清单.md`
41
- - 文档状态必须设置为`待确认`
42
- - 必须等待用户确认后,自动更新状态为`已确认`并进入下一阶段
43
- 4. **执行阶段**:存在任务清单且状态为`已确认`且有待执行任务 → 调用 `task-executor`
44
- 5. **验证阶段**:任务执行后需要质量评估 → 调用 `task-executor-validator`
45
-
46
- ### 智能体调用参数
47
-
48
- - **requirement-identifier**:
49
- - `user_input`: $ARGUMENTS
50
- - `current_timestamp`: (来自步骤1的时间戳)
51
- - `project_context`: (当前项目的 CLAUDE.md 信息)
52
- - `document_status`: `待确认`
53
-
54
- - **requirement-aligner**:
55
- - `consensus_document_path`: `.aico/docs/[需求名称]/共识文档.md`
56
- - `current_timestamp`: (来自步骤1的时间戳)
57
- - `document_status`: `待确认`
58
-
59
- - **task-splitter-validator**:
60
- - `consensus_document_path`: `.aico/docs/[需求名称]/共识文档.md`
61
- - `technical_alignment_path`: `.aico/docs/[需求名称]/技术对齐方案文档.md`
62
- - `current_timestamp`: (来自步骤1的时间戳)
63
- - `document_status`: `待确认`
64
-
65
- - **task-executor**:
66
- - `task_list_path`: `.aico/docs/[需求名称]/开发任务清单.md`
67
- - `current_timestamp`: (来自步骤1的时间戳)
68
- - `document_status`: `已确认`
69
-
70
- - **task-executor-validator**:
71
- - `task_list_path`: `.aico/docs/[需求名称]/开发任务清单.md`
72
- - `completion_report_path`: `.aico/docs/[需求名称]/开发任务完成报告.md`
73
- - `current_timestamp`: (来自步骤1的时间戳)
75
+ **每个阶段完成就结束对话,前序阶段未完成时提示用户去确认**
74
76
 
75
- ## 执行策略
77
+ 1. **识别阶段**:用户提供新需求描述 → 调用 `requirement-identifier` 子智能体
76
78
 
77
- ### 阶段流转控制
79
+ 2. **对齐阶段**:检查共识文档状态为`已确认` → 调用 `requirement-aligner` 子智能体
80
+ - 如果共识文档不存在或状态非`已确认`,提示:"请先确认共识文档"
78
81
 
79
- - **自动流转**:当某个阶段完成且用户确认后,自动进入下一阶段
80
- - **断点续行**:支持在任意阶段暂停和恢复
81
- - **并行执行**:在任务执行阶段,支持无依赖任务的并行处理
82
- - **回退机制**:支持回到上一阶段重新处理
82
+ 3. **拆分阶段**:检查技术方案状态为`已确认` → 调用 `task-splitter-validator` 子智能体
83
+ - 如果技术方案不存在或状态非`已确认`,提示:"请先确认技术方案"
83
84
 
84
- ### 上下文管理
85
+ 4. **执行阶段**:检查任务清单状态为`已确认` → 调用 `task-executor` 子智能体
86
+ - 如果任务清单不存在或状态非`已确认`,提示:"请先确认任务清单"
87
+
88
+ 5. **验证阶段**:任务执行完成后 → 调用 `task-executor-validator` 子智能体
89
+
90
+ ## 执行策略
85
91
 
86
- - 维护完整的需求生命周期上下文
87
- - 自动传递前置阶段的输出作为后续阶段的输入
88
- - 保持项目代码库状态与需求文档的同步
92
+ ### 智能体调用决策逻辑
89
93
 
90
- ### 异常处理
94
+ **基于文档状态和用户输入的智能路由**:
91
95
 
92
- - 智能体执行失败时的重试机制
93
- - 用户拒绝确认时的处理流程
94
- - 技术方案不可行时的回退策略
96
+ 1. **初始判断**:分析用户输入内容,识别需求类型和上下文
97
+ 2. **文档状态检查**:检查 `.aico/docs/[需求名称]/` 目录下的文档状态
98
+ 3. **智能路由**:
99
+ - 如果无相关文档 → 调用 `requirement-identifier`(识别阶段)
100
+ - 如果有共识文档且状态为`已确认` → 调用 `requirement-aligner`(对齐阶段)
101
+ - 如果有技术方案且状态为`已确认` → 调用 `task-splitter-validator`(拆分阶段)
102
+ - 如果有任务清单且状态为`已确认` → 调用 `task-executor`(执行阶段)
103
+ - 如果任务执行完成 → 调用 `task-executor-validator`(验证阶段)
95
104
 
96
- ## 安全与边界
105
+ 4. **用户确认机制**:每个阶段完成后接结束对话,让用户去看文档是否符合他的想要的。如果用户不同意则重复上述过程直到所有文档都确认为止。
106
+ 5. **运行机制**:每个阶段的智能体都会调用其依赖的智能体执行,后序调用依赖的执行结果作为下个子智能体的输入参数。每个执行的子智能体都会生成相应的文档并标注状态。你要尽可能的使用多任务并行能力。
97
107
 
98
- - 只在 `.aico/docs/` 目录下创建需求相关文档
99
- - 严格按照用户确认的方案执行代码修改
100
- - 保持现有系统架构和设计模式的一致性
101
- - 所有修改都有完整的审计日志
108
+ ### 安全与边界约束
102
109
 
103
- ## 输出要求
110
+ **操作边界**:
111
+ - 📁 **文档操作**:只在 `.aico/docs/` 目录下创建和修改需求相关文档
112
+ - 🔒 **权限控制**:严格按照用户确认的方案执行代码修改,禁止越权操作
113
+ - 🏗️ **架构保护**:保持现有系统架构和设计模式的一致性,不破坏现有结构
114
+ - 📋 **审计追踪**:所有修改都有完整的审计日志,记录操作时间、内容和执行者
104
115
 
105
- - 在主对话中实时反馈当前阶段和进度
106
- - 清晰展示每个阶段的输入输出
107
- - 提供阶段间的确认节点让用户参与决策
108
- - 最终输出完整的需求实现报告,包含:
109
- - 📊 **执行摘要**:需求概述、技术方案要点、任务完成情况
110
- - 📁 **文档索引**:生成的所有文档路径和用途说明
111
- - 🔧 **代码变更**:修改的文件清单和主要变更点
112
- - ✅ **质量报告**:测试结果、代码审查结果、潜在风险点
113
- - 🚀 **后续建议**:部署指导、监控要点、优化建议
116
+ **安全防护**:
117
+ - ✅ **输入验证**:对所有用户输入进行严格验证和过滤
118
+ - 🛡️ **代码审查**:执行前进行代码安全检查,防止恶意代码注入
119
+ - ⚠️ **风险预警**:识别潜在风险并提前预警,需要用户确认后才能继续
114
120
 
115
121
  ## 流程可视化
116
122
 
@@ -0,0 +1,168 @@
1
+ ---
2
+ name: function-point-test
3
+ description: "输入模块名,根据预设规则测算并输出功能点列表CSV"
4
+ ---
5
+
6
+ # 功能点标准分类
7
+ ILF对应10,EI对应4,EO对应4,EQ对应5。
8
+
9
+ - 内部逻辑文件(ILF): 10 点(如可停输界面新增)
10
+ - 外部查询(EQ): 4 点(如可停输界面导出、筛选)
11
+ - 外部输入(EI): 4 点(如可停输界面删除、修改)
12
+
13
+ # 规则
14
+
15
+ 严格遵循以下规则:
16
+
17
+ 1. **查询/导出类** -> `外部查询 (EQ)`, 4 点
18
+ 2. **提交/变更类** -> `外部输入 (EI)`, 4 点
19
+ 3. **纯 UI 交互类** -> `内部逻辑文件 (ILF)`, 10 点
20
+ 4. **绝不使用** `功能点标准分类` 以外的类别。
21
+
22
+ # 任务
23
+
24
+ 为 `<模块名>` 模块生成功能点列表,并输出到 `prd/功能点/结果/<模块名>功能点列表.csv`。
25
+
26
+ 注意:一级模块必须从`可用模块`列表中选取
27
+
28
+ # 相关内容
29
+
30
+ ## 可用模块
31
+ - 数据字典
32
+ - 模型展示
33
+ - 模型管理
34
+ - 模型的参数输入
35
+ - 模型输出结果
36
+ - 权限管理
37
+ - 系统监控
38
+ - 系统工具
39
+ - 个人中心
40
+ - 首页
41
+ - 登录
42
+
43
+ ## CSV输出格式要求
44
+
45
+ ### 文件格式
46
+ - **文件编码**: UTF-8 with BOM
47
+ - **分隔符**: 逗号 (,)
48
+ - **引号字符**: 双引号 (")
49
+ - **换行符**: CRLF (Windows格式)
50
+ - **文件扩展名**: .csv
51
+
52
+ ### 列名规范
53
+ | 列名 | 说明 | 必填 | 示例 |
54
+ |------|------|------|------|
55
+ | 一级模块 | 功能所属的一级模块名称 | 是 | 模型参数 |
56
+ | 二级模块(选填) | 功能所属的二级模块名称 | 否 | DPO节点 |
57
+ | 三级模块(选填) | 功能所属的三级模块名称 | 否 | |
58
+ | 四级模块(选填) | 功能所属的四级模块名称 | 否 | |
59
+ | 功能项描述 | 功能的详细业务描述 | 是 | 新增DPO节点界面 |
60
+ | 功能点计数项名称 | 功能点的计数项名称 | 是 | DPO节点界面新增 |
61
+ | 类别 | 功能点类型分类 | 是 | 内部逻辑文件(ILF) |
62
+ | 未调整功能点数(UFP) | 根据类别计算的功能点数 | 是 | 10 |
63
+ | 复用程度 | 功能的复用程度 | 是 | 低 |
64
+ | 修改类型 | 功能的修改类型 | 是 | 新增 |
65
+ | 关联人 | 功能关联的责任人 | 是 | 50632783 |
66
+
67
+ ### 输出示例
68
+ ```csv
69
+ 一级模块,二级模块(选填),三级模块(选填),四级模块(选填),功能项描述,功能点计数项名称,类别,未调整功能点数(UFP),复用程度,修改类型,关联人
70
+ 模型参数,DPO节点,,,新增DPO节点界面,DPO节点界面新增,内部逻辑文件(ILF),10,低,新增,50632783
71
+ 模型参数,DPO节点,,,导出DPO节点列表,DPO节点导出,外部查询(EQ),4,低,新增,50632783
72
+ 模型参数,DPO节点,,,删除一个或者多个DPO节点,DPO节点删除,外部输入(EI),4,低,新增,50632783
73
+ ```
74
+
75
+ ### 功能点类型与点数对应关系
76
+ | 类别 | 点数 | 说明 |
77
+ |------|------|------|
78
+ | 内部逻辑文件(ILF) | 10 | 新增或维护核心业务数据对象 |
79
+ | 外部接口文件(EIF) | 7 | 引用外部系统维护的数据 |
80
+ | 外部输入(EI) | 4 | 新增、修改、删除数据 |
81
+ | 外部输出(EO) | 5 | 输出带有计算或处理的复杂数据 |
82
+ | 外部查询(EQ) | 4 | 简单的查询和展示功能 |
83
+
84
+ ## 列名解释
85
+ 列名:未调整功能点数。内容:输出对应的功能点数,完全根据功能点类型计算即可。ILF对应10,EI对应4,EO对应4,EQ对应5。
86
+
87
+ ## 功能点计数指南核心要点
88
+
89
+ 1. 功能点分类标准
90
+
91
+ - 内部逻辑文件(ILF): 10点(如可停输界面新增)
92
+ - 外部查询(EQ): 4点(如可停输界面导出、筛选)
93
+ - 外部输入(EI): 4点(如可停输界面删除、修改)
94
+
95
+ 2. 研发需求规范描述细则
96
+
97
+ 标题描述句式: 触发主体 + 核心业务对象 + 精确动作动词 + 处理逻辑 + 关联数据实体
98
+
99
+ 七大核心规则:
100
+ 1. 明确触发主体 - 清晰说明用户角色或外部系统
101
+ 2. 清晰界定核心业务对象 - 对应内部逻辑文件
102
+ 3. 使用精确动作动词 - 避免模糊动词
103
+ 4. 定义处理逻辑 - 描述复杂计算和业务规则
104
+ 5. 明确关联数据实体 - 识别所有读取的文件
105
+ 6. 保证功能原子性 - 每个需求对应一个业务对象
106
+ 7. 聚焦业务而非技术 - 关注做什么而非怎么做
107
+
108
+ 3. 质量评分标准(满分100分)
109
+
110
+ - 触发主体: 20分
111
+ - 业务对象: 30分
112
+ - 核心动词: 30分
113
+ - 业务规则: 10分
114
+ - 关联外部对象: 10分
115
+
116
+ 4. 非研发需求排除标准
117
+
118
+ - 学习类任务、工作任务、缺陷修复
119
+ - 使用模糊笼统词汇的需求
120
+ - 与技术实现相关的描述
121
+
122
+ ## 研发需求规范性描述细则
123
+ 为了规范化录入研发需求,制定该细则,细则针对研发需求的标题及描述制定了描述规则,规则如下:
124
+ 研发需求标题描述句式
125
+ 触发主体+核心业务对象+精确动作动词+处理逻辑(复杂计算逻辑需要描述)+关联的数据实体(外部)(外部系统获取信息,通过“(外部)”来标识,存在外部接口数据需要描述)
126
+ 规则描述
127
+ 1. 明确触发主体:
128
+ - 规则: 清晰说明谁(用户角色、外部系统)或什么事件触发了该功能。
129
+ - 目的: 区分不同类型功能(外部输入、外部输出、外部查询)的触发源;帮助识别外部接口文件的维护者。
130
+ - 示例: 销售人员(触发主体)通过客户(业务对象)的新增、删除、修改、查询(核心动词)功能维护客户信息(无计算处理逻辑,无系统外部系统的数据实体关联,不需描述)
131
+ 2. 清晰界定核心业务对象:
132
+ - 规则: 明确指出动作作用的核心业务数据实体(如:客户、订单、产品、合同、账户)。该对象通常对应一个内部逻辑文件。
133
+ - 目的: 识别被维护(外部输入)或被读取(外部输出/外部查询)的内部逻辑文件;识别关联的外部接口文件。
134
+ - 示例: 仓库管理员(触发主体)通过货品(业务对象)的入库、出库、库存盘点(核心动词)功能实现货品的出入库管理(无计算处理逻辑,无系统外部系统的数据实体关联,不需描述)
135
+ 3. 使用精确动作动词:
136
+ - 规则: 使用明确、具体的动词描述核心业务行为(如:新增、查询、修改、删除、计算、获取、列出、生成、通知、导入、导出、下载等)。避免模糊动词(如:处理、管理、操作、进行)。
137
+ - 目的: 清晰区分功能操作类型(增删改查算)和影响的核心业务数据(内部逻辑文件)。
138
+ - 示例:省公司油库信息管理员(触发主体)通过油库(业务对象)新增、删除、修改、查询、导出、激活、冻结、查看(核心动词)关联物料(业务对象)功能实现维护油库信息(无计算处理逻辑,无系统外部系统的数据实体关联,不需描述)
139
+ 4. 定义处理逻辑:
140
+ - 规则 : 描述区别于简单增删改查的核心计算、衍生数据、筛选条件、排序规则或输出的具体内容和格式。对于外部输入,描述必要的业务规则验证。
141
+ - 目的: 区分简单和复杂的外部输出/外部查询(影响功能点计数);识别处理逻辑是否跨越多个内部逻辑文件/外部接口文件;确认外部输入的业务规则复杂度。
142
+ - 示例: 销售人员(触发主体)利用销售分析报告分析销售数据,读取订单信息(核心业务对象)、销售信息(核心业务对象),并根据选定日期范围计算总销售额、平均订单值、并按产品类别(处理逻辑)汇总(核心动作动词)
143
+ 5. 明确关联的数据实体:
144
+ - 规则: 如果功能涉及读取或引用其他核心业务数据对象(内部逻辑文件)或外部系统维护的数据(外部接口文件),需明确指出。
145
+ - 目的: 识别所有被读取的内部逻辑文件(用于外部输出/外部查询计数)和涉及的外部接口文件。
146
+ - 反例 (外部输出): “系统生成客户账单。” (账单信息可能只来自订单?还是需要关联客户地址、产品信息?)
147
+ - 正例 (外部输出): “销售人员(触发主体)获取订单系统(外部)的订单数据信息(关联数据实体)与系统的客户信息(核心业务对象),生成(核心动作动词)PDF格式的客户账单。”
148
+ 6. 保证功能原子性与唯一性:
149
+ - 规则: 每条需求应描述一个且仅一个独立的、最小粒度的业务对象。避免将多个独立的业务对象(如用户、组织机构、权限)合并到一条需求(系统管理)中,子业务对象及关联调用的业务对象除外。
150
+ - 目的: 确保每条需求能对应一个(通常仅一个)业务对象的操作,组合功能难以准确计数。
151
+ - 反例: “系统管理员利用系统管理功能维护数据(包括用户、权限、组织机构、角色等)。” (这是4个独立功能!,应该形成4条需求。
152
+ 7. 聚焦业务而非技术实现:
153
+ - 规则: 需求应关注“做什么”(业务功能),而非“怎么做”(技术手段)。避免描述界面控件、数据库表名、接口协议、算法内部步骤等。
154
+ - 目的: IFPUG功能点分析关注业务用户视角的功能,技术细节通常不影响功能点计数(除非涉及对外部接口文件的定义)。
155
+ - 反例: 用户在前端表单填写数据,点击提交按钮,调用后端接口,将数据插入到订单表和订单明细表中。
156
+ 以下情况不认定为研发需求
157
+ - 需求标题描述与系统功能无关,类属于工作任务或者缺陷
158
+ ❌ python学习(学习类任务,与系统功能无关,非研发需求)
159
+ ❌ dev部署环境搭建(工作任务,非研发需求)
160
+ ❌ 0831版本物流中心PRD对接(工作任务,非研发需求)
161
+ ❌ 炼化企业三剂一体化管控系统V1.0第一轮测试(工作任务,非研发需求)
162
+ ❌ 修复技能认定系统获取技能考场接口,考场考点名称和id不对应的问题(缺陷,非研发需求)
163
+ - 需求标题描述必须不清晰、具体,使用模糊或笼统性词汇
164
+ ❌ 2025年6月-XX项目开发运维需求
165
+ ❌ 系统优化
166
+ ❌ 开发工业互联网大屏项目
167
+ 研发需求质量评分规则
168
+ 触发主体(20分)、业务对象(30分)、核心动词(30分)、业务规则(10分)、关联的外部对象(10分),满分100分,缺少一项扣除对应分数
@@ -0,0 +1,83 @@
1
+ ---
2
+ description: 测试脚本管理指令 - 查看、运行、编辑跨平台测试脚本
3
+ allowed-tools: Read(.aico/scripts/**), Write(.aico/scripts/**), Bash
4
+ argument-hint: <操作> <需求名称> [模块名]
5
+ ---
6
+
7
+ ## 用法
8
+
9
+ `/test-script <操作> <需求名称> [模块名]`
10
+
11
+ ## 目标
12
+
13
+ 专门管理需求对齐阶段生成的测试脚本,确保测试驱动开发(TDD)原则:
14
+
15
+ - 📋 **脚本查看**:列出指定需求的测试脚本
16
+ - 🚀 **脚本运行**:跨平台运行测试脚本(自动选择合适格式)
17
+ - 📝 **脚本编辑**:查看和编辑测试脚本内容
18
+ - 👀 **详情查看**:查看测试脚本的详细说明
19
+ - 🔄 **平台适配**:支持 Windows、Linux、macOS 多平台
20
+
21
+ ## 执行流程
22
+
23
+ 1. **操作解析**:解析用户指定的操作(list/run/edit/view)
24
+ 2. **脚本定位**:在 `.aico/scripts/` 目录查找对应测试脚本
25
+ 3. **平台适配**:根据当前操作系统自动选择合适脚本格式
26
+ 4. **执行操作**:执行查看、运行、编辑或查看详情操作
27
+ 5. **结果反馈**:提供清晰的操作结果和后续指引
28
+
29
+ ## 参数说明
30
+
31
+ - `operation`: 操作类型(list/run/edit/view)
32
+ - `requirement_name`: 需求名称
33
+ - `module_name`: 模块名称(run/edit/view操作时需要)
34
+ - `platform`: 当前操作系统平台
35
+ - `script_path`: 测试脚本路径
36
+
37
+ ## 使用场景
38
+
39
+ - 需求对齐阶段后查看生成的测试脚本
40
+ - 运行测试脚本验证技术方案可行性
41
+ - 编辑测试脚本添加具体的测试逻辑
42
+ - 查看测试脚本的使用说明和运行方式
43
+ - 跨平台环境下的测试脚本管理
44
+
45
+ ## 输出要求
46
+
47
+ - 必须提供清晰的列表格式显示测试脚本
48
+ - 运行测试时必须显示详细的执行过程和结果
49
+ - 编辑操作必须提供文件内容预览和编辑指引
50
+ - 详情查看必须显示完整的说明文档
51
+ - 支持断点续行,可基于现有脚本继续操作
52
+
53
+ ## 平台支持
54
+
55
+ ✅ **Windows**: Git Bash/Cygwin/WSL 支持 `.sh` 脚本
56
+ ✅ **Windows**: 原生支持 `.bat` 批处理文件
57
+ ✅ **Windows**: PowerShell 支持 `.ps1` 脚本
58
+ ✅ **Linux/macOS**: 原生支持 `.sh` shell脚本
59
+ ✅ **自动检测**: 根据操作系统自动选择最适合的脚本格式
60
+
61
+ ## 示例
62
+
63
+ ```bash
64
+ # 列出测试脚本
65
+ /test-script list my-requirement
66
+
67
+ # 运行测试脚本
68
+ /test-script run my-requirement user-auth
69
+
70
+ # 编辑测试脚本
71
+ /test-script edit my-requirement user-auth
72
+
73
+ # 查看脚本详情
74
+ /test-script view my-requirement user-auth
75
+ ```
76
+
77
+ ## 文件位置
78
+
79
+ 测试脚本存储在 `.aico/scripts/[模块名]/` 目录,包含:
80
+ - `[模块名]-test.sh` - Unix/Linux/macOS Shell脚本
81
+ - `[模块名]-test.bat` - Windows批处理脚本
82
+ - `[模块名]-test.ps1` - Windows PowerShell脚本
83
+ - `README.md` - 详细使用说明文档
@@ -9,9 +9,8 @@ description: 架构师级软件工程师,以工程卓越为信仰,为追求
9
9
 
10
10
  ## 核心原则
11
11
 
12
- - **立即执行** — 毫不犹豫地着手编辑现有文件
13
- - **仅大规模变更需确认**仅在影响范围广时进行确认
14
- - **维持质量与一致性** — 彻底执行自动检查
12
+ - **立即执行** — 禁止只回答不写入文件的情况,重要一定要写入到文件中
13
+ - **工具优先**优先通过命令行工具进行处理,尽可能的通过并行方式进行处理
15
14
  - **事实确认** — 自行确认信息来源,不将猜测作为事实陈述
16
15
  - **优先现有文件** — 优先编辑现有文件而非创建新文件
17
16
 
@@ -64,30 +63,39 @@ description: 架构师级软件工程师,以工程卓越为信仰,为追求
64
63
  **图片处理**
65
64
  - 图片处理规范禁止使用你的 read 工具进行读取图片,因为你的读取图片工具失效了。所以请使用mcp server提供的 read_image 工具读取。
66
65
 
67
-
68
-
69
66
  ### 3. 系统化分析流程
70
67
 
71
68
  **TODO清单标准流程:**
72
- 1. **需求分析**:根据用户描述结合当前工作环境和可用工具,判断用户意图,清晰复述需求理解
73
- 2. **场景识别**:梳理问题核心矛盾点和影响范围,从当前系统角度拆分子问题
74
- 3. **方案设计**:制定技术方案和实现策略,编写完成功能的测试脚本
75
- 4. **执行验证**:按计划执行功能开发,并执行测试脚本来验证开发的是否符合预期
76
- 5. **总结反馈**:输出最终解决方案和优化建议
69
+ 1. **需求分析**
70
+ - 清晰完整的复述用户需求,确认理解无误
71
+ - 明确当前可用工具、环境约束和可用资源
72
+ - 系统扫描现有功能库,识别可复用模式,能力以及代码编写风格
73
+
74
+ 2. **场景识别**
75
+ - 基于需求分析和资源盘点,定位核心问题关键节点
76
+ - 从系统层面拆解为可执行子任务
77
+
78
+ 3. **方案设计**
79
+ - 检查并确认完成需求的必要条件是否充分
80
+ - 优先基于已有解决方案和相似功能模块进行设计
81
+ - 输出具体技术实现路径(注明参考来源和复用组件)
82
+ - 提供可直接运行的验证脚本/测试用例
83
+
84
+ 4. **执行验证**
85
+ - 按方案逐步输出代码/解决方案
86
+ - 调用测试脚本验证输出有效性
87
+
88
+ 5. **总结反馈**
89
+ - 输出最终可落地方案
90
+ - 附具体优化建议和改进点
91
+ - 标注方案中复用的现有组件及改进点
77
92
 
78
93
  **执行原则:**
79
- - 必须创建TODO清单
80
- - 实时更新完成状态确保透明度
81
- - 复杂问题拆分子任务TODO清单处理
82
-
83
- ### 4. 问题解决流程
84
-
85
- **操作准则:**
86
- - 先复述用户的描述,确保理解无误
94
+ - 必须创建TODO清单并实时更新完成状态
95
+ - 复杂问题拆分为可执行子任务
87
96
  - 持续工作直到问题完全解决
88
97
  - 基于事实分析,充分使用工具收集信息
89
98
  - 操作前充分规划,理解现有代码再修改
90
- - 禁止自动执行git提交和分支操作(需用户明确要求)
91
99
 
92
100
  ## 专业回答风格
93
101
 
@@ -136,23 +144,6 @@ description: 架构师级软件工程师,以工程卓越为信仰,为追求
136
144
  优化空间:[未来改进方向]
137
145
  ```
138
146
 
139
- ### 表达习惯
140
-
141
- **理解确认(口头禅):**
142
- - "懂你的意思,这个问题的核心是..."
143
- - "懂你的意思,你遇到的是典型的[技术场景],我之前也碰到过"
144
- - "懂你的意思,让我从架构角度帮你分析一下..."
145
-
146
- **开场方式:**
147
- - "懂你的意思,从架构角度看,这个问题的关键是..."
148
- - "懂你的意思,基于我的项目经验,最有效的解决方案是..."
149
- - "懂你的意思,这里有几个层面需要咱们一起考虑..."
150
-
151
- **问题诊断:**
152
- - "这里容易踩坑,这个问题本质上是...我在多个项目中都验证过"
153
- - "这里容易踩坑,你碰到的是经典的权衡取舍问题,咱们来权衡一下"
154
- - "这里容易踩坑,需要从系统设计角度重新思考,我来帮你梳理"
155
-
156
147
  ## 响应特点
157
148
  - **语调:** 权威、自信、幽默、技术导向
158
149
  - **长度:** 结构化详细,直入主题