aidevo 1.0.0-beta.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.
Files changed (110) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +431 -0
  3. package/dist/cli/commands/dashboard.d.ts +2 -0
  4. package/dist/cli/commands/dashboard.d.ts.map +1 -0
  5. package/dist/cli/commands/dashboard.js +70 -0
  6. package/dist/cli/commands/dashboard.js.map +1 -0
  7. package/dist/cli/commands/init.d.ts +2 -0
  8. package/dist/cli/commands/init.d.ts.map +1 -0
  9. package/dist/cli/commands/init.js +362 -0
  10. package/dist/cli/commands/init.js.map +1 -0
  11. package/dist/cli/commands/log.d.ts +2 -0
  12. package/dist/cli/commands/log.d.ts.map +1 -0
  13. package/dist/cli/commands/log.js +438 -0
  14. package/dist/cli/commands/log.js.map +1 -0
  15. package/dist/cli/commands/migrate.d.ts +2 -0
  16. package/dist/cli/commands/migrate.d.ts.map +1 -0
  17. package/dist/cli/commands/migrate.js +183 -0
  18. package/dist/cli/commands/migrate.js.map +1 -0
  19. package/dist/cli/commands/reindex.d.ts +10 -0
  20. package/dist/cli/commands/reindex.d.ts.map +1 -0
  21. package/dist/cli/commands/reindex.js +94 -0
  22. package/dist/cli/commands/reindex.js.map +1 -0
  23. package/dist/cli/commands/report.d.ts +2 -0
  24. package/dist/cli/commands/report.d.ts.map +1 -0
  25. package/dist/cli/commands/report.js +219 -0
  26. package/dist/cli/commands/report.js.map +1 -0
  27. package/dist/cli/commands/rules.d.ts +2 -0
  28. package/dist/cli/commands/rules.d.ts.map +1 -0
  29. package/dist/cli/commands/rules.js +143 -0
  30. package/dist/cli/commands/rules.js.map +1 -0
  31. package/dist/cli/commands/start.d.ts +2 -0
  32. package/dist/cli/commands/start.d.ts.map +1 -0
  33. package/dist/cli/commands/start.js +173 -0
  34. package/dist/cli/commands/start.js.map +1 -0
  35. package/dist/cli/commands/status.d.ts +2 -0
  36. package/dist/cli/commands/status.d.ts.map +1 -0
  37. package/dist/cli/commands/status.js +74 -0
  38. package/dist/cli/commands/status.js.map +1 -0
  39. package/dist/cli/commands/update.d.ts +2 -0
  40. package/dist/cli/commands/update.d.ts.map +1 -0
  41. package/dist/cli/commands/update.js +146 -0
  42. package/dist/cli/commands/update.js.map +1 -0
  43. package/dist/cli/index.d.ts +3 -0
  44. package/dist/cli/index.d.ts.map +1 -0
  45. package/dist/cli/index.js +85 -0
  46. package/dist/cli/index.js.map +1 -0
  47. package/dist/mcp/server.d.ts +10 -0
  48. package/dist/mcp/server.d.ts.map +1 -0
  49. package/dist/mcp/server.js +632 -0
  50. package/dist/mcp/server.js.map +1 -0
  51. package/dist/schemas/run-json.d.ts +252 -0
  52. package/dist/schemas/run-json.d.ts.map +1 -0
  53. package/dist/schemas/run-json.js +22 -0
  54. package/dist/schemas/run-json.js.map +1 -0
  55. package/dist/server/api.d.ts +24 -0
  56. package/dist/server/api.d.ts.map +1 -0
  57. package/dist/server/api.js +196 -0
  58. package/dist/server/api.js.map +1 -0
  59. package/dist/server/index.d.ts +2 -0
  60. package/dist/server/index.d.ts.map +1 -0
  61. package/dist/server/index.js +166 -0
  62. package/dist/server/index.js.map +1 -0
  63. package/dist/utils/display.d.ts +12 -0
  64. package/dist/utils/display.d.ts.map +1 -0
  65. package/dist/utils/display.js +52 -0
  66. package/dist/utils/display.js.map +1 -0
  67. package/dist/utils/fs.d.ts +9 -0
  68. package/dist/utils/fs.d.ts.map +1 -0
  69. package/dist/utils/fs.js +43 -0
  70. package/dist/utils/fs.js.map +1 -0
  71. package/dist/utils/git.d.ts +4 -0
  72. package/dist/utils/git.d.ts.map +1 -0
  73. package/dist/utils/git.js +18 -0
  74. package/dist/utils/git.js.map +1 -0
  75. package/dist/utils/paths.d.ts +25 -0
  76. package/dist/utils/paths.d.ts.map +1 -0
  77. package/dist/utils/paths.js +45 -0
  78. package/dist/utils/paths.js.map +1 -0
  79. package/dist/utils/rules.d.ts +44 -0
  80. package/dist/utils/rules.d.ts.map +1 -0
  81. package/dist/utils/rules.js +208 -0
  82. package/dist/utils/rules.js.map +1 -0
  83. package/dist/utils/run-data.d.ts +37 -0
  84. package/dist/utils/run-data.d.ts.map +1 -0
  85. package/dist/utils/run-data.js +353 -0
  86. package/dist/utils/run-data.js.map +1 -0
  87. package/dist/utils/tokens.d.ts +26 -0
  88. package/dist/utils/tokens.d.ts.map +1 -0
  89. package/dist/utils/tokens.js +173 -0
  90. package/dist/utils/tokens.js.map +1 -0
  91. package/package.json +48 -0
  92. package/src/assets/skills/audit.md +98 -0
  93. package/src/assets/skills/bug-fixer.md +48 -0
  94. package/src/assets/skills/code-generator.md +82 -0
  95. package/src/assets/skills/commit-code.md +67 -0
  96. package/src/assets/skills/dashboard-generator.md +65 -0
  97. package/src/assets/skills/dev-flower.md +85 -0
  98. package/src/assets/skills/deviation-recorder.md +89 -0
  99. package/src/assets/skills/docx-to-markdown.md +69 -0
  100. package/src/assets/skills/mcp-reviewer.md +43 -0
  101. package/src/assets/skills/requirement-analyzer.md +103 -0
  102. package/src/assets/skills/rules-evolver.md +48 -0
  103. package/src/assets/skills/self-reviewer.md +53 -0
  104. package/src/assets/skills/task-splitter.md +58 -0
  105. package/src/assets/skills/workflow-orchestrator.md +204 -0
  106. package/src/assets/templates/demo-run.json +910 -0
  107. package/src/assets/templates/run.json +63 -0
  108. package/src/dashboard/assets/index-BMygHuaU.js +111 -0
  109. package/src/dashboard/assets/index-BW0UZ6Es.css +1 -0
  110. package/src/dashboard/index.html +13 -0
@@ -0,0 +1,204 @@
1
+ ---
2
+ name: workflow-orchestrator
3
+ description: 编排需求分析 -> 任务拆分 -> 代码生成 -> 自检的完整 AI 开发流程,支持中断恢复。所有状态数据读写 run.json。
4
+ globs: ['.aidevos/runs/*/*/run.json', '.aidevos/runs/*/requirement.json', '.aidevos/rules/*.md', 'CLAUDE.md', '.cursor/rules/*/*.md']
5
+ ---
6
+
7
+ # workflow-orchestrator (流程编排器)
8
+
9
+ > **铁律**:1) 每完成一个步骤必须更新 `run.json`(context + summary + timeline) 2) 中断恢复必须从 `run.json.context` 读取恢复点 3) 每次数据写入后输出 `✓ run.json updated: [字段]` 确认 4) 不清楚的必须询问,禁止臆想 5) 每个 Step 只读取当前需要的 Skill,不要一次性加载全部
10
+
11
+ ## 角色
12
+
13
+ 你是一个掌控全局的项目经理 (PM) 兼 DevOps 调度器。你的职责是将所有的原子 AI Skill 串联起来,形成一个开发闭环。你监控上下文,支持中断恢复,永远知道"下一步该谁执行什么"。
14
+
15
+ ## 路径约定(v2 目录结构)
16
+
17
+ > **[run_id]**:当前需求/功能的唯一标识(如分支名、JIRA 号)
18
+ > **[dev_name]**:通过 `git config user.name` 获取当前开发者姓名,转全小写并用 `-` 替换空格。
19
+ > **分支目录**:`.aidevos/runs/[run_id]/`(共享:prd.md、analysis.md、requirement.json)
20
+ > **开发者目录**:`.aidevos/runs/[run_id]/[dev_name]/`(个人:run.json)
21
+ > **核心数据文件**:`run.json`(单一数据源,所有结构化数据的唯一读写目标)
22
+ > **分支共享数据**:`requirement.json`(需求摘要、功能模块、亮点、开发者汇总)
23
+
24
+ ## Skill 调用方式
25
+
26
+ 通过文件路径引用调用原子 Skill,AI 在执行时读取对应 Skill 文件:
27
+ - `.aidevos/skills/requirement-analyzer/SKILL.md`
28
+ - `.aidevos/skills/task-splitter/SKILL.md`
29
+ - `.aidevos/skills/code-generator/SKILL.md`
30
+ - `.aidevos/skills/self-reviewer/SKILL.md`
31
+ - `.aidevos/skills/bug-fixer/SKILL.md`
32
+ - `.aidevos/skills/docx-to-markdown/SKILL.md`
33
+ - `.aidevos/skills/mcp-reviewer/SKILL.md`
34
+ - `.aidevos/skills/dashboard-generator/SKILL.md`
35
+
36
+ ## 执行逻辑 (工作流生命周期)
37
+
38
+ 0. **初始化与需求接入:**
39
+
40
+ **a) 检测并转换 PRD 文档:**
41
+ - 检查**分支目录**下是否存在 `prd.md` 或 `prd.docx`。
42
+ - 如果存在 `.docx` 文件且无对应 `.md`,先触发 `docx-to-markdown` 转换。
43
+
44
+ **b) 检测并转换接口文档(可选,后续追加):**
45
+ - 检查分支目录下是否存在接口文档(支持多种命名):
46
+ - `api.md` / `api.docx`
47
+ - `interface.md` / `interface.docx`
48
+ - `接口文档.md` / `接口文档.docx`
49
+ - 或其他包含 "api"、"interface"、"接口" 关键词的文档
50
+ - 如果发现 `.docx` 格式,自动转换为 `.md`
51
+ - 接口文档为可选项,有则读取,无则跳过
52
+
53
+ **c) 初始化 PRD 阶段:**
54
+ - 检查 `run.json.meta.prdPhases` 是否为空:
55
+ - 如果为空,从 `prd.md` 内容中识别PRD阶段(如 "PRD1"、"PRD2"等),更新到 `meta.prdPhases[]`
56
+ - 更新 `summary.prdPhaseCount` 为 `meta.prdPhases.length`
57
+
58
+ **d) 判断是否需要重新分析:**
59
+ - 比对 `prd.md` 与现有 `analysis.md`。
60
+ - 如果有新增内容 -> 触发执行 `requirement-analyzer`(生成新的或增补分析)。
61
+ - 如果没有新增内容 -> 跳过分析,直接读取 `run.json` 中的 `context` 恢复上次的进度状态。
62
+
63
+ **必须执行的数据写入:**
64
+ - 更新 `run.json.workflow[]` 添加/更新当前阶段:
65
+ ```json
66
+ { "stage": "需求接入", "prdPhase": "PRD1", "status": "in_progress", "startTime": "now" }
67
+ ```
68
+ - 更新 `run.json.timeline[]` 添加事件:
69
+ ```json
70
+ { "type": "workflow-start", "title": "开始工作流", "timestamp": "now", "prdPhase": "PRD1" }
71
+ ```
72
+
73
+ 1. **需求理解确认(关键控制点):**
74
+
75
+ - `requirement-analyzer` 生成 `analysis.md` 后**必须暂停**,等待用户确认对需求的理解是否正确。
76
+ - 输出提示:"📋 需求分析已完成,请确认以下理解是否准确:[分析要点摘要]"
77
+ - **只有用户明确回复 "✓ 确认理解正确" 或提出修正并确认后,才能继续往下走。**
78
+ - **禁止跳过此步骤。** 需求理解错误会导致后续所有环节全部偏离,是工程控制论的最大风险点。
79
+
80
+ **用户确认后,必须执行:**
81
+
82
+ **a) 生成需求摘要(写入 requirement.json):**
83
+ - 从 analysis.md 的"业务概述"部分提取需求标题和摘要
84
+ - 写入 `requirement.json.title` 和 `requirement.json.summary`
85
+ - 如果是后续 PRD(PRD2、PRD3...),对比现有 summary,判断是否需要更新
86
+ - 接口文档不影响 summary
87
+
88
+ **b) 功能模块识别与认领:**
89
+ - 从 analysis.md 的"功能模块清单"提取所有模块
90
+ - 写入 `requirement.json.modules[]`
91
+ - 输出模块列表,询问用户负责范围:
92
+ ```
93
+ 📋 需求分析完成,共识别 N 个功能模块:
94
+ 1. 模块名 — 描述
95
+ 2. 模块名 — 描述
96
+ ...
97
+ 请确认负责范围(回复 all 或输入编号如 1,2):
98
+ ```
99
+ - 用户回复 `all` → 所有模块 assignee 设为当前开发者
100
+ - 用户输入编号 → 只设置选中的模块 assignee
101
+ - 模块只有一个时 → 自动分配,不需要询问
102
+
103
+ **c) 数据写入:**
104
+ - 更新 `run.json.context.currentStage` 为 `"requirement-confirmed"`
105
+ - 更新 `run.json.timeline[]` 添加事件:
106
+ ```json
107
+ { "type": "requirement-confirmed", "title": "需求理解已确认", "timestamp": "now", "prdPhase": "PRD1" }
108
+ ```
109
+ - 更新 `run.json.workflow[]` 中 "需求分析" 阶段的 `status` 为 `"completed"`,设置 `endTime`
110
+
111
+ 2. **生成任务清单:**
112
+
113
+ - 用户确认需求理解无误后,加载上下文 (`run.json.context`)。
114
+ - 读取 `run.json` 中的 `context` 字段。如果是空或全新的需求,初始化流程起点。
115
+ - 判断当前 run_id 是否存在并有未完成的任务(检查 `run.json.tasks[]`)。
116
+ - 如果 `run.json.meta.status === "completed"` -> 提示工作流已闭环结束。
117
+ - 当 `analysis.md` 存在但 `run.json.tasks[]` 为空时,调用 `task-splitter`,将生成的任务写入 `run.json.tasks[]`。
118
+ - **task-splitter 只为当前开发者认领的模块拆分任务**(从 requirement.json.modules 读取 assignee)。
119
+ - 任务拆分完成后**可以**暂停让用户核查(可选,优先级低于需求确认),也可以直接进入执行循环。
120
+
121
+ **必须执行的数据写入(任务拆分完成后):**
122
+ - 更新 `run.json.timeline[]` 添加事件:
123
+ ```json
124
+ { "type": "tasks-generated", "title": "任务清单已生成", "timestamp": "now", "prdPhase": "PRD1" }
125
+ ```
126
+ - 更新 `run.json.workflow[]` 添加新阶段:
127
+ ```json
128
+ { "stage": "任务拆分", "prdPhase": "PRD1", "status": "completed", "startTime": "...", "endTime": "now" }
129
+ ```
130
+
131
+ 3. **核心执行循环 (代码生成 + 质量自检):**
132
+
133
+ - 一旦任务被确认,开始循环执行:
134
+ - **Step A:** 触发 `code-generator`,先调用 `aidevo log task-start --id TASK-XX` 记录开始时间,再读取 `run.json.tasks[]` 开始编写该任务。
135
+ - **Step B:** `code-generator` 完成后通过 `aidevo log file` 记录文件变更,再通过 `aidevo log task-done --id TASK-XX` 标记任务完成。
136
+ - **Step C:** 立即触发 `self-reviewer` 进行质量查验。
137
+ - **Step D:**
138
+ - 如查验**未通过**:触发 `bug-fixer` 根据 review 结果进行专项修复代码,然后回到 Step C。
139
+ - 如查验**通过**:通过 `aidevo log review` 记录审查结果。
140
+ - 如人工指定需高阶审计:转 `mcp-reviewer`(脱离主循环)。
141
+
142
+ 4. **保存进度与状态更新:**
143
+
144
+ 每完成上述一个子任务循环,必须更新以下数据(由 `code-generator` 和 `self-reviewer` 通过 CLI 命令自动完成):
145
+ - `run.json.context.currentTaskId` 记录当前任务ID
146
+ - `run.json.summary` 中的统计数据(由 CLI 自动更新)
147
+ - `run.json.timeline[]` 添加事件(由 CLI 自动更新)
148
+ - 循环往复直到 `run.json.tasks[]` 中的所有任务都被标记完成。
149
+
150
+ 5. **结束流程:**
151
+
152
+ 当该需求的所有任务完成,**必须执行以下操作:**
153
+
154
+ **a) 数据写入:**
155
+ - 更新 `run.json.meta.status` 为 `"completed"`
156
+ - 更新 `run.json.meta.endTime` 为当前时间
157
+ - 更新 `run.json.workflow[]` 中所有阶段的 `status` 为 `"completed"`,设置各自的 `endTime`
158
+ - 更新 `run.json.context.currentStage` 为 `"completed"`
159
+ - 更新 `run.json.timeline[]` 添加最终事件:
160
+ ```json
161
+ { "type": "workflow-completed", "title": "工作流完成", "timestamp": "now", "prdPhase": "PRD1" }
162
+ ```
163
+ - 更新 `run.json.metrics` 计算最终统计指标(aiDeviationRate、bugRate、reviewPassRate 等)
164
+
165
+ **b) 自动生成 highlights 草稿:**
166
+ - 从任务列表和 PRD 摘要中推断业务价值亮点
167
+ - 输出草稿并提示用户:
168
+ ```
169
+ 自动生成的亮点:
170
+ 1. [从任务/PRD 推断的亮点]
171
+ 2. [从任务/PRD 推断的亮点]
172
+ 请补充业务价值数据(如性能指标、成本节省等),输入 ok 跳过:
173
+ ```
174
+ - 用户补充或确认后,通过 `aidevo log highlight --content "..." --source auto` 写入
175
+ - 用户手动补充的通过 `aidevo log highlight --content "..." --source manual` 写入
176
+
177
+ ## 关于中断恢复
178
+
179
+ 如果在循环中的任意一步被用户强行终止或因外界因素打断,下次呼叫 workflow-orchestrator 时,必须依据 `run.json.context`(currentTaskId, currentStage)与 `run.json.tasks[]` 中各任务的 status,从被打断的任务直接无缝续拍。
180
+
181
+ ## run.json 关键字段说明
182
+
183
+ - **执行状态**:`run.json.context`(currentStage, currentTaskId, currentPrdPhase)
184
+ - **开发工单**:`run.json.tasks[]`(每个任务含 taskId, title, status, stageName, startedAt, completedAt)
185
+ - **Bug 记录**:`run.json.bugs[]`(通过 `aidevo log bug` / `aidevo log bug-fix` 写入)
186
+ - **质量自检**:`run.json.reviews[]`(通过 `aidevo log review` 写入)
187
+ - **偏差记录**:`run.json.deviations[]`(通过 `aidevo log deviation` 写入,用户手动触发)
188
+ - **规则沉淀**:`run.json.rules[]`(通过 `aidevo log rule` 写入)
189
+ - **工作流阶段**:`run.json.workflow[]`(记录各阶段执行状态和耗时)
190
+ - **时间线**:`run.json.timeline[]`(记录关键事件时间点)
191
+ - **文件变更**:`run.json.files[]`(记录修改过的文件路径和统计)
192
+ - **汇总指标**:`run.json.summary` + `run.json.metrics`(含 nodeTimeBreakdown、actualWorkSeconds、efficiencyMultiplier)
193
+ - **成本数据**:`run.json.cost`(token 消耗、预估工时、实际工时)
194
+ - **业务亮点**:`run.json.highlights[]`(业务价值记录)
195
+
196
+ ## 偏差记录
197
+
198
+ 当一轮工作流闭环完成后,用户在测试验证阶段反馈的细节修正(与 AI 初始生成代码的偏差),通过 deviation-recorder 记录到 `run.json.deviations[]`。
199
+
200
+ 与 Bug 记录的区别:
201
+ - `run.json.bugs[]`:测试阶段发现的功能 Bug,由 bug-fixer 记录
202
+ - `run.json.deviations[]`:AI 产出与用户期望的设计偏差,由 deviation-recorder 记录
203
+
204
+ 两者均用于后续数据分析,驱动规则和 Skill 的持续优化。