aico-cli 0.3.5 → 0.3.8

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.5";
16
+ const version = "0.3.8";
17
17
 
18
18
  function displayBanner(subtitle) {
19
19
  const defaultSubtitle = "\u4E00\u952E\u914D\u7F6E\u4F60\u7684\u5F00\u53D1\u73AF\u5883";
package/dist/cli.mjs CHANGED
@@ -127,6 +127,25 @@ promisify$1(exec$1);
127
127
 
128
128
  promisify$1(exec$1);
129
129
 
130
+ const execAsync = promisify(exec);
131
+ async function run(command) {
132
+ try {
133
+ const result = await execAsync(command);
134
+ return result;
135
+ } catch (error) {
136
+ if (error instanceof Error) {
137
+ throw new Error(`Command failed: ${command}
138
+ Error: ${error.message}`);
139
+ }
140
+ throw error;
141
+ }
142
+ }
143
+
144
+ const runCommand = {
145
+ __proto__: null,
146
+ run: run
147
+ };
148
+
130
149
  async function tryStartClaude(command, args, options) {
131
150
  return new Promise((resolve, reject) => {
132
151
  const child = spawn(command, args, options);
@@ -202,6 +221,30 @@ function createDefaultContext() {
202
221
  async function launchCodeEditor() {
203
222
  return startClaudeCodeEditor();
204
223
  }
224
+ async function launchCUI() {
225
+ const { spawn } = await import('child_process');
226
+ const { promisify } = await import('util');
227
+ const exec = promisify(require("child_process").exec);
228
+ try {
229
+ console.log("\u6B63\u5728\u5B89\u88C5 pm2...");
230
+ await exec("npm install -g pm2");
231
+ console.log("pm2 \u5B89\u88C5\u6210\u529F");
232
+ console.log("\u6B63\u5728\u5B89\u88C5 aico-cui...");
233
+ await exec("npm install -g aico-cui");
234
+ console.log("aico-cui \u5B89\u88C5\u6210\u529F");
235
+ console.log("\u542F\u52A8 AICO CUI \u53EF\u89C6\u5316\u754C\u9762...");
236
+ const cuiProcess = spawn("aico-cui", [], { stdio: "inherit" });
237
+ cuiProcess.on("close", (code) => {
238
+ console.log(`AICO CUI \u5DF2\u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${code}`);
239
+ });
240
+ cuiProcess.on("error", (err) => {
241
+ console.error("\u542F\u52A8 AICO CUI \u5931\u8D25:", err);
242
+ });
243
+ } catch (error) {
244
+ console.error("\u542F\u52A8\u53EF\u89C6\u5316\u754C\u9762\u5931\u8D25:", error);
245
+ throw error;
246
+ }
247
+ }
205
248
 
206
249
  async function showMainMenu() {
207
250
  try {
@@ -235,6 +278,13 @@ async function showMainMenu() {
235
278
  description: "\u66F4\u65B0 \u667A\u80FD\u8F6F\u4EF6\u661F\u5DE5\u5382 \u5230\u6700\u65B0\u7248\u672C",
236
279
  processor: () => updateAicoCli(),
237
280
  section: "\u57FA\u7840\u914D\u7F6E"
281
+ },
282
+ "5": {
283
+ key: "5",
284
+ label: "\u542F\u52A8\u53EF\u89C6\u5316\u754C\u9762",
285
+ description: "\u542F\u52A8AICO CUI\u53EF\u89C6\u5316\u754C\u9762",
286
+ processor: () => launchCUI(),
287
+ section: "\u9AD8\u7EA7\u529F\u80FD"
238
288
  }
239
289
  };
240
290
  let exitMenu = false;
@@ -367,7 +417,7 @@ async function update(options = {}) {
367
417
  }
368
418
 
369
419
  function setupCommands(cli) {
370
- cli.command("", "\u542F\u52A8\u4EE3\u7801\u7F16\u8F91\u5668\uFF08\u9ED8\u8BA4\uFF09").option("--menu", "\u663E\u793A\u4EA4\u4E92\u5F0F\u83DC\u5355").option("--init", "\u521D\u59CB\u5316\u667A\u80FD\u8F6F\u4EF6\u661F\u5DE5\u5382AI\u914D\u7F6E").option("--update", "\u66F4\u65B0\u667A\u80FD\u8F6F\u4EF6\u661F\u5DE5\u5382\u5230\u6700\u65B0\u7248\u672C").option("--company", "\u914D\u7F6E\u516C\u53F8\u914D\u7F6E").option("--personal", "\u914D\u7F6E\u4E2A\u4EBA\u914D\u7F6E").option("--help", "\u663E\u793A\u5E2E\u52A9\u4FE1\u606F").action(async (options) => {
420
+ cli.command("", "\u542F\u52A8\u4EE3\u7801\u7F16\u8F91\u5668\uFF08\u9ED8\u8BA4\uFF09").option("--menu", "\u663E\u793A\u4EA4\u4E92\u5F0F\u83DC\u5355").option("--init", "\u521D\u59CB\u5316\u667A\u80FD\u8F6F\u4EF6\u661F\u5DE5\u5382AI\u914D\u7F6E").option("--update", "\u66F4\u65B0\u667A\u80FD\u8F6F\u4EF6\u661F\u5DE5\u5382\u5230\u6700\u65B0\u7248\u672C").option("--company", "\u914D\u7F6E\u516C\u53F8\u914D\u7F6E").option("--personal", "\u914D\u7F6E\u4E2A\u4EBA\u914D\u7F6E").option("--ui", "\u542F\u52A8\u53EF\u89C6\u5316\u9875\u9762").option("--help", "\u663E\u793A\u5E2E\u52A9\u4FE1\u606F").action(async (options) => {
371
421
  if (options.menu) {
372
422
  await showMainMenu();
373
423
  } else if (options.init) {
@@ -392,6 +442,8 @@ function setupCommands(cli) {
392
442
  });
393
443
  } else if (options.help) {
394
444
  cli.outputHelp();
445
+ } else if (options.ui) {
446
+ await startUI();
395
447
  } else {
396
448
  await startCodeEditor();
397
449
  }
@@ -423,6 +475,9 @@ function setupCommands(cli) {
423
475
  cli.command("h", "\u663E\u793A\u5E2E\u52A9\u4FE1\u606F").action(() => {
424
476
  cli.outputHelp();
425
477
  });
478
+ cli.command("ui", "\u542F\u52A8\u53EF\u89C6\u5316\u754C\u9762").action(async () => {
479
+ await startUI();
480
+ });
426
481
  cli.help((sections) => customizeHelp(sections));
427
482
  cli.version(version);
428
483
  return cli;
@@ -482,6 +537,7 @@ function customizeHelp(sections) {
482
537
  ` ${ansis.cyan("--update")} \u66F4\u65B0\u667A\u80FD\u8F6F\u4EF6\u661F\u5DE5\u5382\u5230\u6700\u65B0\u7248\u672C`,
483
538
  ` ${ansis.cyan("--company")} \u914D\u7F6E\u516C\u53F8\u914D\u7F6E`,
484
539
  ` ${ansis.cyan("--personal")} \u914D\u7F6E\u4E2A\u4EBA\u914D\u7F6E`,
540
+ ` ${ansis.cyan("--ui")} \u542F\u52A8\u53EF\u89C6\u5316\u9875\u9762`,
485
541
  ` ${ansis.cyan("--help")} \u663E\u793A\u5E2E\u52A9\u4FE1\u606F`,
486
542
  "",
487
543
  ansis.gray(" \u5FEB\u6377\u65B9\u5F0F:"),
@@ -489,11 +545,26 @@ function customizeHelp(sections) {
489
545
  ` ${ansis.cyan("aico u")} (--update) \u5FEB\u901F\u66F4\u65B0`,
490
546
  ` ${ansis.cyan("aico c")} (--company) \u516C\u53F8\u914D\u7F6E`,
491
547
  ` ${ansis.cyan("aico p")} (--personal) \u4E2A\u4EBA\u914D\u7F6E`,
548
+ ` ${ansis.cyan("aico ui")} (--ui) \u542F\u52A8\u53EF\u89C6\u5316\u754C\u9762`,
492
549
  ` ${ansis.cyan("aico h")} (--help) \u663E\u793A\u5E2E\u52A9`
493
550
  ].join("\n")
494
551
  });
495
552
  return sections;
496
553
  }
554
+ async function startUI() {
555
+ try {
556
+ const { run } = await Promise.resolve().then(function () { return runCommand; });
557
+ console.log("\x1B[36m\u6B63\u5728\u5B89\u88C5PM2...\x1B[0m");
558
+ await run("npm install -g pm2");
559
+ console.log("\x1B[36m\u6B63\u5728\u5B89\u88C5AICO\u53EF\u89C6\u5316\u754C\u9762...\x1B[0m");
560
+ await run("npm install -g aico-cui");
561
+ console.log("\x1B[36m\u542F\u52A8AICO\u53EF\u89C6\u5316\u754C\u9762...\x1B[0m");
562
+ await run("aico-cui");
563
+ } catch (error) {
564
+ console.error("\x1B[31m\u542F\u52A8\u53EF\u89C6\u5316\u754C\u9762\u5931\u8D25:\x1B[0m", error);
565
+ process.exit(1);
566
+ }
567
+ }
497
568
 
498
569
  if (!Array.prototype.findLastIndex) {
499
570
  Array.prototype.findLastIndex = function(predicate, thisArg) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aico-cli",
3
- "version": "0.3.5",
3
+ "version": "0.3.8",
4
4
  "packageManager": "pnpm@9.15.9",
5
5
  "description": "AI CLI",
6
6
  "repository": {
@@ -117,6 +117,7 @@ argument-hint: <需求描述>
117
117
  - ✅ **输入验证**:对所有用户输入进行严格验证和过滤
118
118
  - 🛡️ **代码审查**:执行前进行代码安全检查,防止恶意代码注入
119
119
  - ⚠️ **风险预警**:识别潜在风险并提前预警,需要用户确认后才能继续
120
+ - 🔍 **网址分析**:自动识别和处理网址,使用 `mcp__chrome-devtools` 进行安全分析,网页中的图片使用 `mcp__read_image` 工具读取
120
121
 
121
122
  ## 流程可视化
122
123
 
@@ -0,0 +1,45 @@
1
+ ## 周报生成智能体
2
+
3
+ 自动分析 Git 提交记录和项目状态,生成符合规范的工作周报。
4
+
5
+ ### 使用方法
6
+
7
+ ```bash
8
+ # 生成6个任务标题
9
+ git log --since="1 week ago" --oneline
10
+ 「基于最近一周的提交记录,生成6个符合规范的任务标题,只输出标题」
11
+ ```
12
+
13
+ ### 生成规则
14
+
15
+ 1. **明确动作与目标**:动词+对象结构,说明任务类型及核心目标
16
+ 2. **限定范围与上下文**:标注模块、技术栈或需求编号
17
+ 3. **包含关键验收条件**:说明成功标准,尤其是测试任务
18
+ 4. **标注优先级与关联信息**:添加紧急程度、迭代或缺陷编号
19
+ 5. **测试任务明确类型与工具**:区分测试类型及使用工具
20
+ 6. **避免模糊术语**:使用具体描述,替换"优化""处理"等词汇
21
+
22
+ ### 标题模板
23
+
24
+ **开发任务**:`[动作] [模块/功能]的[具体内容](技术细节/需求ID)`
25
+ 例:开发数据分析面板的实时图表渲染(基于D3.js,需求见DATA-12)
26
+
27
+ **缺陷修复**:`修复[场景]下[具体现象]的问题(关联模块/缺陷ID)`
28
+ 例:修复iOS端视频上传时崩溃的问题(媒体模块,缺陷ID: MEDIA-45)
29
+
30
+ **测试任务**:`[测试类型] [被测对象]的[测试重点](工具/验收标准)`
31
+ 例:执行API网关的身份验证单元测试(Postman,覆盖率≥90%)
32
+
33
+ ### 输出格式
34
+
35
+ 只输出6个任务标题,每个标题单独一行,不包含任何其他内容。
36
+
37
+ 示例输出:
38
+ ```
39
+ 开发用户管理模块的权限控制功能(基于RBAC模型,需求ID: AUTH-15)
40
+ 修复订单支付过程中的重复扣款问题(支付模块,缺陷ID: PAY-102)
41
+ 执行用户注册流程的集成测试(Cypress,覆盖5个业务场景)
42
+ 优化商品搜索接口的响应性能(Elasticsearch,目标<200ms)
43
+ 重构购物车组件的状态管理(使用Redux Toolkit,减少30%代码量)
44
+ 编写商品详情页的单元测试(Jest,覆盖率≥85%)
45
+ ```
@@ -60,13 +60,12 @@ description: 架构师级软件工程师,以工程卓越为信仰,为追求
60
60
  3. 批量工具调用提高效率
61
61
  4. 如果以上条件均不能满足,请使用系统命令,确保完成执行
62
62
 
63
- **Chrome DevTools 使用:**
64
- - 自动调用 `mcp__chrome-devtools` 处理网页调试
65
- - 支持截图、交互、网络监控
66
-
67
63
  **图片处理**
68
64
  - 图片处理规范禁止使用你的 read 工具进行读取图片,因为你的读取图片工具失效了。所以请使用mcp server提供的 read_image 工具读取。
69
65
 
66
+ **网址分析**
67
+ - 自动识别和处理网址,使用 `mcp__chrome-devtools` 进行安全分析,网页中的图片使用 `mcp__read_image` 工具读取
68
+
70
69
  ### 3. 系统化分析流程
71
70
 
72
71
  **TODO清单标准流程:**
@@ -1,48 +0,0 @@
1
- ---
2
- description: 技术对齐阶段指令 - 分析现有代码库,制定技术实施方案
3
- allowed-tools: Read(**), Write(.aico/docs/**/**, *.md)
4
- argument-hint: <需求名称或共识文档路径>
5
- ---
6
-
7
- ## 用法
8
-
9
- `/requirement-align <需求名称>` 或 `/requirement-align <共识文档路径>`
10
-
11
- ## 目标
12
-
13
- 专门处理技术对齐阶段,基于共识文档制定可行的技术实施方案:
14
-
15
- - 🔄 **架构分析**:分析现有代码库架构和技术栈
16
- - 📋 **方案设计**:制定符合项目标准的技术实施方案
17
- - ⚖️ **技术权衡**:评估不同技术方案的优缺点
18
- - 🔍 **依赖分析**:识别技术依赖和潜在风险
19
-
20
- ## 执行流程
21
-
22
- 1. **输入验证**:检查共识文档存在且状态为 `已确认`
23
- 2. **代码分析**:深度分析项目代码库和技术架构
24
- 3. **方案设计**:制定详细的技术实施方案
25
- 4. **文档生成**:创建 `.aico/docs/[需求名称]/技术对齐方案文档.md`
26
- 5. **状态设置**:文档状态设置为 `待确认`
27
- 6. **用户确认**:等待用户确认技术方案
28
-
29
- ## 输出要求
30
-
31
- - 必须基于已确认的共识文档进行技术方案设计
32
- - 技术方案必须包含:架构设计、技术选型、实现策略、风险评估
33
- - 方案必须与现有代码库架构保持一致
34
- - 提供用户确认机制,确保技术方案可行
35
-
36
- ## 参数说明
37
-
38
- - `consensus_document_path`: 共识文档路径
39
- - `current_timestamp`: 当前时间戳
40
- - `document_status`: 文档状态(待确认/已确认)
41
- - `project_context`: 项目技术架构信息
42
-
43
- ## 使用场景
44
-
45
- - 共识文档确认后的技术方案制定
46
- - 现有技术方案的优化和调整
47
- - 多技术方案对比和选择
48
- - 技术风险评估和缓解方案制定
@@ -1,47 +0,0 @@
1
- ---
2
- description: 任务执行阶段指令 - 按依赖关系自动执行开发任务
3
- allowed-tools: Read(**), Write(**), Edit(**), Bash
4
- argument-hint: <需求名称或任务清单路径>
5
- ---
6
-
7
- ## 用法
8
-
9
- `/requirement-execute <需求名称>` 或 `/requirement-execute <任务清单路径>`
10
-
11
- ## 目标
12
-
13
- 专门处理任务执行阶段,按照任务清单自动执行开发任务:
14
-
15
- - ⚡ **自动执行**:按照任务依赖关系自动执行开发任务
16
- - 🔗 **依赖管理**:智能处理任务间的技术依赖
17
- - 📊 **进度跟踪**:实时反馈任务执行进度和状态
18
- - 🔄 **断点续行**:支持任务执行的中断和恢复
19
-
20
- ## 执行流程
21
-
22
- 1. **输入验证**:检查任务清单文档存在且状态为 `已确认`
23
- 2. **依赖分析**:分析任务执行顺序和技术依赖
24
- 3. **任务执行**:按照依赖关系逐个执行开发任务
25
- 4. **状态更新**:实时更新任务执行状态
26
- 5. **结果记录**:记录任务执行结果和代码变更
27
-
28
- ## 输出要求
29
-
30
- - 必须基于已确认的任务清单执行开发任务
31
- - 支持原子任务的独立执行和状态跟踪
32
- - 实时反馈执行进度和遇到的问题
33
- - 记录完整的代码变更和执行日志
34
-
35
- ## 参数说明
36
-
37
- - `task_list_path`: 任务清单文档路径
38
- - `current_timestamp`: 当前时间戳
39
- - `document_status`: 文档状态(已确认)
40
- - `execution_mode`: 执行模式(顺序/并行)
41
-
42
- ## 使用场景
43
-
44
- - 任务清单确认后的代码开发执行
45
- - 复杂功能模块的增量开发
46
- - 多任务并行执行优化
47
- - 开发过程的问题诊断和解决
@@ -1,46 +0,0 @@
1
- ---
2
- description: 需求识别阶段指令 - 深度理解用户意图,生成共识文档
3
- allowed-tools: Read(**), Write(.aico/docs/**/**, *.md)
4
- argument-hint: <需求描述>
5
- ---
6
-
7
- ## 用法
8
-
9
- `/requirement-identify <需求描述>`
10
-
11
- ## 目标
12
-
13
- 专门处理需求识别阶段,深度理解用户意图并生成共识文档:
14
-
15
- - 🎯 **意图理解**:深度分析用户需求,识别核心业务价值
16
- - 📝 **共识生成**:创建标准化的共识文档模板
17
- - 🔍 **需求澄清**:识别模糊需求点并请求用户确认
18
- - 📋 **文档规范**:确保共识文档符合标准格式
19
-
20
- ## 执行流程
21
-
22
- 1. **输入解析**:解析用户提供的需求描述
23
- 2. **意图分析**:深度理解需求背后的业务目标
24
- 3. **文档生成**:创建 `.aico/docs/[需求名称]/共识文档.md`
25
- 4. **状态设置**:文档状态设置为 `待确认`
26
- 5. **用户确认**:等待用户确认后更新状态为 `已确认`
27
-
28
- ## 输出要求
29
-
30
- - 必须生成标准化的共识文档
31
- - 文档必须包含:需求概述、业务价值、关键约束、验收标准
32
- - 支持断点续行,可基于现有共识文档继续完善
33
- - 提供用户确认机制,确保需求理解准确
34
-
35
- ## 参数说明
36
-
37
- - `user_input`: 用户原始需求描述
38
- - `current_timestamp`: 当前时间戳
39
- - `project_context`: 项目CLAUDE.md信息
40
- - `document_status`: 文档状态(待确认/已确认)
41
-
42
- ## 使用场景
43
-
44
- - 新需求初次识别阶段
45
- - 现有需求重新澄清和确认
46
- - 多轮需求讨论后的共识固化
@@ -1,48 +0,0 @@
1
- ---
2
- description: 任务拆分阶段指令 - 将技术方案分解为可执行的原子任务
3
- allowed-tools: Read(**), Write(.aico/docs/**/**, *.md)
4
- argument-hint: <需求名称或技术方案路径>
5
- ---
6
-
7
- ## 用法
8
-
9
- `/requirement-split <需求名称>` 或 `/requirement-split <技术方案路径>`
10
-
11
- ## 目标
12
-
13
- 专门处理任务拆分阶段,将技术方案分解为可执行的原子开发任务:
14
-
15
- - 📋 **任务分解**:将技术方案拆分为原子级别的开发任务
16
- - 🔗 **依赖分析**:分析任务间的依赖关系和执行顺序
17
- - ⏱️ **工时估算**:为每个任务提供合理的时间估算
18
- - 🎯 **优先级排序**:根据业务价值和技术依赖确定任务优先级
19
-
20
- ## 执行流程
21
-
22
- 1. **输入验证**:检查技术方案文档存在且状态为 `已确认`
23
- 2. **任务分析**:基于技术方案进行任务分解
24
- 3. **依赖分析**:分析任务间的技术依赖关系
25
- 4. **清单生成**:创建 `.aico/docs/[需求名称]/开发任务清单.md`
26
- 5. **状态设置**:文档状态设置为 `待确认`
27
- 6. **用户确认**:等待用户确认任务拆分方案
28
-
29
- ## 输出要求
30
-
31
- - 必须基于已确认的技术方案进行任务拆分
32
- - 任务清单必须包含:任务描述、技术要点、依赖关系、预估工时
33
- - 支持原子任务定义,每个任务应该独立可执行
34
- - 提供用户确认机制,确保任务拆分合理
35
-
36
- ## 参数说明
37
-
38
- - `consensus_document_path`: 共识文档路径
39
- - `technical_alignment_path`: 技术方案文档路径
40
- - `current_timestamp`: 当前时间戳
41
- - `document_status`: 文档状态(待确认/已确认)
42
-
43
- ## 使用场景
44
-
45
- - 技术方案确认后的开发任务规划
46
- - 复杂需求的模块化拆分
47
- - 多团队协作的任务分配
48
- - 项目进度跟踪和风险管理
@@ -1,48 +0,0 @@
1
- ---
2
- description: 质量验证阶段指令 - 全程质量评估和验证
3
- allowed-tools: Read(**), Write(.aico/docs/**/**, *.md), Bash
4
- argument-hint: <需求名称或任务清单路径>
5
- ---
6
-
7
- ## 用法
8
-
9
- `/requirement-validate <需求名称>` 或 `/requirement-validate <任务清单路径>`
10
-
11
- ## 目标
12
-
13
- 专门处理质量验证阶段,对任务执行结果进行全面的质量评估:
14
-
15
- - ✅ **质量评估**:对开发成果进行全面的质量检查
16
- - 🧪 **测试验证**:执行自动化测试和手动验证
17
- - 📊 **性能分析**:评估代码性能和资源使用情况
18
- - 🔍 **代码审查**:进行代码质量和技术规范审查
19
-
20
- ## 执行流程
21
-
22
- 1. **输入验证**:检查任务执行完成或部分完成
23
- 2. **质量评估**:对代码变更进行质量检查
24
- 3. **测试执行**:运行相关测试用例验证功能
25
- 4. **性能分析**:评估代码性能和资源消耗
26
- 5. **报告生成**:创建 `.aico/docs/[需求名称]/开发任务完成报告.md`
27
- 6. **问题反馈**:识别质量问题并提供修复建议
28
-
29
- ## 输出要求
30
-
31
- - 必须生成完整的质量评估报告
32
- - 报告必须包含:测试结果、代码质量评分、性能指标、问题清单
33
- - 支持增量验证,可对部分完成的任务进行评估
34
- - 提供详细的问题描述和修复建议
35
-
36
- ## 参数说明
37
-
38
- - `task_list_path`: 任务清单文档路径
39
- - `completion_report_path`: 完成报告路径
40
- - `current_timestamp`: 当前时间戳
41
- - `validation_mode`: 验证模式(全面/快速)
42
-
43
- ## 使用场景
44
-
45
- - 任务执行完成后的全面质量验证
46
- - 迭代开发中的阶段性质量检查
47
- - 代码合并前的质量门禁检查
48
- - 生产部署前的最终验证
@@ -1,83 +0,0 @@
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` - 详细使用说明文档