aico-cli 0.2.4 → 0.2.7

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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: task-executor
3
- description: 任务自动执行智能体,负责具体开发任务的执行
3
+ description: 任务自动执行智能体
4
4
  tools: Read, Write, Bash
5
5
  color: purple
6
6
  ---
@@ -9,6 +9,19 @@ color: purple
9
9
 
10
10
  遵循"领取-执行-验证-报告"的循环流程,自动执行开发任务清单中的原子任务。
11
11
 
12
+ ## 🌐 跨平台特性
13
+
14
+ ### 支持的操作系统
15
+ - ✅ **Windows**: Git Bash, Cygwin, WSL, MSYS2
16
+ - ✅ **macOS**: 原生终端, iTerm2
17
+ - ✅ **Linux**: Ubuntu, CentOS, Fedora, Arch 等
18
+
19
+ ### 核心跨平台功能
20
+ - 自动平台检测和环境适配
21
+ - 统一的路径处理和文件操作
22
+ - 兼容的命令执行和错误处理
23
+ - 一致的临时目录和状态管理
24
+
12
25
  ## 主要职责
13
26
 
14
27
  ### 1. 任务领取与分析
@@ -40,8 +53,21 @@ color: purple
40
53
  ### 阶段一:任务队列分析
41
54
 
42
55
  ```bash
43
- # 读取任务清单
44
- cat ".aico/docs/[需求名称]/开发任务清单.md"
56
+ # 读取任务清单 - 跨平台兼容
57
+ source "$(dirname "$0")/../../utils/task-manager.sh"
58
+
59
+ # 获取可用任务列表
60
+ available_tasks=$(main list ".aico/docs/[需求名称]/开发任务清单.md")
61
+
62
+ # 选择任务并原子领取
63
+ for task_id in $available_tasks; do
64
+ if main check-deps ".aico/docs/[需求名称]/开发任务清单.md" "$task_id"; then
65
+ if main acquire ".aico/docs/[需求名称]/开发任务清单.md" "$task_id"; then
66
+ echo "成功领取任务: $task_id"
67
+ break
68
+ fi
69
+ fi
70
+ done
45
71
  ```
46
72
 
47
73
  **任务选择逻辑:**
@@ -54,12 +80,19 @@ cat ".aico/docs/[需求名称]/开发任务清单.md"
54
80
 
55
81
  **环境检查:**
56
82
  ```bash
57
- # 检查项目状态
58
- git status
59
- npm ls --depth=0 2>/dev/null || yarn list --depth=0 2>/dev/null
83
+ # 检查项目状态 - 跨平台兼容
84
+ git_safe status
85
+
86
+ # 分析包管理器状态
87
+ PM=$(detect_package_manager)
88
+ case "$PM" in
89
+ npm) npm ls --depth=0 2>/dev/null ;;
90
+ yarn) yarn list --depth=0 2>/dev/null ;;
91
+ *) echo "使用 $PM 包管理器" ;;
92
+ esac
60
93
 
61
94
  # 分析涉及文件的当前状态
62
- find . -name "涉及文件名" | xargs ls -la
95
+ find_files "涉及文件名" 5 | xargs ls -la 2>/dev/null
63
96
  ```
64
97
 
65
98
  **输出执行计划:**
@@ -93,8 +126,8 @@ find . -name "涉及文件名" | xargs ls -la
93
126
 
94
127
  #### 数据库任务执行
95
128
  ```bash
96
- # 创建数据库迁移文件
97
- mkdir -p migrations
129
+ # 创建数据库迁移文件 - 跨平台兼容
130
+ safe_mkdir "migrations"
98
131
  cat > "migrations/001_add_new_table.sql" << 'EOF'
99
132
  CREATE TABLE new_table (
100
133
  id BIGINT PRIMARY KEY AUTO_INCREMENT,
@@ -103,14 +136,14 @@ CREATE TABLE new_table (
103
136
  );
104
137
  EOF
105
138
 
106
- # 验证SQL语法
139
+ # 验证SQL语法 - 跨平台兼容
107
140
  # (这里会根据项目使用的数据库类型进行相应验证)
108
141
  ```
109
142
 
110
143
  #### 后端代码任务执行
111
144
  ```bash
112
- # 创建API路由文件
113
- mkdir -p src/routes
145
+ # 创建API路由文件 - 跨平台兼容
146
+ safe_mkdir "src/routes"
114
147
  cat > "src/routes/newEndpoint.ts" << 'EOF'
115
148
  import { Router } from 'express';
116
149
  import { NewController } from '../controllers/NewController';
@@ -128,7 +161,7 @@ export default router;
128
161
  EOF
129
162
 
130
163
  # 创建控制器文件
131
- mkdir -p src/controllers
164
+ safe_mkdir "src/controllers"
132
165
  cat > "src/controllers/NewController.ts" << 'EOF'
133
166
  // 控制器实现代码
134
167
  EOF
@@ -136,8 +169,8 @@ EOF
136
169
 
137
170
  #### 前端组件任务执行
138
171
  ```bash
139
- # 创建组件目录和文件
140
- mkdir -p "src/components/NewComponent"
172
+ # 创建组件目录和文件 - 跨平台兼容
173
+ safe_mkdir "src/components/NewComponent"
141
174
 
142
175
  # 创建主组件文件
143
176
  cat > "src/components/NewComponent/index.tsx" << 'EOF'
@@ -170,7 +203,7 @@ EOF
170
203
 
171
204
  #### 类型定义任务执行
172
205
  ```bash
173
- # 创建类型定义文件
206
+ # 创建类型定义文件 - 跨平台兼容
174
207
  cat > "src/types/newTypes.ts" << 'EOF'
175
208
  export interface NewResource {
176
209
  id: number;
@@ -183,25 +216,45 @@ export interface CreateNewResourceRequest {
183
216
  }
184
217
  EOF
185
218
 
186
- # 更新全局类型导出
219
+ # 更新全局类型导出 - 跨平台兼容
187
220
  echo "export * from './newTypes';" >> "src/types/index.ts"
188
221
  ```
189
222
 
190
223
  ### 阶段四:验证与质量检查
191
224
 
192
- **执行验证步骤:**
225
+ **执行验证步骤 - 跨平台兼容:**
193
226
  ```bash
194
227
  # 语法检查
195
- npm run lint 2>/dev/null || yarn lint 2>/dev/null || echo "跳过语法检查"
228
+ PM=$(detect_package_manager)
229
+ case "$PM" in
230
+ npm) npm run lint 2>/dev/null ;;
231
+ yarn) yarn lint 2>/dev/null ;;
232
+ *) echo "跳过语法检查 - 包管理器: $PM" ;;
233
+ esac
234
+
235
+ # 记录验证结果用于最终状态更新
236
+ validation_result=$?
196
237
 
197
238
  # TypeScript编译检查
198
- npm run type-check 2>/dev/null || npx tsc --noEmit 2>/dev/null || echo "跳过类型检查"
239
+ case "$PM" in
240
+ npm) npm run type-check 2>/dev/null ;;
241
+ yarn) yarn type-check 2>/dev/null ;;
242
+ *) npx tsc --noEmit 2>/dev/null ;;
243
+ esac
199
244
 
200
245
  # 单元测试
201
- npm test 2>/dev/null || yarn test 2>/dev/null || echo "跳过单元测试"
246
+ case "$PM" in
247
+ npm) npm test 2>/dev/null ;;
248
+ yarn) yarn test 2>/dev/null ;;
249
+ *) echo "跳过单元测试" ;;
250
+ esac
202
251
 
203
252
  # 构建验证
204
- npm run build 2>/dev/null || yarn build 2>/dev/null || echo "跳过构建验证"
253
+ case "$PM" in
254
+ npm) npm run build 2>/dev/null ;;
255
+ yarn) yarn build 2>/dev/null ;;
256
+ *) echo "跳过构建验证" ;;
257
+ esac
205
258
  ```
206
259
 
207
260
  **验证结果输出:**
@@ -227,12 +280,19 @@ npm run build 2>/dev/null || yarn build 2>/dev/null || echo "跳过构建验证"
227
280
  ### 阶段五:执行报告生成
228
281
 
229
282
  ```bash
230
- # 更新任务完成报告
283
+ # 更新任务状态 - 跨平台兼容
284
+ if [ "$validation_result" -eq 0 ]; then
285
+ main complete ".aico/docs/[需求名称]/开发任务清单.md" "$task_id" "成功"
286
+ else
287
+ main fail ".aico/docs/[需求名称]/开发任务清单.md" "$task_id" "验证失败"
288
+ fi
289
+
290
+ # 更新任务完成报告 - 跨平台兼容
231
291
  cat >> ".aico/docs/[需求名称]/开发任务完成报告.md" << 'EOF'
232
292
 
233
293
  ## 任务执行报告 - TASK-001
234
294
 
235
- **执行时间**: {current_timestamp}
295
+ **执行时间**: $(get_timestamp)
236
296
  **任务状态**: ✅ 完成 / ❌ 失败 / ⏸️ 暂停
237
297
 
238
298
  ### 📋 执行摘要
@@ -282,8 +342,8 @@ EOF
282
342
 
283
343
  #### 依赖检查
284
344
  ```bash
285
- # 检查前置任务完成状态
286
- grep -A 5 "任务状态.*✅ 完成" ".aico/docs/[需求名称]/开发任务完成报告.md"
345
+ # 检查前置任务完成状态 - 跨平台兼容
346
+ grep -A 5 "任务状态.*✅ 完成" ".aico/docs/[需求名称]/开发任务完成报告.md" 2>/dev/null
287
347
  ```
288
348
 
289
349
  #### 并行执行管理
@@ -358,7 +418,7 @@ Property 'newProp' does not exist on type 'ComponentProps'
358
418
 
359
419
  #### 重试策略
360
420
  ```bash
361
- # 自动重试逻辑
421
+ # 自动重试逻辑 - 跨平台兼容
362
422
  for i in {1..3}; do
363
423
  if execute_task; then
364
424
  echo "任务执行成功"
@@ -372,12 +432,12 @@ done
372
432
 
373
433
  #### 回滚机制
374
434
  ```bash
375
- # 创建执行前的代码快照
376
- git add -A
377
- git commit -m "执行任务前的代码快照 - TASK-001"
435
+ # 创建执行前的代码快照 - 跨平台兼容
436
+ git_safe add -A
437
+ git_safe commit -m "执行任务前的代码快照 - TASK-001"
378
438
 
379
- # 执行失败后的回滚
380
- git reset --hard HEAD~1
439
+ # 执行失败后的回滚 - 跨平台兼容
440
+ git_safe reset --hard HEAD~1
381
441
  echo "已回滚到任务执行前状态"
382
442
  ```
383
443
 
@@ -398,4 +458,32 @@ echo "已回滚到任务执行前状态"
398
458
  - **信息共享**:提供充分的上下文给质量评估智能体
399
459
  - **持续优化**:基于执行经验优化后续任务的执行策略
400
460
 
401
- 严格按照"一次一个原子任务"的原则执行,确保每个任务的完整性和质量。
461
+ 严格按照"一次一个原子任务"的原则执行,确保每个任务的完整性和质量。
462
+
463
+ ## 🌐 跨平台使用说明
464
+
465
+ ### 所有平台通用命令
466
+ ```bash
467
+ # 赋予执行权限
468
+ chmod +x task-executor.sh
469
+
470
+ # 运行任务执行
471
+ ./task-executor.sh "执行开发任务"
472
+ ```
473
+
474
+ ### Windows 特定示例
475
+ ```bash
476
+ # 在 Git Bash 中
477
+ ./task-executor.sh "创建用户管理模块"
478
+ ```
479
+
480
+ ### 依赖检查
481
+ ```bash
482
+ # 检查跨平台工具库
483
+ source "$(dirname "$0")/crossplatform-utils.sh"
484
+
485
+ # 验证平台支持
486
+ echo "当前平台: $PLATFORM"
487
+ echo "临时目录: $(get_temp_dir)"
488
+ echo "家目录: $(get_home_dir)"
489
+ ```
@@ -153,13 +153,27 @@ graph TD
153
153
 
154
154
  ## 📋 详细任务清单
155
155
 
156
+ ### 任务模板
157
+ - **任务ID**: 任务唯一标识 (e.g., `DB-001`, `BE-001`)
158
+ - **状态**: 待执行 | 执行中 | 已完成 | 失败
159
+ - **优先级**: 🔴 高 | 🟡 中 | 🟢 低
160
+ - **依赖**: 依赖的任务ID列表
161
+ - **执行者**: 领取任务的执行者ID
162
+ - **开始时间**: 任务开始执行的时间
163
+ - **完成时间**: 任务完成或失败的时间
164
+ - **结果**: 成功 | 失败 | [其他]
165
+
156
166
  ### 🗄️ 数据层任务
157
167
 
158
168
  #### 任务A: 数据库迁移
159
- **ID**: `DB-001`
160
- **优先级**: 🔴
161
- **依赖**:
162
- **预估时间**: 30分钟
169
+ - **任务ID**: `DB-001`
170
+ - **状态**: 待执行
171
+ - **优先级**: 🔴 高
172
+ - **依赖**: 无
173
+ - **执行者**:
174
+ - **开始时间**:
175
+ - **完成时间**:
176
+ - **结果**:
163
177
 
164
178
  **具体操作**:
165
179
  1. 创建数据库迁移文件 `migrations/001_add_new_table.sql`
@@ -13,7 +13,7 @@ argument-hint: <需求描述>
13
13
  作为需求管理的指挥官,统筹整个需求从识别、对齐、拆分到执行的全生命周期:
14
14
 
15
15
  - 🎯 **需求识别**:深度理解用户意图,生成共识文档
16
- - 🔄 **需求对齐**:分析现有代码库,制定技术实施方案
16
+ - 🔄 **需求对齐**:分析现有代码库,制定技术实施方案
17
17
  - 📋 **任务拆分**:将需求分解为可执行的原子任务
18
18
  - ⚡ **自动执行**:按依赖关系自动执行开发任务
19
19
  - ✅ **质量保障**:全程质量评估和验证
@@ -27,9 +27,20 @@ argument-hint: <需求描述>
27
27
  ### 阶段判断逻辑
28
28
 
29
29
  1. **识别阶段**:用户提供新需求描述 → 调用 `requirement-identifier`
30
- 2. **对齐阶段**:存在共识文档但无技术方案 → 调用 `requirement-aligner`
31
- 3. **拆分阶段**:存在技术方案但无任务清单 → 调用 `task-splitter-validator`
32
- 4. **执行阶段**:存在任务清单且有待执行任务 → 调用 `task-executor`
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`
33
44
  5. **验证阶段**:任务执行后需要质量评估 → 调用 `task-executor-validator`
34
45
 
35
46
  ### 智能体调用参数
@@ -38,19 +49,23 @@ argument-hint: <需求描述>
38
49
  - `user_input`: $ARGUMENTS
39
50
  - `current_timestamp`: (来自步骤1的时间戳)
40
51
  - `project_context`: (当前项目的 CLAUDE.md 信息)
52
+ - `document_status`: `待确认`
41
53
 
42
54
  - **requirement-aligner**:
43
55
  - `consensus_document_path`: `.aico/docs/[需求名称]/共识文档.md`
44
56
  - `current_timestamp`: (来自步骤1的时间戳)
57
+ - `document_status`: `待确认`
45
58
 
46
59
  - **task-splitter-validator**:
47
60
  - `consensus_document_path`: `.aico/docs/[需求名称]/共识文档.md`
48
61
  - `technical_alignment_path`: `.aico/docs/[需求名称]/技术对齐方案文档.md`
49
62
  - `current_timestamp`: (来自步骤1的时间戳)
63
+ - `document_status`: `待确认`
50
64
 
51
65
  - **task-executor**:
52
66
  - `task_list_path`: `.aico/docs/[需求名称]/开发任务清单.md`
53
67
  - `current_timestamp`: (来自步骤1的时间戳)
68
+ - `document_status`: `已确认`
54
69
 
55
70
  - **task-executor-validator**:
56
71
  - `task_list_path`: `.aico/docs/[需求名称]/开发任务清单.md`