speccore 8.3.158 → 8.3.160

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 (85) hide show
  1. package/README.md +1 -1
  2. package/dist/commands/analyze.d.ts.map +1 -1
  3. package/dist/commands/analyze.js +88 -96
  4. package/dist/commands/analyze.js.map +1 -1
  5. package/dist/commands/ask.d.ts.map +1 -1
  6. package/dist/commands/ask.js +0 -13
  7. package/dist/commands/ask.js.map +1 -1
  8. package/dist/commands/execute.d.ts.map +1 -1
  9. package/dist/commands/execute.js +67 -6
  10. package/dist/commands/execute.js.map +1 -1
  11. package/dist/commands/init.d.ts.map +1 -1
  12. package/dist/commands/init.js +71 -216
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/iteration/split.d.ts.map +1 -1
  15. package/dist/commands/iteration/split.js +73 -9
  16. package/dist/commands/iteration/split.js.map +1 -1
  17. package/dist/commands/migrate.d.ts.map +1 -1
  18. package/dist/commands/migrate.js +1 -2
  19. package/dist/commands/migrate.js.map +1 -1
  20. package/dist/commands/update.d.ts.map +1 -1
  21. package/dist/commands/update.js +1 -4
  22. package/dist/commands/update.js.map +1 -1
  23. package/dist/core/agent-adapter.d.ts +81 -0
  24. package/dist/core/agent-adapter.d.ts.map +1 -0
  25. package/dist/core/agent-adapter.js +425 -0
  26. package/dist/core/agent-adapter.js.map +1 -0
  27. package/dist/core/agents/defaults/_INDEX.md +15 -15
  28. package/dist/core/agents/defaults/code-reviewer.md +9 -0
  29. package/dist/core/agents/defaults/compiler.md +12 -3
  30. package/dist/core/agents/defaults/dependency-analyst.md +7 -0
  31. package/dist/core/agents/defaults/doc-sync-agent.md +7 -0
  32. package/dist/core/agents/defaults/impact-analyst.md +7 -0
  33. package/dist/core/agents/defaults/interaction-designer.md +17 -0
  34. package/dist/core/agents/defaults/performance-expert.md +9 -0
  35. package/dist/core/agents/defaults/regression-tester.md +7 -0
  36. package/dist/core/agents/defaults/security-reviewer.md +9 -0
  37. package/dist/core/agents/defaults/test-engineer.md +10 -0
  38. package/dist/core/agents/defaults/test-reviewer.md +10 -0
  39. package/dist/core/lock-manager.d.ts.map +1 -1
  40. package/dist/core/lock-manager.js +2 -0
  41. package/dist/core/lock-manager.js.map +1 -1
  42. package/dist/core/pipeline-engine.d.ts +49 -8
  43. package/dist/core/pipeline-engine.d.ts.map +1 -1
  44. package/dist/core/pipeline-engine.js +221 -34
  45. package/dist/core/pipeline-engine.js.map +1 -1
  46. package/dist/core/prompt-builder.d.ts +4 -0
  47. package/dist/core/prompt-builder.d.ts.map +1 -1
  48. package/dist/core/prompt-builder.js +83 -10
  49. package/dist/core/prompt-builder.js.map +1 -1
  50. package/dist/core/rules/defaults/ANALYSIS_QUALITY.md +73 -0
  51. package/dist/core/rules/defaults/EXECUTION.md +20 -0
  52. package/dist/core/rules/defaults/ITERATION_QUALITY.md +49 -0
  53. package/dist/core/rules/defaults/TASK_SPLIT.md +16 -0
  54. package/dist/core/spec-paths.d.ts.map +1 -1
  55. package/dist/core/spec-paths.js +2 -1
  56. package/dist/core/spec-paths.js.map +1 -1
  57. package/package.json +4 -6
  58. package/templates/api-design-example.md +0 -338
  59. package/templates/ci/github-actions.yml +0 -44
  60. package/templates/dashboard.html +0 -425
  61. package/templates/database-example.md +0 -223
  62. package/templates/deploy-docker/README.md +0 -284
  63. package/templates/deploy-docker/deploy-remote.sh +0 -79
  64. package/templates/deploy-docker/docker-compose.yml +0 -113
  65. package/templates/deploy-docker/frontend.Dockerfile +0 -43
  66. package/templates/deploy-docker/nginx.conf +0 -30
  67. package/templates/deploy-examples.yaml +0 -436
  68. package/templates/deploy-java/Dockerfile +0 -50
  69. package/templates/deploy-java/README.md +0 -212
  70. package/templates/deploy-java/deploy.sh +0 -120
  71. package/templates/deploy-java/spring-boot.service +0 -35
  72. package/templates/html/speccore-ask-explain.html +0 -10
  73. package/templates/html/speccore-ask-guide.html +0 -10
  74. package/templates/html/speccore-ask-match.html +0 -10
  75. package/templates/html/speccore-ask-pipeline.html +0 -1
  76. package/templates/html/speccore-ask-result.html +0 -10
  77. package/templates/html/speccore-demo.html +0 -449
  78. package/templates/html/speccore-dev.html +0 -202
  79. package/templates/html/speccore-help.html +0 -1
  80. package/templates/html/speccore-knowledge-graph.html +0 -656
  81. package/templates/html/speccore-retro-T-001.html +0 -1
  82. package/templates/html/speccore-setup-guide.html +0 -289
  83. package/templates/html/speccore-welcome.html +0 -1
  84. package/templates/security-example.md +0 -226
  85. package/templates/verify-spec-example.yaml +0 -982
@@ -0,0 +1,425 @@
1
+ "use strict";
2
+ /**
3
+ * AgentAdapter — 子 Agent 统一适配层
4
+ *
5
+ * v8.3.160+: 实现子 Agent 隔离,解决上下文漂移问题。
6
+ * 每个 Pipeline 步骤可以指定 subagent,由适配层负责:
7
+ * 1. 准备该 subagent 所需的紧凑上下文
8
+ * 2. 控制上下文大小(Token 预算)
9
+ * 3. 输出子 Agent 激活标记和指令
10
+ *
11
+ * 适配模式:
12
+ * - Headless: 基于文件/状态机模拟子 Agent(默认,无需 SDK)
13
+ * - QoderSdk: 通过 Qoder SDK API 创建独立子 Agent(预留接口)
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.defaultAdapter = exports.QoderSdkAdapter = exports.HeadlessAdapter = void 0;
17
+ exports.createAgentAdapter = createAgentAdapter;
18
+ const logger_1 = require("../utils/logger");
19
+ // ── 全局子 Agent 注册表 ──
20
+ const subagentRegistry = new Map();
21
+ // ── 默认子 Agent 配置(以 _INDEX.md 角色定义为准) ──
22
+ const DEFAULT_SUBAGENTS = [
23
+ // analyze / clarify 阶段
24
+ {
25
+ name: 'product-analyst',
26
+ description: '产品分析师:业务流程完整性、遗漏识别、术语统一',
27
+ systemPrompt: '你是 SpecCore 产品分析师。你的职责是审查业务流程完整性、识别需求遗漏、检查术语统一性。输出格式:Markdown 产品分析报告。',
28
+ defaultContextType: 'full',
29
+ defaultContextBudget: 4000,
30
+ skills: ['.speccore/AGENTS/product-analyst.md'],
31
+ },
32
+ {
33
+ name: 'interaction-designer',
34
+ description: '交互设计师:信息架构、状态矩阵、前后端一致性',
35
+ systemPrompt: '你是 SpecCore 交互设计师。你的职责是设计页面信息架构、定义交互状态矩阵、检查前后端交互一致性。输出格式:Markdown 交互审查报告。',
36
+ defaultContextType: 'full',
37
+ defaultContextBudget: 4000,
38
+ skills: ['.speccore/AGENTS/interaction-designer.md'],
39
+ },
40
+ {
41
+ name: 'security-reviewer',
42
+ description: '安全审查员:认证授权、输入验证、数据保护',
43
+ systemPrompt: '你是 SpecCore 安全审查员。你的职责是识别需求/代码中的安全风险,检查认证、授权、输入验证、数据保护。输出格式:安全问题列表。',
44
+ defaultContextType: 'full',
45
+ defaultContextBudget: 4000,
46
+ skills: ['.speccore/AGENTS/security-reviewer.md'],
47
+ },
48
+ // analyze 阶段
49
+ {
50
+ name: 'spec-analyzer',
51
+ description: '需求分析专家:逐端分析、架构设计、技术方案',
52
+ systemPrompt: '你是 SpecCore 需求分析专家。你的职责是根据需求文档和契约,为指定端生成完整的技术规格。必须遵循 CONSTITUTION.md 中的命名规范和端名标准。输出格式:Markdown 技术文档。',
53
+ defaultContextType: 'platform-only',
54
+ // v8.3.160+: 配合按需加载优化,降至 10K
55
+ defaultContextBudget: 10000,
56
+ skills: ['.speccore/AGENTS/product-analyst-backend.md', '.speccore/AGENTS/product-analyst-frontend.md'],
57
+ },
58
+ // execute 阶段
59
+ {
60
+ name: 'spec-executor',
61
+ description: '代码生成专家:读取规格、生成代码、遵循规范',
62
+ systemPrompt: '你是 SpecCore 代码生成专家。你的职责是根据 TASK.md 和技术规格,生成符合项目规范的代码实现。必须遵循 CONSTITUTION.md 的命名规范、端名标准和错误码体系。输出格式:JSON 文件列表。',
63
+ defaultContextType: 'incremental',
64
+ defaultContextBudget: 10000,
65
+ skills: ['.speccore/SKILLS/execute.md'],
66
+ },
67
+ // execute / quality-gate 阶段
68
+ // v8.3.160+: compiler 合并 test-engineer 职责(quality-gate-build)
69
+ {
70
+ name: 'compiler',
71
+ description: '构建质量检查员:编译检查 + 测试覆盖',
72
+ systemPrompt: '你是 SpecCore 构建质量检查员。你的职责是:1) 检查代码编译可行性,识别语法错误和类型错误;2) 检查单元测试和集成测试覆盖率,确保新增代码有配套测试。输出格式:构建质量报告(含编译结果 + 测试覆盖)。',
73
+ defaultContextType: 'incremental',
74
+ defaultContextBudget: 8000,
75
+ skills: ['.speccore/AGENTS/compiler.md', '.speccore/AGENTS/test-engineer.md'],
76
+ },
77
+ // v8.3.160+: security-reviewer 合并 performance-expert 职责(quality-gate-nfr)
78
+ {
79
+ name: 'security-reviewer',
80
+ description: '非功能质量检查员:安全审查 + 性能检测',
81
+ systemPrompt: '你是 SpecCore 非功能质量检查员。你的职责是:1) 识别代码中的安全风险(认证、授权、输入验证、数据保护);2) 检查性能瓶颈(N+1 查询、内存泄漏、不必要的重渲染)。输出格式:非功能质量报告(含安全 + 性能)。',
82
+ defaultContextType: 'incremental',
83
+ defaultContextBudget: 6000,
84
+ skills: ['.speccore/AGENTS/security-reviewer.md', '.speccore/AGENTS/performance-expert.md'],
85
+ },
86
+ {
87
+ name: 'doc-sync-agent',
88
+ description: '文档同步检查员:代码与文档一致性',
89
+ systemPrompt: '你是 SpecCore 文档同步检查员。你的职责是检查代码与文档的一致性,确保 API 文档与实际接口匹配,注释和文档未过时。输出格式:文档同步报告。',
90
+ defaultContextType: 'incremental',
91
+ defaultContextBudget: 3000,
92
+ skills: ['.speccore/AGENTS/doc-sync-agent.md'],
93
+ },
94
+ // split 阶段
95
+ {
96
+ name: 'task-decomposer',
97
+ description: '任务拆分专家:功能模块拆分为原子级开发任务',
98
+ systemPrompt: '你是 SpecCore 任务拆分专家。你的职责是将功能模块拆分为原子级开发任务,确保每个任务可独立执行、可验收,工时控制在 2h-8h。输出格式:任务列表。',
99
+ defaultContextType: 'full',
100
+ defaultContextBudget: 8000,
101
+ skills: ['.speccore/AGENTS/task-decomposer.md'],
102
+ },
103
+ {
104
+ name: 'dependency-analyst',
105
+ description: '依赖关系分析师:任务间依赖、循环依赖检测',
106
+ systemPrompt: '你是 SpecCore 依赖关系分析师。你的职责是识别任务间的依赖关系,构建任务依赖图,发现循环依赖,推荐任务执行顺序。输出格式:依赖分析报告。',
107
+ defaultContextType: 'incremental',
108
+ defaultContextBudget: 5000,
109
+ skills: ['.speccore/AGENTS/dependency-analyst.md'],
110
+ },
111
+ {
112
+ name: 'effort-estimator',
113
+ description: '工时估算专家:任务工时估算',
114
+ systemPrompt: '你是 SpecCore 工时估算专家。你的职责是根据任务复杂度和历史数据,为每个任务估算工时。输出格式:工时估算表。',
115
+ defaultContextType: 'incremental',
116
+ defaultContextBudget: 4000,
117
+ skills: [],
118
+ },
119
+ // global-analyze 阶段
120
+ {
121
+ name: 'spec-global-analyzer',
122
+ description: '全局分析专家:跨迭代依赖、全局架构、一致性检查',
123
+ systemPrompt: '你是 SpecCore 全局分析专家。你的职责是分析跨迭代的依赖关系、全局架构一致性和技术债务。必须识别所有跨端关联和重复实现。输出格式:Markdown 全局报告。',
124
+ defaultContextType: 'full',
125
+ // v8.3.160+: 配合按需加载优化,降至 10K
126
+ defaultContextBudget: 10000,
127
+ skills: ['.speccore/SKILLS/global-analyze.md'],
128
+ },
129
+ // plan 阶段(预留)
130
+ {
131
+ name: 'schedule-planner',
132
+ description: '排期规划专家:任务排期、资源分配',
133
+ systemPrompt: '你是 SpecCore 排期规划专家。你的职责是根据任务列表和人员配置,生成执行计划,识别可并行的任务批次。输出格式:执行计划。',
134
+ defaultContextType: 'full',
135
+ defaultContextBudget: 6000,
136
+ skills: ['.speccore/AGENTS/schedule-planner.md'],
137
+ },
138
+ {
139
+ name: 'risk-assessor',
140
+ description: '风险评估专家:技术风险、依赖风险识别',
141
+ systemPrompt: '你是 SpecCore 风险评估专家。你的职责是评估任务执行中的技术风险和依赖风险,参考 RISK.md 和 .issues.md。输出格式:风险评估报告。',
142
+ defaultContextType: 'incremental',
143
+ defaultContextBudget: 4000,
144
+ skills: ['.speccore/AGENTS/risk-assessor.md'],
145
+ },
146
+ // change 阶段(预留)
147
+ {
148
+ name: 'impact-analyst',
149
+ description: '影响范围分析师:变更影响分析',
150
+ systemPrompt: '你是 SpecCore 影响范围分析师。你的职责是分析变更对现有代码、文档、测试的影响范围,识别需要同步修改的关联模块。输出格式:影响范围分析报告。',
151
+ defaultContextType: 'full',
152
+ defaultContextBudget: 6000,
153
+ skills: ['.speccore/AGENTS/impact-analyst.md'],
154
+ },
155
+ {
156
+ name: 'regression-tester',
157
+ description: '回归测试专家:回归测试范围确定',
158
+ systemPrompt: '你是 SpecCore 回归测试专家。你的职责是根据变更内容确定回归测试范围,确保变更不会破坏已有功能。输出格式:回归测试计划。',
159
+ defaultContextType: 'incremental',
160
+ defaultContextBudget: 4000,
161
+ skills: ['.speccore/AGENTS/regression-tester.md'],
162
+ },
163
+ // pr 阶段(预留)
164
+ {
165
+ name: 'code-reviewer',
166
+ description: '代码审查员:代码质量、可读性、可维护性',
167
+ systemPrompt: '你是 SpecCore 代码审查员。你的职责是审查代码质量、可读性、可维护性,检查是否符合项目编码规范。输出格式:代码审查报告。',
168
+ defaultContextType: 'incremental',
169
+ defaultContextBudget: 6000,
170
+ skills: ['.speccore/AGENTS/code-reviewer.md'],
171
+ },
172
+ {
173
+ name: 'test-reviewer',
174
+ description: '测试审查员:测试完整性审查',
175
+ systemPrompt: '你是 SpecCore 测试审查员。你的职责是审查测试代码的完整性和有效性,确保测试覆盖所有场景。输出格式:测试审查报告。',
176
+ defaultContextType: 'incremental',
177
+ defaultContextBudget: 4000,
178
+ skills: ['.speccore/AGENTS/test-reviewer.md'],
179
+ },
180
+ ];
181
+ // ═══════════════════════════════════════════════════════════
182
+ // HeadlessAdapter — 基于文件/状态机的子 Agent 模拟
183
+ // ═══════════════════════════════════════════════════════════
184
+ class HeadlessAdapter {
185
+ constructor() {
186
+ this.registry = new Map(subagentRegistry);
187
+ // 注册默认子 Agent
188
+ for (const config of DEFAULT_SUBAGENTS) {
189
+ if (!this.registry.has(config.name)) {
190
+ this.registry.set(config.name, config);
191
+ }
192
+ }
193
+ }
194
+ getMode() {
195
+ return 'headless';
196
+ }
197
+ registerSubagent(name, config) {
198
+ this.registry.set(name, config);
199
+ logger_1.logger.debug(`[AgentAdapter] 注册子 Agent: ${name}`);
200
+ }
201
+ getSubagentConfig(name) {
202
+ return this.registry.get(name);
203
+ }
204
+ /** 准备子 Agent 的紧凑上下文 */
205
+ async prepareContext(ctx) {
206
+ const config = this.registry.get(ctx.subagent);
207
+ const lines = [];
208
+ // 1. 子 Agent 角色定义
209
+ if (config) {
210
+ lines.push(`## 🤖 子 Agent: ${config.name}`);
211
+ lines.push(`> ${config.description}`);
212
+ lines.push('');
213
+ lines.push('### 角色定义');
214
+ lines.push(config.systemPrompt);
215
+ lines.push('');
216
+ }
217
+ // 2. 上下文预算提醒
218
+ lines.push(`### 上下文预算`);
219
+ lines.push(`- 可用 Token: ~${ctx.contextBudget}`);
220
+ lines.push(`- 加载模式: ${ctx.contextType}`);
221
+ lines.push('');
222
+ // 3. 根据 contextType 加载不同范围的上下文
223
+ if (ctx.contextSnapshot) {
224
+ lines.push('### 已完成步骤');
225
+ for (const step of ctx.contextSnapshot.completedSteps) {
226
+ lines.push(`- ✅ ${step}`);
227
+ }
228
+ lines.push('');
229
+ if (ctx.contextSnapshot.completedOutputs.length > 0) {
230
+ lines.push('### 已完成产出(文件路径)');
231
+ for (const output of ctx.contextSnapshot.completedOutputs) {
232
+ lines.push(`- 📄 ${output}`);
233
+ }
234
+ lines.push('');
235
+ }
236
+ }
237
+ // 4. 增量模式下只加载路径引用
238
+ if (ctx.contextType === 'incremental') {
239
+ lines.push('> 💡 增量模式:已完成的产出文件已在上方列出,需要时按需 Read,不要全文加载到上下文中。');
240
+ lines.push('');
241
+ }
242
+ // 5. platform-only 模式下提示只加载当前端
243
+ if (ctx.contextType === 'platform-only' && ctx.platform) {
244
+ lines.push(`> 💡 平台隔离模式:只加载 ${ctx.platform} 端的规格,其他端的内容通过文件路径引用。`);
245
+ lines.push('');
246
+ }
247
+ // 6. contract-only 模式下提示只加载契约
248
+ if (ctx.contextType === 'contract-only') {
249
+ lines.push('> 💡 契约模式:只加载跨端 API 契约,不涉及具体实现细节。');
250
+ lines.push('');
251
+ }
252
+ // 7. v8.3.160+: 按角色裁剪上下文 —— 告诉 AI 哪些文件需要全文读取,哪些只需路径引用
253
+ lines.push('### 上下文裁剪策略');
254
+ const roleHints = {
255
+ 'product-analyst': [
256
+ '📖 **全文读取**:迭代目录 010-requirements/ 下的所有需求文档',
257
+ '📖 **全文读取**:已有的 CLARIFY_REPORT.md(如有)',
258
+ '🔗 **路径引用**:020-specs/ 下的已有规格(按需 Read)',
259
+ '❌ **不加载**:代码实现、构建配置、测试用例',
260
+ ],
261
+ 'interaction-designer': [
262
+ '📖 **全文读取**:需求文档中的交互流程、页面描述',
263
+ '📖 **全文读取**:原型图文件(010-requirements/prototypes/)',
264
+ '🔗 **路径引用**:技术栈交互约束(.speccore/RULES/frontend-*.md)',
265
+ '❌ **不加载**:后端 API 实现细节、数据库设计',
266
+ ],
267
+ 'security-reviewer': [
268
+ '📖 **全文读取**:安全规则(.speccore/RULES/security.md)',
269
+ ctx.contextType === 'incremental'
270
+ ? '📖 **全文读取**:当前代码实现(重点检查输入验证、认证授权)'
271
+ : '📖 **全文读取**:需求文档中的安全相关描述',
272
+ '🔗 **路径引用**:OWASP 检查清单',
273
+ ],
274
+ 'compiler': [
275
+ '📖 **全文读取**:新生成的代码文件',
276
+ '📖 **全文读取**:构建配置文件(tsconfig.json / pom.xml / build.gradle 等)',
277
+ '🔗 **路径引用**:技术栈编译规则(.speccore/RULES/{技术栈}.md)',
278
+ '❌ **不加载**:需求文档、测试用例',
279
+ ],
280
+ 'test-engineer': [
281
+ '📖 **全文读取**:代码实现(重点检查可测试性)',
282
+ '📖 **全文读取**:TEST.md 中的测试用例',
283
+ '📖 **全文读取**:覆盖率报告(如有)',
284
+ '🔗 **路径引用**:技术栈测试规范',
285
+ ],
286
+ 'performance-expert': [
287
+ '📖 **全文读取**:代码实现(重点检查数据库查询、循环、渲染)',
288
+ '📖 **全文读取**:性能基准数据(如有)',
289
+ '🔗 **路径引用**:技术栈性能规范',
290
+ '❌ **不加载**:需求文档全文',
291
+ ],
292
+ 'doc-sync-agent': [
293
+ '📖 **全文读取**:代码中的 API 定义、注释',
294
+ '📖 **全文读取**:文档中的 API 规格',
295
+ '🔗 **路径引用**:技术栈文档格式规范',
296
+ '❌ **不加载**:测试用例、性能数据',
297
+ ],
298
+ 'spec-analyzer': [
299
+ '📖 **全文读取**:需求文档、跨端契约',
300
+ '📖 **全文读取**:CONSTITUTION.md(命名规范、端名标准)',
301
+ '🔗 **路径引用**:已有端的规格(参考但不全文加载)',
302
+ ],
303
+ 'spec-executor': [
304
+ '📖 **全文读取**:TASK.md、TECH.md',
305
+ '📖 **全文读取**:结构化代码事实卡片(匹配相关部分)',
306
+ '🔗 **路径引用**:已有代码文件(按需 Read,不全文加载)',
307
+ ],
308
+ 'task-decomposer': [
309
+ '📖 **全文读取**:需求文档全文(010-requirements/)',
310
+ '📖 **全文读取**:功能模块清单',
311
+ '🔗 **路径引用**:端列表(CONSTITUTION.md)',
312
+ ],
313
+ 'dependency-analyst': [
314
+ '📖 **全文读取**:任务列表、需求文档中的依赖描述',
315
+ '🔗 **路径引用**:已有代码的模块结构',
316
+ ],
317
+ 'code-reviewer': [
318
+ '📖 **全文读取**:代码变更(diff)',
319
+ '📖 **全文读取**:编码规范(.speccore/RULES/{技术栈}.md)',
320
+ '🔗 **路径引用**:需求文档(按需确认)',
321
+ ],
322
+ 'test-reviewer': [
323
+ '📖 **全文读取**:测试代码',
324
+ '📖 **全文读取**:测试规范(.speccore/RULES/testing.md)',
325
+ '🔗 **路径引用**:被测代码文件',
326
+ ],
327
+ 'impact-analyst': [
328
+ '📖 **全文读取**:变更内容、依赖图谱',
329
+ '🔗 **路径引用**:模块结构文档',
330
+ ],
331
+ 'regression-tester': [
332
+ '📖 **全文读取**:变更内容、测试策略',
333
+ '🔗 **路径引用**:已有测试用例',
334
+ ],
335
+ };
336
+ const hints = roleHints[ctx.subagent];
337
+ if (hints) {
338
+ for (const hint of hints) {
339
+ lines.push(`- ${hint}`);
340
+ }
341
+ }
342
+ else {
343
+ lines.push('- 按上下文类型默认加载');
344
+ }
345
+ lines.push('');
346
+ return lines.join('\n');
347
+ }
348
+ /** 构建子 Agent 激活标记 */
349
+ buildActivationPrompt(ctx, nextPrompt) {
350
+ const config = this.registry.get(ctx.subagent);
351
+ const lines = [];
352
+ lines.push(`[SPECCORE_SUBAGENT: ${ctx.subagent}]`);
353
+ if (config) {
354
+ lines.push(`[SPECCORE_SUBAGENT_DESC: ${config.description}]`);
355
+ }
356
+ lines.push(`[SPECCORE_CONTEXT_BUDGET: ${ctx.contextBudget}]`);
357
+ lines.push(`[SPECCORE_CONTEXT_TYPE: ${ctx.contextType}]`);
358
+ lines.push('');
359
+ lines.push('--- 子 Agent 上下文 ---');
360
+ lines.push('');
361
+ return lines.join('\n');
362
+ }
363
+ }
364
+ exports.HeadlessAdapter = HeadlessAdapter;
365
+ // ═══════════════════════════════════════════════════════════
366
+ // QoderSdkAdapter — Qoder SDK 深度集成(预留接口)
367
+ // ═══════════════════════════════════════════════════════════
368
+ class QoderSdkAdapter {
369
+ // private sdkClient: any; // Qoder SDK 客户端(运行时动态加载)
370
+ constructor() {
371
+ this.registry = new Map(subagentRegistry);
372
+ for (const config of DEFAULT_SUBAGENTS) {
373
+ if (!this.registry.has(config.name)) {
374
+ this.registry.set(config.name, config);
375
+ }
376
+ }
377
+ }
378
+ getMode() {
379
+ return 'qoder-sdk';
380
+ }
381
+ registerSubagent(name, config) {
382
+ this.registry.set(name, config);
383
+ }
384
+ getSubagentConfig(name) {
385
+ return this.registry.get(name);
386
+ }
387
+ async prepareContext(ctx) {
388
+ // TODO: 通过 Qoder SDK 创建子 Agent,传递 systemPrompt 和上下文
389
+ // 当前回退到 Headless 实现
390
+ logger_1.logger.warn('[QoderSdkAdapter] SDK 未初始化,回退到 Headless 模式');
391
+ const headless = new HeadlessAdapter();
392
+ return headless.prepareContext(ctx);
393
+ }
394
+ buildActivationPrompt(ctx, nextPrompt) {
395
+ // TODO: 调用 Qoder SDK 创建子 Agent 并触发执行
396
+ // 当前回退到 Headless 实现
397
+ const headless = new HeadlessAdapter();
398
+ return headless.buildActivationPrompt(ctx, nextPrompt);
399
+ }
400
+ }
401
+ exports.QoderSdkAdapter = QoderSdkAdapter;
402
+ // ═══════════════════════════════════════════════════════════
403
+ // 工厂函数
404
+ // ═══════════════════════════════════════════════════════════
405
+ function createAgentAdapter(mode) {
406
+ const envMode = process.env.SPECCORE_AGENT_MODE;
407
+ const effectiveMode = mode || envMode || 'headless';
408
+ if (effectiveMode === 'qoder-sdk') {
409
+ // 检查 Qoder SDK 是否可用
410
+ try {
411
+ // require('@qoder/sdk'); // 运行时检查
412
+ logger_1.logger.info('[AgentAdapter] 使用 Qoder SDK 模式');
413
+ return new QoderSdkAdapter();
414
+ }
415
+ catch {
416
+ logger_1.logger.warn('[AgentAdapter] Qoder SDK 不可用,回退到 Headless 模式');
417
+ return new HeadlessAdapter();
418
+ }
419
+ }
420
+ logger_1.logger.debug('[AgentAdapter] 使用 Headless 模式');
421
+ return new HeadlessAdapter();
422
+ }
423
+ // 默认导出 HeadlessAdapter(向后兼容)
424
+ exports.defaultAdapter = new HeadlessAdapter();
425
+ //# sourceMappingURL=agent-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-adapter.js","sourceRoot":"","sources":["../../src/core/agent-adapter.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,8 @@
10
10
  | 角色 | 优先级 | 条件 | 说明 |
11
11
  |------|--------|------|------|
12
12
  | product-analyst | 100 | — | 业务流程完整性、遗漏识别、术语统一 |
13
- | interaction-designer | 90 | — | 交互状态矩阵、前后端一致性、用户路径 |
14
- | security-reviewer | 70 | project.securityLevel > 2 | 需求中的安全风险预判 |
13
+ | interaction-designer | 90 | — | 交互状态矩阵、前后端一致性、用户路径(叠加 RULES/ 技术栈交互约束) |
14
+ | security-reviewer | 70 | project.securityLevel > 2 | 需求中的安全风险预判(叠加 RULES/ 技术栈安全规则) |
15
15
 
16
16
  ## analyze / confirm-check
17
17
 
@@ -24,7 +24,7 @@
24
24
  | 角色 | 优先级 | 条件 | 说明 |
25
25
  |------|--------|------|------|
26
26
  | task-decomposer | 100 | — | 任务拆分专家 |
27
- | dependency-analyst | 90 | — | 依赖关系分析 |
27
+ | dependency-analyst | 90 | — | 依赖关系分析(叠加 RULES/ 技术栈依赖模式) |
28
28
  | effort-estimator | 70 | — | 工时估算 |
29
29
 
30
30
  ## plan / default
@@ -38,31 +38,31 @@
38
38
 
39
39
  | 角色 | 优先级 | 条件 | 说明 |
40
40
  |------|--------|------|------|
41
- | compiler | 100 | — | 编译可行性检查 |
42
- | test-engineer | 90 | — | 单元测试执行与覆盖率 |
43
- | security-reviewer | 80 | — | 安全漏洞扫描 |
44
- | performance-expert | 50 | — | 性能回归检测 |
45
- | doc-sync-agent | 40 | — | 文档与实际代码一致性 |
41
+ | compiler | 100 | — | 编译可行性检查(叠加 RULES/ 技术栈构建规则) |
42
+ | test-engineer | 90 | — | 单元测试执行与覆盖率(叠加 RULES/ 技术栈测试规范) |
43
+ | security-reviewer | 80 | — | 安全漏洞扫描(叠加 RULES/ 技术栈安全规则) |
44
+ | performance-expert | 50 | — | 性能回归检测(叠加 RULES/ 技术栈性能规范) |
45
+ | doc-sync-agent | 40 | — | 文档与实际代码一致性(叠加 RULES/ 技术栈文档格式) |
46
46
 
47
47
  ## change / impact
48
48
 
49
49
  | 角色 | 优先级 | 条件 | 说明 |
50
50
  |------|--------|------|------|
51
- | impact-analyst | 100 | — | 变更影响范围分析 |
52
- | regression-tester | 80 | — | 回归测试范围 |
51
+ | impact-analyst | 100 | — | 变更影响范围分析(叠加 RULES/ 技术栈模块结构) |
52
+ | regression-tester | 80 | — | 回归测试范围(叠加 RULES/ 技术栈测试策略) |
53
53
 
54
54
  ## pr / review
55
55
 
56
56
  | 角色 | 优先级 | 条件 | 说明 |
57
57
  |------|--------|------|------|
58
- | code-reviewer | 100 | — | 代码质量审查 |
59
- | security-reviewer | 90 | — | 安全审查 |
60
- | test-reviewer | 80 | — | 测试完整性审查 |
58
+ | code-reviewer | 100 | — | 代码质量审查(叠加 RULES/ 技术栈编码规范) |
59
+ | security-reviewer | 90 | — | 安全审查(叠加 RULES/ 技术栈安全规则) |
60
+ | test-reviewer | 80 | — | 测试完整性审查(叠加 RULES/ 技术栈测试规范) |
61
61
 
62
62
  ## audit / default
63
63
 
64
64
  | 角色 | 优先级 | 条件 | 说明 |
65
65
  |------|--------|------|------|
66
- | security-reviewer | 100 | — | 安全审计 |
66
+ | security-reviewer | 100 | — | 安全审计(叠加 RULES/ 技术栈安全规则) |
67
67
  | compliance-checker | 90 | project.industry == 'finance' | 合规检查(金融行业) |
68
- | performance-expert | 70 | — | 性能基线审计 |
68
+ | performance-expert | 70 | — | 性能基线审计(叠加 RULES/ 技术栈性能规范) |
@@ -13,6 +13,12 @@ activations:
13
13
  - 检查是否符合项目编码规范
14
14
  - 识别潜在的性能问题和逻辑错误
15
15
 
16
+ ## 执行前准备
17
+
18
+ 1. **读取技术栈规则**:读取 `.speccore/RULES/` 中 `appliesTo` 匹配当前项目技术栈的规则文件。
19
+ 2. **叠加检查项**:将 RULES 中的技术栈专属编码规范合并到下方审查清单。
20
+ 3. **按优先级执行**:先执行通用检查,再执行技术栈专属检查。
21
+
16
22
  ## 审查清单
17
23
 
18
24
  ### 代码质量
@@ -32,6 +38,9 @@ activations:
32
38
  - [ ] 依赖是否合理(无循环依赖)
33
39
  - [ ] 是否符合 SOLID 原则
34
40
 
41
+ ### 技术栈专属检查(根据 RULES/ 叠加)
42
+ - [ ] 在此处补充从 RULES/ 中读取的匹配技术栈的编码规范检查项
43
+
35
44
  ## 输出格式
36
45
 
37
46
  ```markdown
@@ -13,12 +13,21 @@ activations:
13
13
  - 识别语法错误和类型错误
14
14
  - 确保代码能直接运行
15
15
 
16
+ ## 执行前准备
17
+
18
+ 1. **读取技术栈规则**:读取 `.speccore/RULES/` 中 `appliesTo` 匹配当前项目技术栈的规则文件。
19
+ 2. **确定编译方式**:根据技术栈确定编译/构建命令(如 `tsc`、`javac`、`go build`、`gradle build` 等)和配置文件。
20
+ 3. **叠加检查项**:将 RULES 中的技术栈专属编译要求合并到下方检查清单。
21
+
16
22
  ## 检查项
17
23
 
24
+ ### 通用检查
18
25
  1. **语法检查**:无语法错误
19
- 2. **类型检查**:TypeScript 类型通过
20
- 3. **导入检查**:所有依赖可解析
21
- 4. **配置检查**:tsconfig.json / package.json 配置正确
26
+ 2. **导入检查**:所有依赖可解析
27
+ 3. **配置检查**:构建配置文件正确(根据技术栈确定,如 tsconfig.json / pom.xml / build.gradle 等)
28
+
29
+ ### 技术栈专属检查(根据 RULES/ 叠加)
30
+ - 在此处补充从 RULES/ 中读取的匹配规则中的编译/构建要求
22
31
 
23
32
  ## 输出
24
33
 
@@ -7,6 +7,12 @@ activations:
7
7
 
8
8
  # 角色:依赖关系分析师 (Dependency Analyst)
9
9
 
10
+ ## 执行前准备
11
+
12
+ 1. **读取技术栈规则**:读取 `.speccore/RULES/` 中 `appliesTo` 匹配当前项目技术栈的规则文件。
13
+ 2. **理解技术栈依赖模式**:不同技术栈的依赖关系不同(如 Maven 的模块依赖、npm 的包依赖、前端组件的 props 依赖等)。
14
+ 3. **叠加分析维度**:将 RULES 中的技术栈专属依赖信息合并到下方分析维度。
15
+
10
16
  ## 职责
11
17
 
12
18
  - 识别任务间的依赖关系(数据依赖、接口依赖、时序依赖)
@@ -19,6 +25,7 @@ activations:
19
25
  2. **接口依赖**:前端任务依赖后端任务的 API 契约
20
26
  3. **时序依赖**:某些任务必须在其他任务完成后才能开始
21
27
  4. **资源依赖**:共享组件/工具/配置的依赖
28
+ 5. **技术栈特有依赖**:构建工具链、框架版本、平台特有 API 的依赖关系
22
29
 
23
30
  ## 输出格式
24
31
 
@@ -7,6 +7,12 @@ activations:
7
7
 
8
8
  # 角色:文档同步检查员 (Doc Sync Agent)
9
9
 
10
+ ## 执行前准备
11
+
12
+ 1. **读取技术栈规则**:读取 `.speccore/RULES/` 中 `appliesTo` 匹配当前项目技术栈的规则文件。
13
+ 2. **确定文档格式**:根据技术栈确定 API 文档格式(如 OpenAPI、GraphQL Schema、gRPC Proto 等)和文档生成工具。
14
+ 3. **叠加检查项**:将 RULES 中的技术栈专属文档规范合并到下方检查清单。
15
+
10
16
  ## 职责
11
17
 
12
18
  - 检查代码与文档的一致性
@@ -19,6 +25,7 @@ activations:
19
25
  2. **数据模型**:文档中的字段定义是否与代码一致
20
26
  3. **业务规则**:代码逻辑是否与需求文档一致
21
27
  4. **注释时效**:注释是否描述当前代码行为
28
+ 5. **技术栈专属文档**:框架特有配置、类型定义、路由声明等是否与文档同步
22
29
 
23
30
  ## 输出
24
31
 
@@ -7,6 +7,12 @@ activations:
7
7
 
8
8
  # 角色:影响范围分析师 (Impact Analyst)
9
9
 
10
+ ## 执行前准备
11
+
12
+ 1. **读取技术栈规则**:读取 `.speccore/RULES/` 中 `appliesTo` 匹配当前项目技术栈的规则文件。
13
+ 2. **理解技术栈模块结构**:不同技术栈的模块边界不同(如 Maven 多模块、npm workspace、Gradle 子项目等)。
14
+ 3. **叠加分析维度**:将 RULES 中的技术栈专属结构信息合并到下方分析维度。
15
+
10
16
  ## 职责
11
17
 
12
18
  - 分析变更对现有代码、文档、测试的影响范围
@@ -20,6 +26,7 @@ activations:
20
26
  3. **数据影响**:数据库 schema 变更是否需要迁移
21
27
  4. **文档影响**:哪些文档需要同步更新
22
28
  5. **测试影响**:哪些测试用例需要新增/修改
29
+ 6. **技术栈特有影响**:构建配置、依赖版本、框架升级等是否需要同步调整
23
30
 
24
31
  ## 输出格式
25
32
 
@@ -1,5 +1,18 @@
1
+ ---
2
+ activations:
3
+ - command: analyze
4
+ phase: clarify
5
+ condition: ""
6
+ ---
7
+
1
8
  # Agent: interaction-designer
2
9
 
10
+ ## 执行前准备
11
+
12
+ 1. **读取技术栈规则**:读取 `.speccore/RULES/` 中 `appliesTo` 匹配当前项目技术栈的规则文件。
13
+ 2. **了解技术栈交互能力边界**:不同技术栈的交互能力不同(如 Web 的 WebSocket/SSE、React Native 的原生模块能力、小程序的受限 API 等)。
14
+ 3. **叠加约束检查**:将 RULES 中的技术栈专属交互约束合并到下方检查清单。
15
+
3
16
  ## 职责
4
17
 
5
18
  - 设计清晰直观的页面信息架构
@@ -37,6 +50,10 @@
37
50
  - [ ] 前端展示的数据格式 vs 后端返回的格式
38
51
  - [ ] 前端状态管理 vs 后端实体状态是否同步
39
52
  - [ ] 前端错误码 vs 后端错误码映射
53
+ - [ ] 交互实现是否符合技术栈能力边界(如实时通信方案是否受平台限制)
54
+
55
+ ### 技术栈专属检查(根据 RULES/ 叠加)
56
+ - [ ] 在此处补充从 RULES/ 中读取的匹配技术栈的交互约束(如移动端手势、Web 无障碍规范等)
40
57
 
41
58
  ### 用户操作路径优化
42
59
  - [ ] 最短路径原则:完成核心目标的最少点击数