speccore 5.70.0 → 5.74.0

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 (153) hide show
  1. package/.agents/skills/spec-ask/SKILL.md +10 -0
  2. package/.agents/skills/speccore-router/SKILL.md +10 -0
  3. package/README.md +51 -15
  4. package/dist/cli.js +20 -2
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/about.d.ts.map +1 -1
  7. package/dist/commands/about.js +11 -3
  8. package/dist/commands/about.js.map +1 -1
  9. package/dist/commands/analyze.d.ts +3 -0
  10. package/dist/commands/analyze.d.ts.map +1 -1
  11. package/dist/commands/analyze.js +135 -31
  12. package/dist/commands/analyze.js.map +1 -1
  13. package/dist/commands/ask.d.ts +1 -1
  14. package/dist/commands/ask.d.ts.map +1 -1
  15. package/dist/commands/ask.js +15 -7
  16. package/dist/commands/ask.js.map +1 -1
  17. package/dist/commands/change.d.ts +5 -0
  18. package/dist/commands/change.d.ts.map +1 -1
  19. package/dist/commands/change.js +616 -27
  20. package/dist/commands/change.js.map +1 -1
  21. package/dist/commands/code-index.d.ts +18 -0
  22. package/dist/commands/code-index.d.ts.map +1 -0
  23. package/dist/commands/code-index.js +126 -0
  24. package/dist/commands/code-index.js.map +1 -0
  25. package/dist/commands/context.js +3 -3
  26. package/dist/commands/context.js.map +1 -1
  27. package/dist/commands/dashboard.d.ts.map +1 -1
  28. package/dist/commands/dashboard.js +12 -41
  29. package/dist/commands/dashboard.js.map +1 -1
  30. package/dist/commands/dev.d.ts +1 -0
  31. package/dist/commands/dev.d.ts.map +1 -1
  32. package/dist/commands/dev.js +137 -20
  33. package/dist/commands/dev.js.map +1 -1
  34. package/dist/commands/diff.js +2 -2
  35. package/dist/commands/diff.js.map +1 -1
  36. package/dist/commands/doc2spec.js +8 -8
  37. package/dist/commands/doc2spec.js.map +1 -1
  38. package/dist/commands/done.js +2 -2
  39. package/dist/commands/done.js.map +1 -1
  40. package/dist/commands/execute.d.ts +2 -0
  41. package/dist/commands/execute.d.ts.map +1 -1
  42. package/dist/commands/execute.js +271 -76
  43. package/dist/commands/execute.js.map +1 -1
  44. package/dist/commands/handover.js +1 -1
  45. package/dist/commands/handover.js.map +1 -1
  46. package/dist/commands/help.js +20 -9
  47. package/dist/commands/help.js.map +1 -1
  48. package/dist/commands/import.js +1 -1
  49. package/dist/commands/import.js.map +1 -1
  50. package/dist/commands/init.d.ts.map +1 -1
  51. package/dist/commands/init.js +105 -19
  52. package/dist/commands/init.js.map +1 -1
  53. package/dist/commands/iteration/create.d.ts.map +1 -1
  54. package/dist/commands/iteration/create.js +101 -4
  55. package/dist/commands/iteration/create.js.map +1 -1
  56. package/dist/commands/iteration/split.d.ts.map +1 -1
  57. package/dist/commands/iteration/split.js +179 -112
  58. package/dist/commands/iteration/split.js.map +1 -1
  59. package/dist/commands/iteration-from-global.js +8 -8
  60. package/dist/commands/iteration-from-global.js.map +1 -1
  61. package/dist/commands/lifecycle.d.ts.map +1 -1
  62. package/dist/commands/lifecycle.js +49 -25
  63. package/dist/commands/lifecycle.js.map +1 -1
  64. package/dist/commands/merge-check.js +1 -1
  65. package/dist/commands/merge-check.js.map +1 -1
  66. package/dist/commands/pattern.js +1 -1
  67. package/dist/commands/pattern.js.map +1 -1
  68. package/dist/commands/plan.d.ts +20 -0
  69. package/dist/commands/plan.d.ts.map +1 -1
  70. package/dist/commands/plan.js +56 -40
  71. package/dist/commands/plan.js.map +1 -1
  72. package/dist/commands/retro.d.ts +9 -0
  73. package/dist/commands/retro.d.ts.map +1 -1
  74. package/dist/commands/retro.js +63 -16
  75. package/dist/commands/retro.js.map +1 -1
  76. package/dist/commands/status-panel.d.ts.map +1 -1
  77. package/dist/commands/status-panel.js +47 -18
  78. package/dist/commands/status-panel.js.map +1 -1
  79. package/dist/commands/sync.js +6 -6
  80. package/dist/commands/sync.js.map +1 -1
  81. package/dist/commands/task/new.js +31 -16
  82. package/dist/commands/task/new.js.map +1 -1
  83. package/dist/commands/trace.js +3 -3
  84. package/dist/commands/trace.js.map +1 -1
  85. package/dist/commands/validate.d.ts.map +1 -1
  86. package/dist/commands/validate.js +25 -1
  87. package/dist/commands/validate.js.map +1 -1
  88. package/dist/commands/verify.d.ts +22 -0
  89. package/dist/commands/verify.d.ts.map +1 -0
  90. package/dist/commands/verify.js +158 -0
  91. package/dist/commands/verify.js.map +1 -0
  92. package/dist/commands/welcome.d.ts.map +1 -1
  93. package/dist/commands/welcome.js +6 -9
  94. package/dist/commands/welcome.js.map +1 -1
  95. package/dist/core/ai-context-generator.js +2 -2
  96. package/dist/core/ai-context-generator.js.map +1 -1
  97. package/dist/core/analyze-engine.d.ts +19 -0
  98. package/dist/core/analyze-engine.d.ts.map +1 -1
  99. package/dist/core/analyze-engine.js +230 -18
  100. package/dist/core/analyze-engine.js.map +1 -1
  101. package/dist/core/ask-engine.d.ts.map +1 -1
  102. package/dist/core/ask-engine.js +101 -11
  103. package/dist/core/ask-engine.js.map +1 -1
  104. package/dist/core/capabilities.js +3 -3
  105. package/dist/core/code-index-markdown.d.ts +7 -0
  106. package/dist/core/code-index-markdown.d.ts.map +1 -0
  107. package/dist/core/code-index-markdown.js +160 -0
  108. package/dist/core/code-index-markdown.js.map +1 -0
  109. package/dist/core/code-scanner.d.ts +58 -3
  110. package/dist/core/code-scanner.d.ts.map +1 -1
  111. package/dist/core/code-scanner.js +406 -24
  112. package/dist/core/code-scanner.js.map +1 -1
  113. package/dist/core/git-integration.d.ts +10 -0
  114. package/dist/core/git-integration.d.ts.map +1 -1
  115. package/dist/core/git-integration.js +99 -2
  116. package/dist/core/git-integration.js.map +1 -1
  117. package/dist/core/inbox.d.ts +120 -0
  118. package/dist/core/inbox.d.ts.map +1 -0
  119. package/dist/core/inbox.js +377 -0
  120. package/dist/core/inbox.js.map +1 -0
  121. package/dist/core/intent-cache.d.ts.map +1 -1
  122. package/dist/core/intent-cache.js +8 -2
  123. package/dist/core/intent-cache.js.map +1 -1
  124. package/dist/core/intent-recognition.d.ts.map +1 -1
  125. package/dist/core/intent-recognition.js +4 -3
  126. package/dist/core/intent-recognition.js.map +1 -1
  127. package/dist/core/name-validator.js +1 -1
  128. package/dist/core/name-validator.js.map +1 -1
  129. package/dist/core/next-steps.js +3 -3
  130. package/dist/core/next-steps.js.map +1 -1
  131. package/dist/core/plan-html.js +3 -3
  132. package/dist/core/prompt-builder.d.ts +7 -0
  133. package/dist/core/prompt-builder.d.ts.map +1 -1
  134. package/dist/core/prompt-builder.js +52 -9
  135. package/dist/core/prompt-builder.js.map +1 -1
  136. package/dist/core/resolver.d.ts +52 -0
  137. package/dist/core/resolver.d.ts.map +1 -0
  138. package/dist/core/resolver.js +257 -0
  139. package/dist/core/resolver.js.map +1 -0
  140. package/dist/core/reverse-sync.js +2 -2
  141. package/dist/core/reverse-sync.js.map +1 -1
  142. package/dist/core/risk-scorer.js +2 -2
  143. package/dist/core/risk-scorer.js.map +1 -1
  144. package/dist/core/state.d.ts.map +1 -1
  145. package/dist/core/state.js +47 -15
  146. package/dist/core/state.js.map +1 -1
  147. package/dist/core/validator.js +9 -9
  148. package/dist/core/validator.js.map +1 -1
  149. package/dist/core/verify-engine.d.ts +64 -0
  150. package/dist/core/verify-engine.d.ts.map +1 -0
  151. package/dist/core/verify-engine.js +560 -0
  152. package/dist/core/verify-engine.js.map +1 -0
  153. package/package.json +1 -1
@@ -6,19 +6,96 @@ exports.analyzeCommand = analyzeCommand;
6
6
  *
7
7
  * 支持:
8
8
  * - 需求分析: --req docs/a.md docs/b.md
9
- * - 代码分析: --src backend/src frontend/src
9
+ * - 代码分析: --src backend/src 20-frontend/src
10
10
  * - 联合分析: --src backend/src --req docs/req.md
11
11
  *
12
12
  * 输出范围:
13
- * - global → .speccore/GLOBAL/ 全局架构/代码健康
14
- * - iteration → Iteration-XX/02-需求文档/ (默认)
15
- * - task → Iteration-XX/Task-NN/ 单任务深化
13
+ * - global → .speccore/GLOBAL/ 全局架构/代码健康
14
+ * - iteration → Iteration-XX/020-specs/ 迭代级基线(默认)
15
+ * - task → Iteration-XX/030-tasks/Task-NN/00-specs/ 任务级独立(不覆盖基线)
16
16
  */
17
17
  const fs_extra_1 = require("fs-extra");
18
18
  const path_1 = require("path");
19
19
  const logger_1 = require("../utils/logger");
20
20
  const context_1 = require("../core/context");
21
+ const analyze_engine_1 = require("../core/analyze-engine");
22
+ const fs_extra_2 = require("fs-extra");
21
23
  async function analyzeCommand(options) {
24
+ // ── --supplement 模式: 追加未覆盖源码到现有报告 ──
25
+ if (options.supplement) {
26
+ const iter = options.iteration || await (0, context_1.getDefaultIteration)();
27
+ if (!iter) {
28
+ logger_1.logger.error('请指定迭代: -I <iteration>');
29
+ return;
30
+ }
31
+ const iterDir = await (0, context_1.getIterationDir)(iter);
32
+ const reportPath = (0, path_1.join)(iterDir, '020-specs', options.output || 'ANALYSIS.md');
33
+ logger_1.logger.info(`🔄 补充分析: ${iter}`);
34
+ const result = await (0, analyze_engine_1.supplementAnalysis)({
35
+ reportPath,
36
+ scope: options.sourceScope,
37
+ maxFiles: options.depth === 'deep' ? 20 : (options.depth === 'quick' ? 5 : 10),
38
+ });
39
+ if (result) {
40
+ if (result.addedFiles.length > 0) {
41
+ logger_1.logger.success(`✅ 补充完成: 新增 ${result.addedFiles.length} 个文件,累计 ${result.totalRead} 个`);
42
+ if (result.remainingUncovered > 0) {
43
+ logger_1.logger.info(` 📌 还有 ${result.remainingUncovered} 个未覆盖,可再次运行 --supplement 继续补充`);
44
+ }
45
+ }
46
+ }
47
+ return;
48
+ }
49
+ // ── --auto 模式: 用分析引擎直接生成报告,不走 AI prompt ──
50
+ if (options.auto) {
51
+ const iter = options.iteration || await (0, context_1.getDefaultIteration)();
52
+ if (!iter) {
53
+ logger_1.logger.error('请指定迭代: -I <iteration>');
54
+ return;
55
+ }
56
+ const iterDir = await (0, context_1.getIterationDir)(iter);
57
+ const reqDir = (0, path_1.join)(iterDir, '010-requirements');
58
+ const specDir = (0, path_1.join)(iterDir, '020-specs');
59
+ await (0, fs_extra_1.ensureDir)(specDir);
60
+ // 收集需求文档
61
+ const requirements = [];
62
+ const reqIndex = (0, path_1.join)(reqDir, 'INDEX.md');
63
+ if (await (0, fs_extra_1.pathExists)(reqIndex))
64
+ requirements.push(reqIndex);
65
+ const convDir = (0, path_1.join)(reqDir, 'converted');
66
+ if (await (0, fs_extra_1.pathExists)(convDir)) {
67
+ try {
68
+ const files = await (0, fs_extra_2.readdir)(convDir);
69
+ for (const f of files.filter((f) => f.endsWith('.md')))
70
+ requirements.push((0, path_1.join)(convDir, f));
71
+ }
72
+ catch { }
73
+ }
74
+ const reqRoot = (0, path_1.join)(reqDir, 'REQUIREMENT.md');
75
+ if (await (0, fs_extra_1.pathExists)(reqRoot))
76
+ requirements.push(reqRoot);
77
+ if (requirements.length === 0) {
78
+ logger_1.logger.warn('未找到需求文档,请先导入: speccore doc2spec');
79
+ return;
80
+ }
81
+ const input = {
82
+ sources: [],
83
+ requirements,
84
+ scope: options.scope || 'iteration',
85
+ iteration: iter,
86
+ depth: options.depth || 'normal',
87
+ readSource: options.noSource ? false : true,
88
+ sourceScope: options.sourceScope,
89
+ };
90
+ logger_1.logger.info(`🤖 Auto 分析: ${iter} (${requirements.length} 个需求文档)`);
91
+ const result = await (0, analyze_engine_1.runAnalysis)(input);
92
+ await (0, fs_extra_1.writeFile)((0, path_1.join)(specDir, 'ANALYSIS.md'), result.report);
93
+ logger_1.logger.success(`✅ 分析报告已生成: 020-specs/ANALYSIS.md`);
94
+ if (result.summary) {
95
+ logger_1.logger.info(` 📊 分析: ${result.summary.filesAnalyzed} 文件, ${result.summary.apisFound} 接口, ${result.summary.issues} 问题, ${result.summary.risks} 风险`);
96
+ }
97
+ return;
98
+ }
22
99
  // ── 非 prompt/apply 模式 → 全部转 AI prompt,不再走代码模板分析 ──
23
100
  if (!options.prompt && !options.apply) {
24
101
  options.prompt = true;
@@ -32,30 +109,41 @@ async function analyzeCommand(options) {
32
109
  return;
33
110
  }
34
111
  // ── Apply 模式 ──
112
+ // 两层解耦:迭代级分析写 020-specs/,任务级分析只写 Task 目录(不覆盖迭代级基线)
35
113
  if (options.apply) {
36
114
  if (!options.iteration) {
37
115
  logger_1.logger.error('--apply 需要 --iteration');
38
116
  return;
39
117
  }
40
118
  const iterDir = await (0, context_1.getIterationDir)(options.iteration);
41
- const specDir = (0, path_1.join)(iterDir, '020-specs');
42
- await (0, fs_extra_1.ensureDir)(specDir);
43
- // 支持 JSON 多文档写入: {"ANALYSIS.md":"...","TECH.md":"..."}
119
+ const isTaskLevel = !!options.task;
120
+ const taskDir = isTaskLevel
121
+ ? (0, path_1.join)(iterDir, '030-tasks', options.task.startsWith('Task-') ? options.task : `Task-${options.task}`)
122
+ : null;
123
+ // 支持 JSON 多文档写入
44
124
  if (options.apply.startsWith('{')) {
45
125
  try {
46
126
  const docs = JSON.parse(options.apply);
47
127
  let count = 0;
48
- for (const [filename, content] of Object.entries(docs)) {
49
- await (0, fs_extra_1.writeFile)((0, path_1.join)(specDir, filename), content);
50
- count++;
128
+ if (isTaskLevel && taskDir) {
129
+ // 任务级:只写 Task/00-specs/,不动 020-specs/(保持迭代级基线不变)
130
+ const taskSpecDir = (0, path_1.join)(taskDir, '00-specs');
131
+ await (0, fs_extra_1.ensureDir)(taskSpecDir);
132
+ for (const [filename, content] of Object.entries(docs)) {
133
+ await (0, fs_extra_1.writeFile)((0, path_1.join)(taskSpecDir, filename), content);
134
+ count++;
135
+ }
136
+ logger_1.logger.success(`✅ ${count} 个 Spec 文档已写入 ${options.task}/00-specs/(任务级,迭代基线不变)`);
51
137
  }
52
- logger_1.logger.success(`✅ ${count} 个 Spec 文档已写入 020-specs/`);
53
- if (options.task) {
54
- const taskDir = (0, path_1.join)(iterDir, '030-tasks', options.task.startsWith('Task-') ? options.task : `Task-${options.task}`);
55
- await (0, fs_extra_1.ensureDir)(taskDir);
138
+ else {
139
+ // 迭代级:写 020-specs/
140
+ const specDir = (0, path_1.join)(iterDir, '020-specs');
141
+ await (0, fs_extra_1.ensureDir)(specDir);
56
142
  for (const [filename, content] of Object.entries(docs)) {
57
- await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, filename), content);
143
+ await (0, fs_extra_1.writeFile)((0, path_1.join)(specDir, filename), content);
144
+ count++;
58
145
  }
146
+ logger_1.logger.success(`✅ ${count} 个 Spec 文档已写入 020-specs/`);
59
147
  }
60
148
  return;
61
149
  }
@@ -63,12 +151,20 @@ async function analyzeCommand(options) {
63
151
  // fallback to single-file mode
64
152
  }
65
153
  }
66
- await (0, fs_extra_1.writeFile)((0, path_1.join)(specDir, 'ANALYSIS.md'), options.apply);
67
- logger_1.logger.success(`✅ ANALYSIS.md 已写入 020-specs/`);
68
- if (options.task) {
69
- const taskDir = (0, path_1.join)(iterDir, '030-tasks', options.task.startsWith('Task-') ? options.task : `Task-${options.task}`);
70
- await (0, fs_extra_1.ensureDir)(taskDir);
71
- await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'ANALYSIS.md'), options.apply);
154
+ // 单文件模式
155
+ if (isTaskLevel && taskDir) {
156
+ // 任务级:只写 Task/00-specs/
157
+ const taskSpecDir = (0, path_1.join)(taskDir, '00-specs');
158
+ await (0, fs_extra_1.ensureDir)(taskSpecDir);
159
+ await (0, fs_extra_1.writeFile)((0, path_1.join)(taskSpecDir, 'ANALYSIS.md'), options.apply);
160
+ logger_1.logger.success(`✅ ANALYSIS.md 已写入 ${options.task}/00-specs/(任务级,迭代基线不变)`);
161
+ }
162
+ else {
163
+ // 迭代级:写 020-specs/
164
+ const specDir = (0, path_1.join)(iterDir, '020-specs');
165
+ await (0, fs_extra_1.ensureDir)(specDir);
166
+ await (0, fs_extra_1.writeFile)((0, path_1.join)(specDir, 'ANALYSIS.md'), options.apply);
167
+ logger_1.logger.success(`✅ ANALYSIS.md 已写入 020-specs/`);
72
168
  }
73
169
  return;
74
170
  }
@@ -157,12 +253,12 @@ async function enrichTaskDocs(iteration, taskId, reqFiles) {
157
253
  return;
158
254
  }
159
255
  const fullTaskDir = (0, path_1.join)(iterDir, taskEntry.name);
160
- const backendDir = (0, path_1.join)(fullTaskDir, 'backend');
161
- if (!(await (0, fs_extra_1.pathExists)(backendDir)))
256
+ const specsDir = (0, path_1.join)(fullTaskDir, '00-specs');
257
+ if (!(await (0, fs_extra_1.pathExists)(specsDir)))
162
258
  return;
163
259
  let reqContent = '';
164
260
  // 读取任务 REQ 或传入的需求文件
165
- const taskReqPath = (0, path_1.join)(backendDir, 'REQ.md');
261
+ const taskReqPath = (0, path_1.join)(specsDir, 'REQ.md');
166
262
  if (await (0, fs_extra_1.pathExists)(taskReqPath)) {
167
263
  reqContent = await require('fs-extra').readFile(taskReqPath, 'utf-8');
168
264
  }
@@ -175,7 +271,7 @@ async function enrichTaskDocs(iteration, taskId, reqFiles) {
175
271
  if (!reqContent)
176
272
  return;
177
273
  // 补全 TECH.md
178
- const techPath = (0, path_1.join)(backendDir, 'TECH.md');
274
+ const techPath = (0, path_1.join)(specsDir, 'TECH.md');
179
275
  let techContent = '';
180
276
  if (await (0, fs_extra_1.pathExists)(techPath)) {
181
277
  techContent = await require('fs-extra').readFile(techPath, 'utf-8');
@@ -199,7 +295,7 @@ async function enrichTaskDocs(iteration, taskId, reqFiles) {
199
295
  }
200
296
  }
201
297
  // 补全 TEST.md
202
- const testPath = (0, path_1.join)(backendDir, 'TEST.md');
298
+ const testPath = (0, path_1.join)(fullTaskDir, '99-artifacts', 'TEST.md');
203
299
  if (await (0, fs_extra_1.pathExists)(testPath)) {
204
300
  let testContent = await require('fs-extra').readFile(testPath, 'utf-8');
205
301
  if (!testContent.includes('## 补充分析')) {
@@ -220,7 +316,7 @@ async function enrichTaskDocs(iteration, taskId, reqFiles) {
220
316
  }
221
317
  }
222
318
  // 补全 REVIEW.md
223
- const reviewPath = (0, path_1.join)(backendDir, 'REVIEW.md');
319
+ const reviewPath = (0, path_1.join)(fullTaskDir, '99-artifacts', 'REVIEW.md');
224
320
  if (await (0, fs_extra_1.pathExists)(reviewPath)) {
225
321
  let reviewContent = await require('fs-extra').readFile(reviewPath, 'utf-8');
226
322
  if (!reviewContent.includes('## 本任务专项检查')) {
@@ -245,10 +341,10 @@ async function enrichTaskDocs(iteration, taskId, reqFiles) {
245
341
  ['MONITOR.md', `# 监控\n\n## 关键指标\n| 指标 | 阈值 | 级别 |\n| :--- | :--- | :--- |\n| 成功率 | <99.9% | P1 |\n| P99延迟 | >1000ms | P2 |\n`],
246
342
  ];
247
343
  for (const [filename, content] of templates) {
248
- const fp = (0, path_1.join)(backendDir, filename);
344
+ const fp = (0, path_1.join)(fullTaskDir, '99-artifacts', filename);
249
345
  if (!(await (0, fs_extra_1.pathExists)(fp))) {
250
346
  await (0, fs_extra_1.writeFile)(fp, content);
251
- logger_1.logger.info(` 📄 创建 ${filename}`);
347
+ logger_1.logger.info(` 📄 创建 99-artifacts/${filename}`);
252
348
  }
253
349
  }
254
350
  }
@@ -464,6 +560,8 @@ async function buildMultiDocPrompt(command, ctx) {
464
560
  prompt += `- 当前是**任务级分析**,类型为 \`${taskType}\`,只需产出 ${taskDocs.length} 个文档:${taskDocs.map(([n]) => n).join('、')}\n`;
465
561
  prompt += `- bugfix: 聚焦根因分析和修复验证;research: 聚焦技术调研;review: 聚焦代码审查\n`;
466
562
  prompt += `- feature/refactor: 全量分析(功能、接口、数据、规则)\n`;
563
+ prompt += `- **双层解耦**:先读 \`020-specs/\` 了解迭代级基线,再读 \`00-specs/REQ.md\` 了解本任务已有的需求切片\n`;
564
+ prompt += `- 分析结果写入 \`00-specs/\`(任务独立),**不覆盖** \`020-specs/\`(迭代基线)\n`;
467
565
  }
468
566
  else {
469
567
  prompt += `- 当前是**迭代级分析**,需产出全部 7 个文档,覆盖需求→技术→测试→评审→风险→依赖→监控\n`;
@@ -477,10 +575,16 @@ async function buildMultiDocPrompt(command, ctx) {
477
575
  const tpl = templateMap[doc[0]] || '';
478
576
  prompt += ` - ${doc[0]} → 参考 ${tpl}\n`;
479
577
  }
480
- prompt += `2. Read 010-requirements/ 和 PRD/PRD.md 等所有需求文档\n`;
578
+ prompt += `2. 读取需求文档(按优先级顺序):\n`;
579
+ prompt += ` a. 先读 010-requirements/INDEX.md — 了解需求全貌和文件清单\n`;
580
+ prompt += ` b. 再读 010-requirements/converted/*.md — doc2spec 转换后的核心规格(主要依据)\n`;
581
+ prompt += ` c. 再读 010-requirements/features/*/README.md — 功能级补充需求\n`;
582
+ prompt += ` d. 参考 010-requirements/assets/prototypes/ 和 designs/ — 原型和设计稿\n`;
583
+ prompt += ` e. 如用户指定了特定文档,优先读取指定文件;如要求全部,再读 sources/ 原始文档\n`;
481
584
  prompt += `3. 读懂需求文档后,按专业模板标准自由撰写每个文档(不是填空表)\n`;
482
585
  prompt += `4. 每个文档都要具体内容(禁止"待填充"),分析完成后支持交互编辑任意文档的任意章节\n`;
483
- prompt += `4. 写入: speccore analyze --apply '{"${taskDocs.map(([n]) => `${n}":"..."`).join(',')}...}' -I ${iter}\n\n`;
586
+ const taskFlag = isTask && ctx.task ? ` --task ${ctx.task}` : '';
587
+ prompt += `5. 写入: speccore analyze --apply '{"${taskDocs.map(([n]) => `${n}:"..."`).join(',')}...}' -I ${iter}${taskFlag}\n\n`;
484
588
  for (let i = 0; i < taskDocs.length; i++) {
485
589
  prompt += `### ${i + 1}/${taskDocs.length}: ${taskDocs[i][0]}\n\`\`\`markdown\n${taskDocs[i][1]}\n\`\`\`\n\n`;
486
590
  }
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,5 @@
4
4
  * 终端输出使用 Unicode 框线 + 颜色码,呈现视觉化预览
5
5
  */
6
6
  export declare function askCommand(input: string, _options: any): Promise<void>;
7
- export declare const SVG_ONBOARD = "<svg viewBox=\"0 0 680 540\" xmlns=\"http://www.w3.org/2000/svg\"><text x=\"340\" y=\"28\" text-anchor=\"middle\" fill=\"#0ea5e9\" font-size=\"16\" font-weight=\"bold\" font-family=\"monospace\">ask \u2014 SpecCore \u4E07\u80FDAI\u5165\u53E3</text><text x=\"340\" y=\"44\" text-anchor=\"middle\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\u4E00\u4E2A\u547D\u4EE4\u89E3\u51B3\u6240\u6709\u95EE\u9898\uFF1A\u89E3\u91CA / \u6307\u5F15 / \u5339\u914D / \u7F16\u6392</text><line x1=\"319\" y1=\"260\" x2=\"230\" y2=\"220\" stroke=\"#14b8a6\" stroke-width=\"1.5\"/><line x1=\"361\" y1=\"260\" x2=\"450\" y2=\"220\" stroke=\"#f97316\" stroke-width=\"1.5\"/><line x1=\"319\" y1=\"280\" x2=\"230\" y2=\"320\" stroke=\"#0ea5e9\" stroke-width=\"1.5\"/><line x1=\"361\" y1=\"280\" x2=\"450\" y2=\"320\" stroke=\"#a78bfa\" stroke-width=\"1.5\"/><rect x=\"40\" y=\"110\" width=\"285\" height=\"110\" rx=\"8\" fill=\"#0d1f38\" stroke=\"#14b8a6\" stroke-width=\"1\"/><text x=\"56\" y=\"132\" fill=\"#14b8a6\" font-size=\"13\" font-family=\"monospace\" font-weight=\"bold\">\u6A21\u5F0F1: \u547D\u4EE4\u89E3\u91CA</text><text x=\"56\" y=\"152\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\"\u89E3\u91CA\u4E0B dashboard \u547D\u4EE4\"</text><text x=\"56\" y=\"170\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\"init \u6709\u54EA\u4E9B\u53C2\u6570\uFF1F\"</text><text x=\"56\" y=\"188\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\u663E\u793A\u547D\u4EE4\u8BE6\u60C5 + \u793A\u4F8B + \u5173\u8054\u547D\u4EE4</text><rect x=\"160\" y=\"200\" width=\"120\" height=\"16\" rx=\"8\" fill=\"#14b8a6\" opacity=\"0.15\"/><text x=\"220\" y=\"212\" text-anchor=\"middle\" fill=\"#14b8a6\" font-size=\"9\" font-family=\"monospace\">\u77E5\u8BC6\u5E93\u5339\u914D</text><rect x=\"355\" y=\"110\" width=\"285\" height=\"110\" rx=\"8\" fill=\"#0d1f38\" stroke=\"#f97316\" stroke-width=\"1\"/><text x=\"371\" y=\"132\" fill=\"#f97316\" font-size=\"13\" font-family=\"monospace\" font-weight=\"bold\">\u6A21\u5F0F2: \u4EFB\u52A1\u6307\u5F15</text><text x=\"371\" y=\"152\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\"\u6211\u60F3\u505A\u4E00\u4E2A\u767B\u5F55\u529F\u80FD\"</text><text x=\"371\" y=\"170\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\"\u600E\u4E48\u5F00\u59CB\u4E00\u4E2A\u65B0\u9879\u76EE\uFF1F\"</text><text x=\"371\" y=\"188\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\u5C55\u793A\u5B8C\u6574\u64CD\u4F5C\u6B65\u9AA4\u6D41\u6C34\u7EBF</text><rect x=\"480\" y=\"200\" width=\"120\" height=\"16\" rx=\"8\" fill=\"#f97316\" opacity=\"0.15\"/><text x=\"540\" y=\"212\" text-anchor=\"middle\" fill=\"#f97316\" font-size=\"9\" font-family=\"monospace\">\u5DE5\u4F5C\u6D41\u751F\u6210</text><rect x=\"40\" y=\"320\" width=\"285\" height=\"110\" rx=\"8\" fill=\"#0d1f38\" stroke=\"#0ea5e9\" stroke-width=\"1\"/><text x=\"56\" y=\"342\" fill=\"#0ea5e9\" font-size=\"13\" font-family=\"monospace\" font-weight=\"bold\">\u6A21\u5F0F3: \u610F\u56FE\u5339\u914D</text><text x=\"56\" y=\"362\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\"\u67E5\u770B\u9879\u76EE\u8FDB\u5EA6\" \u2192 dashboard</text><text x=\"56\" y=\"380\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\"\u5E2E\u6211\u5BA1\u67E5\u4EE3\u7801\" \u2192 validate</text><text x=\"56\" y=\"398\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\u76F4\u63A5\u5339\u914D\u547D\u4EE4</text><rect x=\"160\" y=\"410\" width=\"120\" height=\"16\" rx=\"8\" fill=\"#0ea5e9\" opacity=\"0.15\"/><text x=\"220\" y=\"422\" text-anchor=\"middle\" fill=\"#0ea5e9\" font-size=\"9\" font-family=\"monospace\">38\u610F\u56FE+AI</text><rect x=\"355\" y=\"320\" width=\"285\" height=\"110\" rx=\"8\" fill=\"#0d1f38\" stroke=\"#a78bfa\" stroke-width=\"1\"/><text x=\"371\" y=\"342\" fill=\"#a78bfa\" font-size=\"13\" font-family=\"monospace\" font-weight=\"bold\">\u6A21\u5F0F4: \u590D\u6742\u7F16\u6392</text><text x=\"371\" y=\"362\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\"\u8BA1\u5212\u6240\u6709\u4EFB\u52A1\u665A8\u70B9\u5206\u6279\"</text><text x=\"371\" y=\"380\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\"\u505A\u5B8C\u5206\u6790\u62C6\u5206\u6267\u884CPR\"</text><text x=\"371\" y=\"398\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">LLM\u5206\u89E3\u9884\u89C8\u786E\u8BA4\u6267\u884C</text><rect x=\"480\" y=\"410\" width=\"120\" height=\"16\" rx=\"8\" fill=\"#a78bfa\" opacity=\"0.15\"/><text x=\"540\" y=\"422\" text-anchor=\"middle\" fill=\"#a78bfa\" font-size=\"9\" font-family=\"monospace\">Pipeline\u5F15\u64CE</text><circle cx=\"340\" cy=\"270\" r=\"28\" fill=\"#0d1f38\" stroke=\"#0ea5e9\" stroke-width=\"2\"/><text x=\"340\" y=\"276\" text-anchor=\"middle\" fill=\"#0ea5e9\" font-size=\"16\" font-family=\"monospace\" font-weight=\"bold\">ask</text><rect x=\"100\" y=\"468\" width=\"480\" height=\"50\" rx=\"10\" fill=\"#0ea5e9\" opacity=\"0.12\" stroke=\"#0ea5e9\" stroke-width=\"1\"/><text x=\"340\" y=\"490\" text-anchor=\"middle\" fill=\"#bae6fd\" font-size=\"11\" font-family=\"monospace\">\u7EDF\u4E00\u5165\u53E3: speccore ask \"\u4EFB\u610F\u81EA\u7136\u8BED\u8A00\"</text><text x=\"340\" y=\"508\" text-anchor=\"middle\" fill=\"#5b7fa5\" font-size=\"9\" font-family=\"monospace\">AI \u81EA\u52A8\u5224\u65AD\u6A21\u5F0F \u2192 \u6267\u884C\u5339\u914D\u903B\u8F91 \u2192 \u5C55\u793A\u7ED3\u679C \u2192 \u7528\u6237\u786E\u8BA4</text></svg>";
7
+ export declare const SVG_ONBOARD = "<svg viewBox=\"0 0 680 400\" xmlns=\"http://www.w3.org/2000/svg\"><style>.mode-rect{transition:all .3s;cursor:pointer}.mode-rect:hover{filter:brightness(1.4) drop-shadow(0 0 12px currentColor)}.ask-circle{cursor:pointer;transition:all .3s}.ask-circle:hover{filter:drop-shadow(0 0 20px rgba(14,165,233,.7))}</style><line x1=\"319\" y1=\"218\" x2=\"230\" y2=\"178\" stroke=\"#14b8a6\" stroke-width=\"1.5\"/><line x1=\"361\" y1=\"218\" x2=\"450\" y2=\"178\" stroke=\"#f97316\" stroke-width=\"1.5\"/><line x1=\"319\" y1=\"238\" x2=\"230\" y2=\"278\" stroke=\"#0ea5e9\" stroke-width=\"1.5\"/><line x1=\"361\" y1=\"238\" x2=\"450\" y2=\"278\" stroke=\"#a78bfa\" stroke-width=\"1.5\"/><rect class=\"mode-rect\" x=\"40\" y=\"68\" width=\"285\" height=\"110\" rx=\"8\" fill=\"#0d1f38\" stroke=\"#14b8a6\" stroke-width=\"1\" onclick=\"window.location.href='speccore-ask-explain.html'\"/><text x=\"56\" y=\"90\" fill=\"#14b8a6\" font-size=\"13\" font-family=\"monospace\" font-weight=\"bold\">\u6A21\u5F0F1: \u547D\u4EE4\u89E3\u91CA</text><text x=\"56\" y=\"110\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\u89E3\u91CA\u4E0B dashboard \u547D\u4EE4</text><text x=\"56\" y=\"128\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">init \u6709\u54EA\u4E9B\u53C2\u6570\uFF1F</text><text x=\"56\" y=\"146\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\u663E\u793A\u547D\u4EE4\u8BE6\u60C5 + \u793A\u4F8B + \u5173\u8054\u547D\u4EE4</text><rect x=\"160\" y=\"158\" width=\"120\" height=\"16\" rx=\"8\" fill=\"#14b8a6\" opacity=\"0.15\"/><text x=\"220\" y=\"170\" text-anchor=\"middle\" fill=\"#14b8a6\" font-size=\"9\" font-family=\"monospace\">\u77E5\u8BC6\u5E93\u5339\u914D</text><rect class=\"mode-rect\" x=\"355\" y=\"68\" width=\"285\" height=\"110\" rx=\"8\" fill=\"#0d1f38\" stroke=\"#f97316\" stroke-width=\"1\" onclick=\"window.location.href='speccore-ask-guide.html'\"/><text x=\"371\" y=\"90\" fill=\"#f97316\" font-size=\"13\" font-family=\"monospace\" font-weight=\"bold\">\u6A21\u5F0F2: \u4EFB\u52A1\u6307\u5F15</text><text x=\"371\" y=\"110\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\u6211\u60F3\u505A\u4E00\u4E2A\u767B\u5F55\u529F\u80FD</text><text x=\"371\" y=\"128\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\u600E\u4E48\u5F00\u59CB\u4E00\u4E2A\u65B0\u9879\u76EE\uFF1F</text><text x=\"371\" y=\"146\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\u5C55\u793A\u5B8C\u6574\u64CD\u4F5C\u6B65\u9AA4\u6D41\u6C34\u7EBF</text><rect x=\"480\" y=\"158\" width=\"120\" height=\"16\" rx=\"8\" fill=\"#f97316\" opacity=\"0.15\"/><text x=\"540\" y=\"170\" text-anchor=\"middle\" fill=\"#f97316\" font-size=\"9\" font-family=\"monospace\">\u5DE5\u4F5C\u6D41\u751F\u6210</text><rect class=\"mode-rect\" x=\"40\" y=\"278\" width=\"285\" height=\"110\" rx=\"8\" fill=\"#0d1f38\" stroke=\"#0ea5e9\" stroke-width=\"1\" onclick=\"window.location.href='speccore-ask-match.html'\"/><text x=\"56\" y=\"300\" fill=\"#0ea5e9\" font-size=\"13\" font-family=\"monospace\" font-weight=\"bold\">\u6A21\u5F0F3: \u610F\u56FE\u5339\u914D</text><text x=\"56\" y=\"320\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\u67E5\u770B\u9879\u76EE\u8FDB\u5EA6 \u2192 dashboard</text><text x=\"56\" y=\"338\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\u5E2E\u6211\u5BA1\u67E5\u4EE3\u7801 \u2192 validate</text><text x=\"56\" y=\"356\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\u76F4\u63A5\u5339\u914D\u547D\u4EE4</text><rect x=\"160\" y=\"368\" width=\"120\" height=\"16\" rx=\"8\" fill=\"#0ea5e9\" opacity=\"0.15\"/><text x=\"220\" y=\"378\" text-anchor=\"middle\" fill=\"#0ea5e9\" font-size=\"9\" font-family=\"monospace\">38\u610F\u56FE+AI</text><rect class=\"mode-rect\" x=\"355\" y=\"278\" width=\"285\" height=\"110\" rx=\"8\" fill=\"#0d1f38\" stroke=\"#a78bfa\" stroke-width=\"1\" onclick=\"window.location.href='speccore-ask-pipeline.html'\"/><text x=\"371\" y=\"300\" fill=\"#a78bfa\" font-size=\"13\" font-family=\"monospace\" font-weight=\"bold\">\u6A21\u5F0F4: \u590D\u6742\u7F16\u6392</text><text x=\"371\" y=\"320\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\u8BA1\u5212\u6240\u6709\u4EFB\u52A1\u665A8\u70B9\u5206\u6279</text><text x=\"371\" y=\"338\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">\u505A\u5B8C\u5206\u6790\u62C6\u5206\u6267\u884CPR</text><text x=\"371\" y=\"356\" fill=\"#5b7fa5\" font-size=\"10\" font-family=\"monospace\">LLM\u5206\u89E3\u9884\u89C8\u786E\u8BA4\u6267\u884C</text><rect x=\"480\" y=\"368\" width=\"120\" height=\"16\" rx=\"8\" fill=\"#a78bfa\" opacity=\"0.15\"/><text x=\"540\" y=\"378\" text-anchor=\"middle\" fill=\"#a78bfa\" font-size=\"9\" font-family=\"monospace\">Pipeline\u5F15\u64CE</text><circle class=\"ask-circle\" cx=\"340\" cy=\"228\" r=\"28\" fill=\"#0d1f38\" stroke=\"#0ea5e9\" stroke-width=\"2\"/><text x=\"340\" y=\"234\" text-anchor=\"middle\" fill=\"#0ea5e9\" font-size=\"16\" font-family=\"monospace\" font-weight=\"bold\">ask</text></svg>";
8
8
  //# sourceMappingURL=ask.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../../src/commands/ask.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiKH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CA4J5E;AA0ED,eAAO,MAAM,WAAW,w4KAA08H,CAAC"}
1
+ {"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../../src/commands/ask.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiKH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAmK5E;AA0ED,eAAO,MAAM,WAAW,47JAAu2H,CAAC"}
@@ -189,7 +189,7 @@ async function askCommand(input, _options) {
189
189
  return;
190
190
  }
191
191
  // ── 🎉 升级仪式:首次使用 / 版本升级时展示引导页 ──
192
- const { pathExists, readFile, writeFile, ensureDir } = await Promise.resolve().then(() => __importStar(require('fs-extra')));
192
+ const { pathExists, readFile, writeFile, ensureDir, copy } = await Promise.resolve().then(() => __importStar(require('fs-extra')));
193
193
  const { join } = await Promise.resolve().then(() => __importStar(require('path')));
194
194
  const markerDir = join(process.cwd(), '.speccore', 'local');
195
195
  const markerFile = join(markerDir, '.ask-onboarded');
@@ -203,8 +203,16 @@ async function askCommand(input, _options) {
203
203
  }
204
204
  if (lastVersion !== ver) {
205
205
  const html = renderOnboardingHtml();
206
- const outPath = join(process.cwd(), 'speccore-ask-onboarding.html');
206
+ const outPath = join(process.cwd(), 'outputs', 'speccore-ask-onboarding.html');
207
+ await ensureDir(join(process.cwd(), 'outputs'));
207
208
  await writeFile(outPath, html);
209
+ // 复制关联模板页面到 outputs/
210
+ const tplDir = join(process.cwd(), 'templates', 'html');
211
+ for (const f of ['speccore-ask-explain.html', 'speccore-ask-guide.html', 'speccore-ask-match.html', 'speccore-ask-pipeline.html', 'speccore-help.html']) {
212
+ const src = join(tplDir, f);
213
+ if (await pathExists(src))
214
+ await copy(src, join(process.cwd(), 'outputs', f));
215
+ }
208
216
  await writeFile(markerFile, ver);
209
217
  // 输出 SPECCORE_ONBOARD 标记让 AI 展示引导页
210
218
  process.stdout.write(`[SPECCORE_ONBOARD: ${outPath}]\n`);
@@ -349,7 +357,7 @@ async function askHtml(input) {
349
357
  const html = renderAskHtml(result, input);
350
358
  const path = require('path');
351
359
  const fs = require('fs');
352
- const file = path.join(process.cwd(), 'speccore-ask-result.html');
360
+ const file = path.join(process.cwd(), 'outputs', 'speccore-ask-result.html');
353
361
  if (!!process.env.WORKBUDDY_SESSION) {
354
362
  process.stdout.write(html);
355
363
  }
@@ -399,7 +407,7 @@ function renderPipelineHtml(result, input) {
399
407
  }
400
408
  function buildPage(title, body, input, accent) {
401
409
  const ver = require('../../package.json').version;
402
- return `<!DOCTYPE html><html lang="zh-CN" data-theme="ocean"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>SpecCore · ${input.slice(0, 20)}</title><style>@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@500;700;900&family=JetBrains+Mono:wght@400;600;700&display=swap');[data-theme="ocean"]{--cyan:#0ea5e9;--bg:#0b1929;--card:rgba(13,31,56,.95);--border:rgba(14,165,233,.15);--text:#bae6fd;--muted:#5b7fa5;--green:#14b8a6;--orange:#f97316;--purple:#6366f1}*{margin:0;padding:0;box-sizing:border-box}body{font-family:'JetBrains Mono',monospace;background:var(--bg);color:var(--text);min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px 20px}.scanlines{position:fixed;inset:0;pointer-events:none;z-index:99;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,240,255,.01) 2px,rgba(0,240,255,.01) 4px)}.card{max-width:680px;width:100%;margin:0 auto;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:36px;position:relative;overflow:hidden}.card::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);animation:scanX 3s linear infinite}.card::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);animation:scanX-rev 3s linear infinite}@keyframes scanX{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}@keyframes scanX-rev{0%{transform:translateX(100%)}100%{transform:translateX(-100%)}}@keyframes scanY{0%{transform:translateY(-100%)}100%{transform:translateY(100%)}}@keyframes scanY-rev{0%{transform:translateY(100%)}100%{transform:translateY(-100%)}}.vline{position:absolute;top:0;width:1px;bottom:0;pointer-events:none}.vline.l{left:0;background:linear-gradient(180deg,transparent,var(--cyan),transparent);animation:scanY-rev 3s linear infinite}.vline.r{right:0;background:linear-gradient(180deg,transparent,var(--cyan),transparent);animation:scanY 3s linear infinite}h1{font-family:'Orbitron',sans-serif;font-size:24px;font-weight:900;background:linear-gradient(135deg,var(--cyan),var(--purple));-webkit-background-clip:text;-webkit-text-fill-color:transparent;letter-spacing:2px}.query{color:var(--muted);font-size:12px;margin:8px 0 16px}.badge{display:inline-block;padding:4px 14px;border-radius:20px;font-size:11px;font-weight:600;background:${accent}22;color:${accent};border:1px solid ${accent}44;margin-bottom:20px}code{background:rgba(14,165,233,.1);padding:2px 8px;border-radius:4px;color:var(--cyan);font-size:12px;display:inline-block;margin:4px 4px 4px 0}.tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:10px;background:rgba(20,184,166,.1);color:var(--green);margin:2px}
410
+ return `<!DOCTYPE html><html lang="zh-CN" data-theme="ocean"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>SpecCore · ${input.slice(0, 20)}</title><style>@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@500;700;900&family=JetBrains+Mono:wght@400;600;700&display=swap');[data-theme="ocean"]{--cyan:#0ea5e9;--bg:#0b1929;--card:rgba(13,31,56,.95);--border:rgba(14,165,233,.15);--text:#bae6fd;--muted:#5b7fa5;--green:#14b8a6;--orange:#f97316;--purple:#6366f1}*{margin:0;padding:0;box-sizing:border-box}body{font-family:'JetBrains Mono',monospace;background:var(--bg);color:var(--text);min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px 20px}.scanlines{position:fixed;inset:0;pointer-events:none;z-index:99;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,240,255,.01) 2px,rgba(0,240,255,.01) 4px)}.card{max-width:800px;width:100%;margin:0 auto;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:24px;position:relative;overflow:hidden}.card::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);animation:scanX 3s linear infinite}.card::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);animation:scanX-rev 3s linear infinite}@keyframes scanX{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}@keyframes scanX-rev{0%{transform:translateX(100%)}100%{transform:translateX(-100%)}}@keyframes scanY{0%{transform:translateY(-100%)}100%{transform:translateY(100%)}}@keyframes scanY-rev{0%{transform:translateY(100%)}100%{transform:translateY(-100%)}}.vline{position:absolute;top:0;width:1px;bottom:0;pointer-events:none}.vline.l{left:0;background:linear-gradient(180deg,transparent,var(--cyan),transparent);animation:scanY-rev 3s linear infinite}.vline.r{right:0;background:linear-gradient(180deg,transparent,var(--cyan),transparent);animation:scanY 3s linear infinite}h1{font-family:'Orbitron',sans-serif;font-size:24px;font-weight:900;background:linear-gradient(135deg,var(--cyan),var(--purple));-webkit-background-clip:text;-webkit-text-fill-color:transparent;letter-spacing:2px;animation:titleGlow 3s ease-in-out infinite}@keyframes titleGlow{0%,100%{filter:drop-shadow(0 0 20px rgba(14,165,233,.4)) drop-shadow(0 0 60px rgba(14,165,233,.15))}50%{filter:drop-shadow(0 0 30px rgba(14,165,233,.7)) drop-shadow(0 0 80px rgba(14,165,233,.3))}}@keyframes cardGlow{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.6)}}.card-bg{position:absolute;inset:0;pointer-events:none;z-index:0;background:radial-gradient(ellipse at 50% 10%,rgba(14,165,233,.25) 0%,transparent 70%);animation:cardGlow 3s ease-in-out infinite;transform-origin:top center}.grid-pattern{position:fixed;inset:0;pointer-events:none;z-index:0;background-image:linear-gradient(rgba(14,165,233,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(14,165,233,.03) 1px,transparent 1px);background-size:60px 60px}.query{color:var(--muted);font-size:12px;margin:8px 0 16px}.badge{display:inline-block;padding:4px 14px;border-radius:20px;font-size:11px;font-weight:600;background:${accent}22;color:${accent};border:1px solid ${accent}44;margin-bottom:20px}code{background:rgba(14,165,233,.1);padding:2px 8px;border-radius:4px;color:var(--cyan);font-size:12px;display:inline-block;margin:4px 4px 4px 0}.tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:10px;background:rgba(20,184,166,.1);color:var(--green);margin:2px}
403
411
  /* Explain */
404
412
  .explain-box{padding:10px 0}.explain-desc{font-size:13px;margin-bottom:16px}.explain-usage,.explain-examples,.explain-related{margin:10px 0}.label{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin-right:8px}
405
413
  /* Guide */
@@ -408,11 +416,11 @@ function buildPage(title, body, input, accent) {
408
416
  .match-result{padding:10px 0}.match-summary{font-weight:600;font-size:14px;margin-bottom:12px}.match-detail{color:var(--muted);font-size:12px;line-height:1.6}
409
417
  /* Pipeline */
410
418
  .pipeline-title{font-weight:600;margin-bottom:16px}.pipeline-steps{display:flex;flex-direction:column;gap:10px}.pipe-step{display:flex;gap:14px;padding:12px 14px;background:rgba(99,102,241,.04);border-left:2px solid var(--purple);border-radius:0 8px 8px 0}.pipe-step .pipe-num{font-family:Orbitron;font-size:20px;font-weight:900;color:var(--purple);min-width:36px}.pipe-step .pipe-cmd{font-weight:600;color:var(--green)}.pipe-step .pipe-args{color:var(--muted);font-size:11px}.pipe-step .pipe-desc{color:var(--muted);font-size:10px;margin-top:4px}.pipe-step .pipe-dep{font-size:9px;color:var(--orange);margin-top:4px}.confirm-bar{text-align:center;padding:14px;margin-top:16px;background:rgba(99,102,241,.08);border:1px dashed rgba(99,102,241,.2);border-radius:8px;color:var(--purple);font-size:12px}
411
- .footer{text-align:center;color:var(--muted);font-size:10px;margin-top:24px;padding-top:16px;border-top:1px solid rgba(255,255,255,.04)}</style></head><body><div class="scanlines"></div><div class="card"><div class="vline l"></div><div class="vline r"></div><h1>SPECCORE ASK</h1><div class="query">"${input}"</div><div class="badge">${title}</div>${body}<div class="footer">由 SpecCore 驱动 v${ver} · ${new Date().toISOString().split('T')[0]}</div></div></body></html>`;
419
+ .footer{text-align:center;color:var(--muted);font-size:10px;margin-top:24px;padding-top:16px;border-top:1px solid rgba(255,255,255,.04)}</style></head><body><div class="scanlines"></div><div class="grid-pattern"></div><div class="card"><div class="card-bg"></div><div class="vline l"></div><div class="vline r"></div><h1>SPECCORE ASK</h1><div class="query">"${input}"</div><div class="badge">${title}</div>${body}<div class="footer">由 SpecCore 驱动 v${ver} · ${new Date().toISOString().split('T')[0]}</div></div></body></html>`;
412
420
  }
413
421
  function renderOnboardingHtml() {
414
422
  const ver = require('../../package.json').version;
415
- return '<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>Speccore Ask 首次引导</title><style>@import url(\'https://fonts.googleapis.com/css2?family=Orbitron:wght@500;700;900&family=JetBrains+Mono:wght@400;600;700\');*{box-sizing:border-box}body{margin:0;padding:24px 20px;background:#0b1929;display:flex;align-items:center;justify-content:center;min-height:100vh;font-family:\'JetBrains Mono\',monospace;position:relative}.scanlines{position:fixed;inset:0;pointer-events:none;z-index:0;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,240,255,.015) 2px,rgba(0,240,255,.015) 4px)}.grid-pattern{position:fixed;inset:0;pointer-events:none;z-index:0;background-image:linear-gradient(rgba(14,165,233,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(14,165,233,.03) 1px,transparent 1px);background-size:60px 60px}.card{max-width:720px;width:100%;background:rgba(13,31,56,.95);border:1px solid rgba(14,165,233,.15);border-radius:16px;padding:24px;position:relative;overflow:hidden;z-index:1}.card::before{content:\'\';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,#0ea5e9,transparent);animation:scanX 3s linear infinite}.card::after{content:\'\';position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,#0ea5e9,transparent);animation:scanX-rev 3s linear infinite}.vline{position:absolute;top:0;width:1px;bottom:0;pointer-events:none}.vline.l{left:0;background:linear-gradient(0deg,transparent,#0ea5e9,transparent);animation:scanY-rev 3s linear infinite}.vline.r{right:0;background:linear-gradient(0deg,transparent,#0ea5e9,transparent);animation:scanY 3s linear infinite}@keyframes scanX{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}@keyframes scanX-rev{0%{transform:translateX(100%)}100%{transform:translateX(-100%)}}@keyframes scanY{0%{transform:translateY(-100%)}100%{transform:translateY(100%)}}@keyframes scanY-rev{0%{transform:translateY(100%)}100%{transform:translateY(-100%)}}.wrap svg{display:block;width:100%;height:auto}.badge-line{text-align:center;margin-top:14px;position:relative;z-index:1;color:#5b7fa5;font-size:11px}.badge-line code{background:rgba(14,165,233,.15);color:#0ea5e9;padding:4px 14px;border-radius:6px;font-size:13px;border:1px solid rgba(14,165,233,.2)}.ft{text-align:center;color:#5b7fa5;font-size:10px;margin-top:16px;z-index:1}</style></head><body><div class="scanlines"></div><div class="grid-pattern"></div><div class="card"><div class="vline l"></div><div class="vline r"></div><div style="display:block;width:100%">' + exports.SVG_ONBOARD + '</div><div class="badge-line"><code>speccore ask "..."</code> 任意自然语言,AI 自动匹配最佳模式</div><div class="ft">SpecCore v' + ver + ' — 下次直接显示结果</div></div></body></html>';
423
+ return '<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>Speccore Ask 首次引导</title><style>@import url(\'https://fonts.googleapis.com/css2?family=Orbitron:wght@500;700;900&family=JetBrains+Mono:wght@400;600;700\');*{box-sizing:border-box}body{margin:0;padding:24px 20px;background:#0b1929;display:flex;align-items:center;justify-content:center;min-height:100vh;font-family:\'JetBrains Mono\',monospace;position:relative}.scanlines{position:fixed;inset:0;pointer-events:none;z-index:0;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,240,255,.015) 2px,rgba(0,240,255,.015) 4px)}.grid-pattern{position:fixed;inset:0;pointer-events:none;z-index:0;background-image:linear-gradient(rgba(14,165,233,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(14,165,233,.03) 1px,transparent 1px);background-size:60px 60px}.card{max-width:800px;width:100%;background:rgba(13,31,56,.95);border:1px solid rgba(14,165,233,.15);border-radius:16px;padding:24px;position:relative;overflow:hidden;z-index:1}.card::before{content:\'\';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,#0ea5e9,transparent);animation:scanX 3s linear infinite}.card::after{content:\'\';position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,#0ea5e9,transparent);animation:scanX-rev 3s linear infinite}.vline{position:absolute;top:0;width:1px;bottom:0;pointer-events:none}.vline.l{left:0;background:linear-gradient(0deg,transparent,#0ea5e9,transparent);animation:scanY-rev 3s linear infinite}.vline.r{right:0;background:linear-gradient(0deg,transparent,#0ea5e9,transparent);animation:scanY 3s linear infinite}@keyframes scanX{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}@keyframes scanX-rev{0%{transform:translateX(100%)}100%{transform:translateX(-100%)}}@keyframes scanY{0%{transform:translateY(-100%)}100%{transform:translateY(100%)}}@keyframes scanY-rev{0%{transform:translateY(100%)}100%{transform:translateY(-100%)}}.wrap svg{display:block;width:100%;height:auto}.badge-line{text-align:center;margin-top:14px;position:relative;z-index:1;color:#5b7fa5;font-size:11px}.badge-line code{background:rgba(14,165,233,.15);color:#0ea5e9;padding:4px 14px;border-radius:6px;font-size:13px;border:1px solid rgba(14,165,233,.2)}.sub{color:#5b7fa5;font-size:12px;letter-spacing:1px;text-align:center;margin-top:6px}.bottom-bar{text-align:center;margin-top:14px;padding:12px 20px;background:rgba(14,165,233,.08);border:1px solid rgba(14,165,233,.15);border-radius:10px}.bottom-bar .entry{color:#bae6fd;font-size:12px}.bottom-bar .flow-desc{color:#5b7fa5;font-size:10px;margin-top:6px}.ft{text-align:center;color:#5b7fa5;font-size:10px;margin-top:16px;z-index:1}@keyframes cardGlow{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.6)}}.card-bg{position:absolute;inset:0;pointer-events:none;z-index:0;background:radial-gradient(ellipse at 50% 10%,rgba(14,165,233,.25) 0%,transparent 70%);animation:cardGlow 3s ease-in-out infinite;transform-origin:top center}@keyframes titleGlow{0%,100%{filter:drop-shadow(0 0 20px rgba(14,165,233,.4)) drop-shadow(0 0 60px rgba(14,165,233,.15))}50%{filter:drop-shadow(0 0 30px rgba(14,165,233,.7)) drop-shadow(0 0 80px rgba(14,165,233,.3))}}h1,h2{font-family:\'Orbitron\',sans-serif;font-size:40px;font-weight:900;background:linear-gradient(135deg,#0ea5e9,#6366f1);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:2px;text-align:center;animation:titleGlow 3s ease-in-out infinite}.mode-rect{transition:all .3s;cursor:pointer}.mode-rect:hover{filter:brightness(1.4) drop-shadow(0 0 8px currentColor)}.ask-circle{cursor:pointer;transition:all .3s}.ask-circle:hover{filter:drop-shadow(0 0 16px rgba(14,165,233,.6))}.start-bar{text-align:center;margin-top:18px;position:relative;z-index:1}.start-btn{display:inline-block;padding:12px 36px;background:linear-gradient(135deg,#0ea5e9 0%,#6366f1 100%);border:none;border-radius:40px;color:#fff;font-family:\'JetBrains Mono\',monospace;font-size:13px;font-weight:700;letter-spacing:1px;cursor:pointer;box-shadow:0 0 24px rgba(14,165,233,.3);transition:all .3s;text-decoration:none}.start-btn:hover{box-shadow:0 0 40px rgba(14,165,233,.5);transform:translateY(-1px)}.copy-hint{display:inline-block;margin-top:10px;color:#5b7fa5;font-size:10px;cursor:pointer;transition:color .2s}.copy-hint:hover{color:#0ea5e9}</style></head><body><div class="scanlines"></div><div class="grid-pattern"></div><div class="card"><div class="card-bg"></div><div class="vline l"></div><div class="vline r"></div><h1>ask — SpecCore 万能AI入口</h1><div class="sub">一个命令解决所有问题:解释 / 指引 / 匹配 / 编排</div><div style="display:block;width:100%">' + exports.SVG_ONBOARD + '</div><div class="badge-line">任意自然语言,AI 自动匹配最佳模式</div><div class="start-bar"><a class="start-btn" href="speccore-help.html">知道了,开始使用</a><div class="copy-hint" onclick="navigator.clipboard.writeText(\'/spec-ask 你的需求\');this.textContent=\'✅ 已复制到剪贴板\'" title="点击复制">📋 点击复制命令</div></div><div class="bottom-bar"><div class="entry">统一入口: /spec-ask 任意自然语言,AI 自动理解意图</div><div class="flow-desc">AI 自动判断模式 → 执行匹配逻辑 → 展示结果 → 用户确认</div></div><div class="ft">SpecCore v' + ver + ' — 下次直接显示结果</div></div></body></html>';
416
424
  }
417
- exports.SVG_ONBOARD = '<svg viewBox="0 0 680 540" xmlns="http://www.w3.org/2000/svg"><text x="340" y="28" text-anchor="middle" fill="#0ea5e9" font-size="16" font-weight="bold" font-family="monospace">ask SpecCore 万能AI入口</text><text x="340" y="44" text-anchor="middle" fill="#5b7fa5" font-size="10" font-family="monospace">一个命令解决所有问题:解释 / 指引 / 匹配 / 编排</text><line x1="319" y1="260" x2="230" y2="220" stroke="#14b8a6" stroke-width="1.5"/><line x1="361" y1="260" x2="450" y2="220" stroke="#f97316" stroke-width="1.5"/><line x1="319" y1="280" x2="230" y2="320" stroke="#0ea5e9" stroke-width="1.5"/><line x1="361" y1="280" x2="450" y2="320" stroke="#a78bfa" stroke-width="1.5"/><rect x="40" y="110" width="285" height="110" rx="8" fill="#0d1f38" stroke="#14b8a6" stroke-width="1"/><text x="56" y="132" fill="#14b8a6" font-size="13" font-family="monospace" font-weight="bold">模式1: 命令解释</text><text x="56" y="152" fill="#5b7fa5" font-size="10" font-family="monospace">"解释下 dashboard 命令"</text><text x="56" y="170" fill="#5b7fa5" font-size="10" font-family="monospace">"init 有哪些参数?"</text><text x="56" y="188" fill="#5b7fa5" font-size="10" font-family="monospace">显示命令详情 + 示例 + 关联命令</text><rect x="160" y="200" width="120" height="16" rx="8" fill="#14b8a6" opacity="0.15"/><text x="220" y="212" text-anchor="middle" fill="#14b8a6" font-size="9" font-family="monospace">知识库匹配</text><rect x="355" y="110" width="285" height="110" rx="8" fill="#0d1f38" stroke="#f97316" stroke-width="1"/><text x="371" y="132" fill="#f97316" font-size="13" font-family="monospace" font-weight="bold">模式2: 任务指引</text><text x="371" y="152" fill="#5b7fa5" font-size="10" font-family="monospace">"我想做一个登录功能"</text><text x="371" y="170" fill="#5b7fa5" font-size="10" font-family="monospace">"怎么开始一个新项目?"</text><text x="371" y="188" fill="#5b7fa5" font-size="10" font-family="monospace">展示完整操作步骤流水线</text><rect x="480" y="200" width="120" height="16" rx="8" fill="#f97316" opacity="0.15"/><text x="540" y="212" text-anchor="middle" fill="#f97316" font-size="9" font-family="monospace">工作流生成</text><rect x="40" y="320" width="285" height="110" rx="8" fill="#0d1f38" stroke="#0ea5e9" stroke-width="1"/><text x="56" y="342" fill="#0ea5e9" font-size="13" font-family="monospace" font-weight="bold">模式3: 意图匹配</text><text x="56" y="362" fill="#5b7fa5" font-size="10" font-family="monospace">"查看项目进度" → dashboard</text><text x="56" y="380" fill="#5b7fa5" font-size="10" font-family="monospace">"帮我审查代码" → validate</text><text x="56" y="398" fill="#5b7fa5" font-size="10" font-family="monospace">直接匹配命令</text><rect x="160" y="410" width="120" height="16" rx="8" fill="#0ea5e9" opacity="0.15"/><text x="220" y="422" text-anchor="middle" fill="#0ea5e9" font-size="9" font-family="monospace">38意图+AI</text><rect x="355" y="320" width="285" height="110" rx="8" fill="#0d1f38" stroke="#a78bfa" stroke-width="1"/><text x="371" y="342" fill="#a78bfa" font-size="13" font-family="monospace" font-weight="bold">模式4: 复杂编排</text><text x="371" y="362" fill="#5b7fa5" font-size="10" font-family="monospace">"计划所有任务晚8点分批"</text><text x="371" y="380" fill="#5b7fa5" font-size="10" font-family="monospace">"做完分析拆分执行PR"</text><text x="371" y="398" fill="#5b7fa5" font-size="10" font-family="monospace">LLM分解预览确认执行</text><rect x="480" y="410" width="120" height="16" rx="8" fill="#a78bfa" opacity="0.15"/><text x="540" y="422" text-anchor="middle" fill="#a78bfa" font-size="9" font-family="monospace">Pipeline引擎</text><circle cx="340" cy="270" r="28" fill="#0d1f38" stroke="#0ea5e9" stroke-width="2"/><text x="340" y="276" text-anchor="middle" fill="#0ea5e9" font-size="16" font-family="monospace" font-weight="bold">ask</text><rect x="100" y="468" width="480" height="50" rx="10" fill="#0ea5e9" opacity="0.12" stroke="#0ea5e9" stroke-width="1"/><text x="340" y="490" text-anchor="middle" fill="#bae6fd" font-size="11" font-family="monospace">统一入口: speccore ask "任意自然语言"</text><text x="340" y="508" text-anchor="middle" fill="#5b7fa5" font-size="9" font-family="monospace">AI 自动判断模式 → 执行匹配逻辑 → 展示结果 → 用户确认</text></svg>';
425
+ exports.SVG_ONBOARD = '<svg viewBox="0 0 680 400" xmlns="http://www.w3.org/2000/svg"><style>.mode-rect{transition:all .3s;cursor:pointer}.mode-rect:hover{filter:brightness(1.4) drop-shadow(0 0 12px currentColor)}.ask-circle{cursor:pointer;transition:all .3s}.ask-circle:hover{filter:drop-shadow(0 0 20px rgba(14,165,233,.7))}</style><line x1="319" y1="218" x2="230" y2="178" stroke="#14b8a6" stroke-width="1.5"/><line x1="361" y1="218" x2="450" y2="178" stroke="#f97316" stroke-width="1.5"/><line x1="319" y1="238" x2="230" y2="278" stroke="#0ea5e9" stroke-width="1.5"/><line x1="361" y1="238" x2="450" y2="278" stroke="#a78bfa" stroke-width="1.5"/><rect class="mode-rect" x="40" y="68" width="285" height="110" rx="8" fill="#0d1f38" stroke="#14b8a6" stroke-width="1" onclick="window.location.href=\'speccore-ask-explain.html\'"/><text x="56" y="90" fill="#14b8a6" font-size="13" font-family="monospace" font-weight="bold">模式1: 命令解释</text><text x="56" y="110" fill="#5b7fa5" font-size="10" font-family="monospace">解释下 dashboard 命令</text><text x="56" y="128" fill="#5b7fa5" font-size="10" font-family="monospace">init 有哪些参数?</text><text x="56" y="146" fill="#5b7fa5" font-size="10" font-family="monospace">显示命令详情 + 示例 + 关联命令</text><rect x="160" y="158" width="120" height="16" rx="8" fill="#14b8a6" opacity="0.15"/><text x="220" y="170" text-anchor="middle" fill="#14b8a6" font-size="9" font-family="monospace">知识库匹配</text><rect class="mode-rect" x="355" y="68" width="285" height="110" rx="8" fill="#0d1f38" stroke="#f97316" stroke-width="1" onclick="window.location.href=\'speccore-ask-guide.html\'"/><text x="371" y="90" fill="#f97316" font-size="13" font-family="monospace" font-weight="bold">模式2: 任务指引</text><text x="371" y="110" fill="#5b7fa5" font-size="10" font-family="monospace">我想做一个登录功能</text><text x="371" y="128" fill="#5b7fa5" font-size="10" font-family="monospace">怎么开始一个新项目?</text><text x="371" y="146" fill="#5b7fa5" font-size="10" font-family="monospace">展示完整操作步骤流水线</text><rect x="480" y="158" width="120" height="16" rx="8" fill="#f97316" opacity="0.15"/><text x="540" y="170" text-anchor="middle" fill="#f97316" font-size="9" font-family="monospace">工作流生成</text><rect class="mode-rect" x="40" y="278" width="285" height="110" rx="8" fill="#0d1f38" stroke="#0ea5e9" stroke-width="1" onclick="window.location.href=\'speccore-ask-match.html\'"/><text x="56" y="300" fill="#0ea5e9" font-size="13" font-family="monospace" font-weight="bold">模式3: 意图匹配</text><text x="56" y="320" fill="#5b7fa5" font-size="10" font-family="monospace">查看项目进度 → dashboard</text><text x="56" y="338" fill="#5b7fa5" font-size="10" font-family="monospace">帮我审查代码 → validate</text><text x="56" y="356" fill="#5b7fa5" font-size="10" font-family="monospace">直接匹配命令</text><rect x="160" y="368" width="120" height="16" rx="8" fill="#0ea5e9" opacity="0.15"/><text x="220" y="378" text-anchor="middle" fill="#0ea5e9" font-size="9" font-family="monospace">38意图+AI</text><rect class="mode-rect" x="355" y="278" width="285" height="110" rx="8" fill="#0d1f38" stroke="#a78bfa" stroke-width="1" onclick="window.location.href=\'speccore-ask-pipeline.html\'"/><text x="371" y="300" fill="#a78bfa" font-size="13" font-family="monospace" font-weight="bold">模式4: 复杂编排</text><text x="371" y="320" fill="#5b7fa5" font-size="10" font-family="monospace">计划所有任务晚8点分批</text><text x="371" y="338" fill="#5b7fa5" font-size="10" font-family="monospace">做完分析拆分执行PR</text><text x="371" y="356" fill="#5b7fa5" font-size="10" font-family="monospace">LLM分解预览确认执行</text><rect x="480" y="368" width="120" height="16" rx="8" fill="#a78bfa" opacity="0.15"/><text x="540" y="378" text-anchor="middle" fill="#a78bfa" font-size="9" font-family="monospace">Pipeline引擎</text><circle class="ask-circle" cx="340" cy="228" r="28" fill="#0d1f38" stroke="#0ea5e9" stroke-width="2"/><text x="340" y="234" text-anchor="middle" fill="#0ea5e9" font-size="16" font-family="monospace" font-weight="bold">ask</text></svg>';
418
426
  //# sourceMappingURL=ask.js.map