speccore 8.3.167 → 8.3.169
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.
- package/README.md +6 -3
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +34 -0
- package/dist/commands/analyze.js.map +1 -1
- package/dist/core/agent-adapter.d.ts +48 -9
- package/dist/core/agent-adapter.d.ts.map +1 -1
- package/dist/core/agent-adapter.js +221 -24
- package/dist/core/agent-adapter.js.map +1 -1
- package/dist/core/ask-host-ai.d.ts +5 -2
- package/dist/core/ask-host-ai.d.ts.map +1 -1
- package/dist/core/ask-host-ai.js +26 -7
- package/dist/core/ask-host-ai.js.map +1 -1
- package/dist/core/schemas/context.schema.d.ts +3 -63
- package/dist/core/schemas/context.schema.d.ts.map +1 -1
- package/dist/core/schemas/iteration.schema.d.ts +30 -106
- package/dist/core/schemas/iteration.schema.d.ts.map +1 -1
- package/dist/core/schemas/platform.schema.d.ts +3 -43
- package/dist/core/schemas/platform.schema.d.ts.map +1 -1
- package/dist/core/schemas/task.schema.d.ts +71 -127
- package/dist/core/schemas/task.schema.d.ts.map +1 -1
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -337,7 +337,7 @@ speccore status # 查看分析进度和过
|
|
|
337
337
|
|
|
338
338
|
```bash
|
|
339
339
|
npm install -g speccore
|
|
340
|
-
speccore --version # v8.3.
|
|
340
|
+
speccore --version # v8.3.167
|
|
341
341
|
```
|
|
342
342
|
|
|
343
343
|
## 命令列表
|
|
@@ -380,15 +380,18 @@ speccore --version # v8.3.95
|
|
|
380
380
|
- **终端**:Unicode 框线美化输出
|
|
381
381
|
- **AI 调用**:自动生成 Ocean 主题 HTML 页面(四边脉冲扫描线)
|
|
382
382
|
|
|
383
|
-
## 🤖
|
|
383
|
+
## 🤖 多层 AI 架构(v8.3.167+)
|
|
384
384
|
|
|
385
385
|
```
|
|
386
386
|
@spec-ask "..." (AI IDE 入口)
|
|
387
387
|
├─ 🧠 自有 LLM → OpenAI / Ollama(SPECCORE_LLM_KEY 环境变量)
|
|
388
388
|
├─ 🤖 宿主 AI → WorkBuddy / TRAE / Qoder(自动检测)
|
|
389
|
-
|
|
389
|
+
├─ 📐 规则引擎 → 18 条命令 KB + 4 预定义工作流(永远可用)
|
|
390
|
+
└─ 🎭 多 Subagent → 按阶段/端/模块分配专属角色(步骤隔离)
|
|
390
391
|
```
|
|
391
392
|
|
|
393
|
+
**多 Subagent 协作**:大项目自动启用功能模块级分批,每个模块由独立 Agent 深入分析,避免上下文溢出。
|
|
394
|
+
|
|
392
395
|
零配置:没配 Key 自动降级,功能不受影响。
|
|
393
396
|
|
|
394
397
|
## 📖 文档
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/analyze.js
CHANGED
|
@@ -66,6 +66,7 @@ const analyze_engine_1 = require("../core/analyze-engine");
|
|
|
66
66
|
const fs_extra_2 = require("fs-extra");
|
|
67
67
|
const prompt_builder_1 = require("../core/prompt-builder");
|
|
68
68
|
// v8.3.160+: 子 Agent 适配层(analyze 自定义 Prompt 中手动注入)
|
|
69
|
+
// v8.3.169+: 新增 dispatchSubagent 支持 Qoder SDK 直接调度
|
|
69
70
|
const agent_adapter_1 = require("../core/agent-adapter");
|
|
70
71
|
const questions_1 = require("../core/questions");
|
|
71
72
|
const platform_registry_1 = require("../core/platform-registry");
|
|
@@ -1007,6 +1008,39 @@ async function analyzeCommand(options) {
|
|
|
1007
1008
|
process.stdout.write(`[SPECCORE_CONTEXT_BUDGET: 8000]\n`);
|
|
1008
1009
|
process.stdout.write(`[SPECCORE_CONTEXT_TYPE: platform-only]\n\n`);
|
|
1009
1010
|
}
|
|
1011
|
+
// v8.3.169+: 尝试通过 Qoder SDK 直接调度子 Agent(Qoder 环境且非 TTY 模式)
|
|
1012
|
+
const activeSubagent = featureSubagent || platformSubagent;
|
|
1013
|
+
if (activeSubagent && !process.stdout.isTTY) {
|
|
1014
|
+
try {
|
|
1015
|
+
const agentCtx = {
|
|
1016
|
+
subagent: activeSubagent,
|
|
1017
|
+
iteration: iter || '',
|
|
1018
|
+
platform: platformMatch?.[1],
|
|
1019
|
+
contextBudget: featureSubagent ? 10000 : 8000,
|
|
1020
|
+
contextType: featureSubagent ? 'full' : 'platform-only',
|
|
1021
|
+
cwd: _projectRoot,
|
|
1022
|
+
};
|
|
1023
|
+
const dispatchResult = await (0, agent_adapter_1.dispatchSubagent)(agentCtx, prompt);
|
|
1024
|
+
if (dispatchResult && dispatchResult.success) {
|
|
1025
|
+
logger_1.logger.info(`[analyze] 子 Agent ${activeSubagent} SDK 调度成功`);
|
|
1026
|
+
process.stdout.write(`\n[SPECCORE_STEP_DONE]\n`);
|
|
1027
|
+
process.stdout.write(`[SPECCORE_RESULT] 子 Agent ${activeSubagent} 通过 Qoder SDK 完成执行\n`);
|
|
1028
|
+
if (dispatchResult.filesChanged && dispatchResult.filesChanged.length > 0) {
|
|
1029
|
+
process.stdout.write(`📄 文件变更: ${dispatchResult.filesChanged.join(', ')}\n`);
|
|
1030
|
+
}
|
|
1031
|
+
if (dispatchResult.content) {
|
|
1032
|
+
process.stdout.write(`\n--- 执行结果 ---\n${dispatchResult.content.slice(0, 3000)}${dispatchResult.content.length > 3000 ? '\n... (截断)' : ''}\n`);
|
|
1033
|
+
}
|
|
1034
|
+
// 提示用户审查结果后手动 --apply
|
|
1035
|
+
process.stdout.write(`\n> 请审查上述结果,确认后执行 speccore analyze --apply 写入文档\n`);
|
|
1036
|
+
process.exitCode = 0;
|
|
1037
|
+
return;
|
|
1038
|
+
}
|
|
1039
|
+
}
|
|
1040
|
+
catch (e) {
|
|
1041
|
+
logger_1.logger.debug(`[analyze] SDK 调度尝试失败: ${e.message},回退到 Prompt 模式`);
|
|
1042
|
+
}
|
|
1043
|
+
}
|
|
1010
1044
|
process.stdout.write(`[SPECCORE_PROMPT]\n${finalPrompt}`);
|
|
1011
1045
|
process.exitCode = 10;
|
|
1012
1046
|
return;
|