@winspan/claude-forge 2.4.1 → 2.6.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.
@@ -5,6 +5,7 @@ export declare class PipelineAnalyzer {
5
5
  private api;
6
6
  private detector;
7
7
  private conventionManager?;
8
+ private enforcer;
8
9
  constructor(api: AIProvider, conventionManager?: ConventionManager);
9
10
  /**
10
11
  * 将一句话需求分解为任务树(AI 智能编排)
@@ -32,6 +33,11 @@ export declare class PipelineAnalyzer {
32
33
  * 解析 AI 智能编排响应
33
34
  */
34
35
  private parseIntelligentResponse;
36
+ /**
37
+ * 确保每个 plannedPhase 都有对应 task
38
+ * 当 enforcer 补全了新阶段时,创建最小占位任务
39
+ */
40
+ private ensureTasksForPhases;
35
41
  /**
36
42
  * 降级方案:AI 失败时使用的默认编排
37
43
  */
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/pipeline/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAK1D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAW7E,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,iBAAiB,CAAC,CAAoB;gBAElC,GAAG,EAAE,UAAU,EAAE,iBAAiB,CAAC,EAAE,iBAAiB;IAMlE;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QACjE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;QAC9C,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,eAAe,GAAG,OAAO,CAAC;QACxF,aAAa,EAAE,aAAa,EAAE,CAAC;QAC/B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IA4CF;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAY9B,+CAA+C;IAC/C,OAAO,CAAC,sBAAsB;IA4C9B,wCAAwC;IACxC,OAAO,CAAC,qBAAqB;IAY7B,mDAAmD;IACnD,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAyDhC;;OAEG;IACH,OAAO,CAAC,YAAY;CAgErB"}
1
+ {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/pipeline/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAK1D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAY7E,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,iBAAiB,CAAC,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAA+B;gBAEnC,GAAG,EAAE,UAAU,EAAE,iBAAiB,CAAC,EAAE,iBAAiB;IAMlE;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QACjE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;QAC9C,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,eAAe,GAAG,OAAO,CAAC;QACxF,aAAa,EAAE,aAAa,EAAE,CAAC;QAC/B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IA6DF;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAY9B,+CAA+C;IAC/C,OAAO,CAAC,sBAAsB;IA4C9B,wCAAwC;IACxC,OAAO,CAAC,qBAAqB;IAY7B,mDAAmD;IACnD,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAyDhC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;OAEG;IACH,OAAO,CAAC,YAAY;CAgErB"}
@@ -1,10 +1,12 @@
1
1
  import { TechStackDetector } from '../claudemd/detector.js';
2
2
  import { logger } from '../utils/logger.js';
3
3
  import { PromptRegistry } from '../prompts/registry.js';
4
+ import { OrchestrationEnforcer } from './orchestration-enforcer.js';
4
5
  export class PipelineAnalyzer {
5
6
  api;
6
7
  detector;
7
8
  conventionManager;
9
+ enforcer = new OrchestrationEnforcer();
8
10
  constructor(api, conventionManager) {
9
11
  this.api = api;
10
12
  this.detector = new TechStackDetector();
@@ -43,8 +45,18 @@ export class PipelineAnalyzer {
43
45
  logger.warn('[Pipeline] AI 输出解析失败,使用降级方案');
44
46
  return this.fallbackPlan(requirement, techStack);
45
47
  }
46
- logger.info(`[Pipeline] 智能分解完成:${result.complexity} | ${result.taskType} | ${result.plannedPhases.length} 阶段`);
47
- return { ...result, techStack };
48
+ // 编排约束补全:应用 after-node 规则,确保关键阶段不缺失
49
+ const conventions = this.conventionManager?.getActiveConventions(projectPath) ?? [];
50
+ const enforcedPhases = this.enforcer.enforce(result.plannedPhases, result.complexity, result.taskType, conventions);
51
+ // 如果阶段被补全,同步补齐 tasks(最小化占位任务)
52
+ const enforcedTasks = this.ensureTasksForPhases(result.tasks, enforcedPhases);
53
+ logger.info(`[Pipeline] 智能分解完成:${result.complexity} | ${result.taskType} | ${enforcedPhases.length} 阶段`);
54
+ return {
55
+ ...result,
56
+ techStack,
57
+ plannedPhases: enforcedPhases,
58
+ tasks: enforcedTasks,
59
+ };
48
60
  }
49
61
  catch (err) {
50
62
  logger.error(`[Pipeline] 分解失败:${err}`);
@@ -177,6 +189,26 @@ export class PipelineAnalyzer {
177
189
  return null;
178
190
  }
179
191
  }
192
+ /**
193
+ * 确保每个 plannedPhase 都有对应 task
194
+ * 当 enforcer 补全了新阶段时,创建最小占位任务
195
+ */
196
+ ensureTasksForPhases(tasks, plannedPhases) {
197
+ const existingPhases = new Set(tasks.map(t => t.phase));
198
+ const result = [...tasks];
199
+ for (const phase of plannedPhases) {
200
+ if (phase === 'done' || existingPhases.has(phase))
201
+ continue;
202
+ result.push({
203
+ title: `执行 ${phase} 阶段任务`,
204
+ phase,
205
+ status: 'pending',
206
+ description: `由编排约束补全器自动补充的 ${phase} 阶段任务`,
207
+ dependencies: [],
208
+ });
209
+ }
210
+ return result;
211
+ }
180
212
  /**
181
213
  * 降级方案:AI 失败时使用的默认编排
182
214
  */
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../src/pipeline/analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../src/pipeline/analyzer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"completion-engine.d.ts","sourceRoot":"","sources":["../../src/pipeline/completion-engine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAK3E,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;CAC3C;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,iBAAiB,CAA2B;IAEpD;;;;;;;;;;;;OAYG;IACH,MAAM,CACJ,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,UAAU,EAAE,EAC1B,SAAS,EAAE,QAAQ,EAAE,EACrB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,UAAU,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAC7C,kBAAkB;IAuGrB;;OAEG;IACH,OAAO,CAAC,cAAc;CASvB"}
1
+ {"version":3,"file":"completion-engine.d.ts","sourceRoot":"","sources":["../../src/pipeline/completion-engine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAK3E,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;CAC3C;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,iBAAiB,CAA2B;IAEpD;;;;;;;;;;;;OAYG;IACH,MAAM,CACJ,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,UAAU,EAAE,EAC1B,SAAS,EAAE,QAAQ,EAAE,EACrB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,UAAU,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAC7C,kBAAkB;IAoHrB;;OAEG;IACH,OAAO,CAAC,cAAc;CASvB"}
@@ -25,13 +25,50 @@ export class CompletionEngine {
25
25
  decide(node, nodeType, event, recentEvents, artifacts, eventCount, lastActivityAt, lastArtifactAt, complexity) {
26
26
  const reasons = [];
27
27
  let confidence = 0; // 0-100
28
+ // 产物完整性(先计算,用于后续门禁判断)
29
+ let hasRequiredArtifacts = false;
30
+ let artifactValidationPassed = false;
31
+ if (nodeType.expected_artifacts) {
32
+ const requiredArtifacts = nodeType.expected_artifacts.filter(a => a.required !== false);
33
+ hasRequiredArtifacts = requiredArtifacts.length > 0 && complexity !== 'simple';
34
+ const validation = this.artifactValidator.validate(artifacts, nodeType.expected_artifacts, complexity);
35
+ artifactValidationPassed = validation.passed;
36
+ if (validation.passed) {
37
+ reasons.push('产物完整');
38
+ confidence += 30;
39
+ }
40
+ }
28
41
  // 第一层:精准检测
42
+ let hasExplicitSignal = false;
29
43
  if (nodeType.completion.explicit_signal) {
30
44
  if (this.detector.detectExplicitSignal(event, nodeType.completion.explicit_signal)) {
45
+ hasExplicitSignal = true;
31
46
  reasons.push('显式信号');
32
47
  confidence += 40;
33
48
  }
34
49
  }
50
+ // 有必需产物的节点:必须同时满足显式信号 + 产物验证通过,关键词/推断不足以推进
51
+ if (hasRequiredArtifacts) {
52
+ if (!hasExplicitSignal || !artifactValidationPassed) {
53
+ const missing = !hasExplicitSignal ? '缺少显式完成信号' : '产物验证未通过';
54
+ logger.debug(`[CompletionEngine] 🔒 产物门禁:${missing},阻断推进`);
55
+ return {
56
+ shouldAdvance: false,
57
+ confidence: Math.min(confidence, 59),
58
+ reasons: [...reasons, `产物门禁(${missing})`],
59
+ method: 'precise',
60
+ };
61
+ }
62
+ // 显式信号 + 产物验证均通过,直接推进
63
+ logger.info(`[CompletionEngine] ✅ 决策推进(显式信号 + 产物验证通过)`);
64
+ return {
65
+ shouldAdvance: true,
66
+ confidence: 100,
67
+ reasons: [...reasons],
68
+ method: 'precise',
69
+ };
70
+ }
71
+ // 无必需产物的节点:保留原有推断逻辑
35
72
  if (nodeType.completion.heuristic?.keywords) {
36
73
  if (this.detector.detectKeywords(event, nodeType.completion.heuristic.keywords)) {
37
74
  reasons.push('关键词匹配');
@@ -44,19 +81,6 @@ export class CompletionEngine {
44
81
  confidence += 25;
45
82
  }
46
83
  }
47
- // 产物完整性
48
- let hasRequiredArtifacts = false;
49
- let artifactValidationPassed = false;
50
- if (nodeType.expected_artifacts) {
51
- const requiredArtifacts = nodeType.expected_artifacts.filter(a => a.required !== false);
52
- hasRequiredArtifacts = requiredArtifacts.length > 0 && complexity !== 'simple';
53
- const validation = this.artifactValidator.validate(artifacts, nodeType.expected_artifacts, complexity);
54
- artifactValidationPassed = validation.passed;
55
- if (validation.passed) {
56
- reasons.push('产物完整');
57
- confidence += 30;
58
- }
59
- }
60
84
  // 第二层:智能推断
61
85
  if (this.detector.detectSemanticCompletion(event)) {
62
86
  reasons.push('语义完成信号');
@@ -85,17 +109,6 @@ export class CompletionEngine {
85
109
  reasons.push(`活动阈值(${eventCount}/${threshold})`);
86
110
  confidence += 40;
87
111
  }
88
- // 产物门禁:有必需产物但验证失败时,硬阻断推进(无绕过后门)
89
- // 移除显式信号和绝对超时的绕过逻辑,确保产物验证是硬约束
90
- if (hasRequiredArtifacts && !artifactValidationPassed) {
91
- logger.debug(`[CompletionEngine] 🔒 产物门禁:必需产物未生成,阻断推进(当前置信度 ${confidence}%)`);
92
- return {
93
- shouldAdvance: false,
94
- confidence: Math.min(confidence, 59),
95
- reasons: [...reasons, '产物门禁(必需产物未生成)'],
96
- method: 'precise',
97
- };
98
- }
99
112
  // 决策:confidence >= 60 即推进
100
113
  const shouldAdvance = confidence >= 60;
101
114
  if (shouldAdvance) {
@@ -1 +1 @@
1
- {"version":3,"file":"completion-engine.js","sourceRoot":"","sources":["../../src/pipeline/completion-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"completion-engine.js","sourceRoot":"","sources":["../../src/pipeline/completion-engine.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,9 @@ export declare class DynamicNodeExecutor implements INodeExecutor {
28
28
  private lastArtifactAt;
29
29
  /** 最近事件列表(key = pipelineId:nodeId,保留最近 10 条) */
30
30
  private recentEvents;
31
- /** 产物阶段状态(uninitialized/bootstrapped/enriching/ready) */
31
+ /** 产物阶段状态(uninitialized/bootstrapped/enriching/ready)
32
+ * @deprecated 骨架自动创建已禁用,状态机不再维护
33
+ */
32
34
  private artifactStage;
33
35
  /** 连续非 Write/Edit 工具调用次数(熔断器) */
34
36
  private consecutiveNonWriteCount;
@@ -131,9 +133,12 @@ export declare class DynamicNodeExecutor implements INodeExecutor {
131
133
  private ensureRequiredArtifactSkeletons;
132
134
  /**
133
135
  * 生成满足硬约束的富文本模板(> 300 字符、> 300 字节)
136
+ * @deprecated 骨架自动创建已禁用
134
137
  */
135
138
  private generateRichTemplate;
136
- /** 根据 path_pattern 推导骨架文件路径 */
139
+ /** 根据 path_pattern 推导骨架文件路径
140
+ * @deprecated 骨架自动创建已禁用
141
+ */
137
142
  private resolveSkeletonPath;
138
143
  /**
139
144
  * 将 path_pattern 转换为更明确的路径要求说明
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-node-executor.d.ts","sourceRoot":"","sources":["../../src/pipeline/dynamic-node-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dynamic-node-executor.d.ts","sourceRoot":"","sources":["../../src/pipeline/dynamic-node-executor.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ import { SemanticValidator } from './semantic-validator.js';
15
15
  import { StepOrchestrator } from './step-orchestrator.js';
16
16
  import { StepPromptBuilder } from './step-prompt-builder.js';
17
17
  import { StepValidator } from './step-validator.js';
18
+ import { StepGateKeeper as StepGateKeeperImpl } from './step-gate-keeper.js';
18
19
  import { logger } from '../utils/logger.js';
19
20
  import { memoryManager } from '../utils/memory-manager.js';
20
21
  import { CACHE, TIME } from '../constants.js';
@@ -34,7 +35,9 @@ export class DynamicNodeExecutor {
34
35
  lastArtifactAt = memoryManager.register('dynamicNode:lastArtifact', { max: CACHE.PHASE_MANAGER_MAX, ttl: TIME.DAY });
35
36
  /** 最近事件列表(key = pipelineId:nodeId,保留最近 10 条) */
36
37
  recentEvents = memoryManager.register('dynamicNode:recentEvents', { max: CACHE.PHASE_MANAGER_MAX, ttl: TIME.DAY });
37
- /** 产物阶段状态(uninitialized/bootstrapped/enriching/ready) */
38
+ /** 产物阶段状态(uninitialized/bootstrapped/enriching/ready)
39
+ * @deprecated 骨架自动创建已禁用,状态机不再维护
40
+ */
38
41
  artifactStage = memoryManager.register('dynamicNode:artifactStage', { max: CACHE.PHASE_MANAGER_MAX, ttl: TIME.DAY });
39
42
  /** 连续非 Write/Edit 工具调用次数(熔断器) */
40
43
  consecutiveNonWriteCount = memoryManager.register('dynamicNode:consecutiveNonWrite', { max: CACHE.PHASE_MANAGER_MAX, ttl: TIME.DAY });
@@ -60,8 +63,7 @@ export class DynamicNodeExecutor {
60
63
  }
61
64
  /** 初始化 StepGateKeeper(需要 HandlerContext) */
62
65
  initStepGateKeeper(handlerContext) {
63
- const { StepGateKeeper } = require('./step-gate-keeper.js');
64
- this.stepGateKeeper = new StepGateKeeper(handlerContext);
66
+ this.stepGateKeeper = new StepGateKeeperImpl(handlerContext);
65
67
  }
66
68
  /** 获取 StepOrchestrator(供 PipelineEngine 使用) */
67
69
  getStepOrchestrator() {
@@ -92,9 +94,7 @@ export class DynamicNodeExecutor {
92
94
  if (this.stepOrchestrator.isStepModeEnabled(currentNode)) {
93
95
  return this.getStepInstruction(pipeline, currentNode, nodeType);
94
96
  }
95
- // 传统模式:原有逻辑
96
- const key = `${pipeline.id}:${currentNode.id}`;
97
- const bootstrapped = this.ensureRequiredArtifactSkeletons(key, pipeline, nodeType);
97
+ // 传统模式
98
98
  let instruction = `当前节点:${nodeType.name}\n${nodeType.description}`;
99
99
  // 添加产物要求说明
100
100
  if (nodeType.expected_artifacts && nodeType.expected_artifacts.length > 0) {
@@ -108,9 +108,6 @@ export class DynamicNodeExecutor {
108
108
  instruction += '\n\n请严格按路径要求使用 Write 工具生成这些文件(路径不匹配将被判定为未完成),完成后执行 echo "FORGE_NODE_DONE"。';
109
109
  }
110
110
  }
111
- if (bootstrapped.length > 0) {
112
- instruction += `\n\n[Forge 自动兜底] 已自动创建产物骨架:\n${bootstrapped.map(p => `- ${p}`).join('\n')}\n请立即使用 Edit 工具将你的分析内容写入以上文件。`;
113
- }
114
111
  if (nodeType.instruction_suffix) {
115
112
  instruction += `\n\n${nodeType.instruction_suffix}`;
116
113
  }
@@ -235,9 +232,8 @@ export class DynamicNodeExecutor {
235
232
  async checkAndAdvanceTraditional(pipeline, currentNode, nodeType, event, qualityGate, key) {
236
233
  // ── 无写入进展熔断器 ──────────────────────────────────────────────────────
237
234
  const nonWriteCount = this.consecutiveNonWriteCount.get(key) || 0;
238
- const stage = this.artifactStage.get(key) ?? 'uninitialized';
239
- if (nonWriteCount >= DynamicNodeExecutor.CONSECUTIVE_NON_WRITE_BLOCK && stage !== 'ready') {
240
- // 骨架已存在但 Claude 仍不写入 → 硬阻断
235
+ if (nonWriteCount >= DynamicNodeExecutor.CONSECUTIVE_NON_WRITE_BLOCK) {
236
+ // Claude 长时间不写入 硬阻断
241
237
  logger.error(`[Pipeline:Dynamic:Node] ❌ 熔断:节点 ${currentNode.nodeTypeId} 连续 ${nonWriteCount} 次非写入工具调用`);
242
238
  const requiredArtifacts = nodeType.expected_artifacts?.filter(c => c.required !== false) ?? [];
243
239
  const artifactList = requiredArtifacts.map(c => {
@@ -252,10 +248,10 @@ export class DynamicNodeExecutor {
252
248
  必需产物:
253
249
  ${artifactList}
254
250
 
255
- 骨架文件已自动创建,请立即使用 Edit 工具将分析内容写入上述文件,然后执行 echo "FORGE_NODE_DONE"。`,
251
+ 请立即使用 Write 工具创建产物文件并写入实质内容,然后执行 echo "FORGE_NODE_DONE"。`,
256
252
  };
257
253
  }
258
- if (nonWriteCount >= DynamicNodeExecutor.CONSECUTIVE_NON_WRITE_WARN && stage !== 'ready') {
254
+ if (nonWriteCount >= DynamicNodeExecutor.CONSECUTIVE_NON_WRITE_WARN) {
259
255
  // 警告:即将熔断,注入一次性提醒
260
256
  logger.warn(`[Pipeline:Dynamic:Node] ⚠️ 熔断预警:节点 ${currentNode.nodeTypeId} 连续 ${nonWriteCount} 次非写入(阈值 ${DynamicNodeExecutor.CONSECUTIVE_NON_WRITE_BLOCK})`);
261
257
  const requiredArtifacts = nodeType.expected_artifacts?.filter(c => c.required !== false) ?? [];
@@ -284,8 +280,7 @@ ${artifactList}
284
280
  const validation = this.artifactValidator.validate(artifacts, nodeType.expected_artifacts, pipeline.complexity);
285
281
  if (!decision.shouldAdvance) {
286
282
  // 产物验证失败且达到最大重试次数 → 硬阻断
287
- // 仅在 enriching/ready 阶段(已有写入行为)才触发重试门禁,避免 uninitialized/bootstrapped 阶段过早锁死
288
- if (!validation.passed && pipeline.complexity !== 'simple' && (stage === 'enriching' || stage === 'ready')) {
283
+ if (!validation.passed && pipeline.complexity !== 'simple') {
289
284
  const retryKey = `${pipeline.id}:${currentNode.id}`;
290
285
  const retries = this.artifactRetryCount.get(retryKey) ?? 0;
291
286
  if (retries >= DynamicNodeExecutor.MAX_ARTIFACT_RETRIES) {
@@ -345,8 +340,7 @@ ${artifactList || missing}
345
340
  summary: `完成节点:${nodeType.name},产出 ${artifacts.length} 个产物(${decision.method},置信度 ${decision.confidence}%)`,
346
341
  };
347
342
  // 产物验证失败:simple 任务放行,moderate/complex 任务强制重新生成
348
- // 仅在 enriching/ready 阶段(已有写入行为)才触发重试门禁,避免 uninitialized/bootstrapped 阶段过早锁死
349
- if (!validation.passed && pipeline.complexity !== 'simple' && (stage === 'enriching' || stage === 'ready')) {
343
+ if (!validation.passed && pipeline.complexity !== 'simple') {
350
344
  const retryKey = `${pipeline.id}:${currentNode.id}`;
351
345
  const retries = this.artifactRetryCount.get(retryKey) ?? 0;
352
346
  if (retries < DynamicNodeExecutor.MAX_ARTIFACT_RETRIES) {
@@ -611,11 +605,8 @@ ${missingList}
611
605
  this.lastArtifactAt.set(key, Date.now());
612
606
  // 重置连续非写入计数
613
607
  this.consecutiveNonWriteCount.set(key, 0);
614
- // 推进产物阶段
615
- const stage = this.artifactStage.get(key) ?? 'uninitialized';
616
- if (stage === 'uninitialized' || stage === 'bootstrapped') {
617
- this.artifactStage.set(key, 'enriching');
618
- }
608
+ // 兼容保留:设置为 enriching
609
+ this.artifactStage.set(key, 'enriching');
619
610
  }
620
611
  else {
621
612
  // 非写入工具:递增熔断计数
@@ -674,124 +665,22 @@ ${missingList}
674
665
  *
675
666
  * 改进:骨架内容满足硬约束(min_length/min_size),避免首轮即失败
676
667
  */
677
- ensureRequiredArtifactSkeletons(key, pipeline, nodeType) {
678
- const existing = this.artifactCollector.getArtifacts(key);
679
- if (existing.length > 0)
680
- return [];
681
- const required = nodeType.expected_artifacts?.filter(c => c.required !== false) ?? [];
682
- if (required.length === 0)
683
- return [];
684
- const created = [];
685
- for (const constraint of required) {
686
- const relPath = this.resolveSkeletonPath(constraint);
687
- if (!relPath)
688
- continue;
689
- const absPath = path.isAbsolute(relPath) ? relPath : path.join(pipeline.projectPath, relPath);
690
- try {
691
- if (!fs.existsSync(absPath)) {
692
- const dir = path.dirname(absPath);
693
- fs.mkdirSync(dir, { recursive: true });
694
- // 生成满足硬约束的模板(> 300 字符、> 300 字节)
695
- const template = this.generateRichTemplate(nodeType, pipeline.requirement);
696
- fs.writeFileSync(absPath, template, 'utf-8');
697
- created.push(relPath);
698
- }
699
- const fakeEvent = {
700
- event_id: `bootstrap_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
701
- session_id: pipeline.sessionId,
702
- project_path: pipeline.projectPath,
703
- timestamp: new Date().toISOString(),
704
- hook_type: 'PostToolUse',
705
- tool_name: 'Write',
706
- tool_input: { file_path: absPath, content: '[Forge bootstrap skeleton]' },
707
- tool_output: {},
708
- distilled: false,
709
- };
710
- this.artifactCollector.track(key, fakeEvent);
711
- }
712
- catch (err) {
713
- logger.warn(`[Pipeline:Dynamic:Node] 自动创建产物骨架失败:${absPath} | ${err}`);
714
- }
715
- }
716
- if (created.length > 0) {
717
- logger.info(`[Pipeline:Dynamic:Node] 🧩 自动创建产物骨架:${created.join(', ')}`);
718
- this.lastArtifactAt.set(key, Date.now());
719
- this.artifactStage.set(key, 'bootstrapped');
720
- }
721
- return created;
668
+ ensureRequiredArtifactSkeletons(_key, _pipeline, _nodeType) {
669
+ // 骨架自动创建已禁用:骨架文件会被误判为有效产物,导致节点提前完成
670
+ // Claude 必须自行创建产物文件并写入实质内容
671
+ return [];
722
672
  }
723
673
  /**
724
674
  * 生成满足硬约束的富文本模板(> 300 字符、> 300 字节)
675
+ * @deprecated 骨架自动创建已禁用
725
676
  */
726
- generateRichTemplate(nodeType, requirement) {
727
- const now = new Date().toISOString().split('T')[0];
728
- // 截取需求前 200 字符作为上下文
729
- const reqPreview = requirement.length > 200 ? requirement.slice(0, 200) + '...' : requirement;
730
- return `# ${nodeType.name}
731
-
732
- ## 背景与目标
733
-
734
- **需求概述**:
735
- ${reqPreview}
736
-
737
- **分析目标**:
738
- - 理解当前系统架构和实现细节
739
- - 识别潜在问题和优化空间
740
- - 提出可行的改进方案
741
-
742
- ## 评审维度
743
-
744
- ### 1. 架构合理性
745
- - 模块划分
746
- - 分层设计
747
- - 可扩展性
748
-
749
- ### 2. 代码质量
750
- - 代码规范
751
- - 命名规范
752
- - 注释完整性
753
-
754
- ### 3. 系统质量
755
- - 功能完整性
756
- - 业务逻辑正确性
757
- - 容错能力
758
-
759
- ## 证据记录
760
-
761
- (待补充:调研过程中发现的关键代码、配置、数据流等)
762
-
763
- ## 风险与建议
764
-
765
- (待补充:识别的风险点和优化建议)
766
-
767
- ---
768
- 生成时间:${now}
769
- 状态:待完善
770
- `;
677
+ generateRichTemplate(_nodeType, _requirement) {
678
+ return '';
771
679
  }
772
- /** 根据 path_pattern 推导骨架文件路径 */
773
- resolveSkeletonPath(constraint) {
774
- const pattern = constraint.path_pattern;
775
- if (!pattern) {
776
- if (constraint.type === 'document')
777
- return 'docs/analysis.md';
778
- if (constraint.type === 'code')
779
- return 'src/bootstrap.ts';
780
- return null;
781
- }
782
- if (pattern === 'docs/**/*.md')
783
- return 'docs/analysis.md';
784
- const doubleStarIdx = pattern.indexOf('**');
785
- if (doubleStarIdx !== -1) {
786
- const dirPrefix = pattern.slice(0, doubleStarIdx).replace(/\/$/, '');
787
- const suffix = pattern.slice(doubleStarIdx + 2).replace(/^\//, '');
788
- const extMatch = suffix.match(/\*\.([a-zA-Z0-9]+)/);
789
- const ext = extMatch ? extMatch[1] : (constraint.type === 'document' ? 'md' : 'txt');
790
- return dirPrefix ? `${dirPrefix}/analysis.${ext}` : `analysis.${ext}`;
791
- }
792
- if (!pattern.includes('*') && !pattern.includes('{') && !pattern.includes('}')) {
793
- return pattern;
794
- }
680
+ /** 根据 path_pattern 推导骨架文件路径
681
+ * @deprecated 骨架自动创建已禁用
682
+ */
683
+ resolveSkeletonPath(_constraint) {
795
684
  return null;
796
685
  }
797
686
  /**