@winspan/claude-forge 0.1.2 → 0.1.4

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 (156) hide show
  1. package/dist/autopilot/index.d.ts +0 -1
  2. package/dist/autopilot/index.d.ts.map +1 -1
  3. package/dist/autopilot/index.js +0 -1
  4. package/dist/autopilot/index.js.map +1 -1
  5. package/dist/autopilot/intent-engine.d.ts +4 -1
  6. package/dist/autopilot/intent-engine.d.ts.map +1 -1
  7. package/dist/autopilot/intent-engine.js +22 -4
  8. package/dist/autopilot/intent-engine.js.map +1 -1
  9. package/dist/autopilot/quality-gate.d.ts +7 -0
  10. package/dist/autopilot/quality-gate.d.ts.map +1 -1
  11. package/dist/autopilot/quality-gate.js +8 -0
  12. package/dist/autopilot/quality-gate.js.map +1 -1
  13. package/dist/claudemd/index.d.ts +1 -1
  14. package/dist/claudemd/index.d.ts.map +1 -1
  15. package/dist/claudemd/index.js +30 -4
  16. package/dist/claudemd/index.js.map +1 -1
  17. package/dist/claudemd/prompts.d.ts +4 -1
  18. package/dist/claudemd/prompts.d.ts.map +1 -1
  19. package/dist/claudemd/prompts.js +41 -5
  20. package/dist/claudemd/prompts.js.map +1 -1
  21. package/dist/cli/commands/init.d.ts +33 -0
  22. package/dist/cli/commands/init.d.ts.map +1 -1
  23. package/dist/cli/commands/init.js +508 -3
  24. package/dist/cli/commands/init.js.map +1 -1
  25. package/dist/cli/index.js +3 -1
  26. package/dist/cli/index.js.map +1 -1
  27. package/dist/cli/tui.d.ts.map +1 -1
  28. package/dist/cli/tui.js +4 -0
  29. package/dist/cli/tui.js.map +1 -1
  30. package/dist/config/defaults.d.ts.map +1 -1
  31. package/dist/config/defaults.js +0 -2
  32. package/dist/config/defaults.js.map +1 -1
  33. package/dist/config/schema.d.ts +0 -2
  34. package/dist/config/schema.d.ts.map +1 -1
  35. package/dist/config/schema.js +0 -4
  36. package/dist/config/schema.js.map +1 -1
  37. package/dist/convention/official-sync.d.ts +21 -0
  38. package/dist/convention/official-sync.d.ts.map +1 -0
  39. package/dist/convention/official-sync.js +196 -0
  40. package/dist/convention/official-sync.js.map +1 -0
  41. package/dist/daemon/engine-registry/init-autopilot.d.ts +0 -2
  42. package/dist/daemon/engine-registry/init-autopilot.d.ts.map +1 -1
  43. package/dist/daemon/engine-registry/init-autopilot.js +2 -6
  44. package/dist/daemon/engine-registry/init-autopilot.js.map +1 -1
  45. package/dist/daemon/engine-registry.d.ts.map +1 -1
  46. package/dist/daemon/engine-registry.js +4 -2
  47. package/dist/daemon/engine-registry.js.map +1 -1
  48. package/dist/daemon/handler-context.d.ts +0 -2
  49. package/dist/daemon/handler-context.d.ts.map +1 -1
  50. package/dist/daemon/handlers/post-tool-use-handler.d.ts.map +1 -1
  51. package/dist/daemon/handlers/post-tool-use-handler.js +7 -0
  52. package/dist/daemon/handlers/post-tool-use-handler.js.map +1 -1
  53. package/dist/daemon/handlers/pre-tool-use-handler.d.ts.map +1 -1
  54. package/dist/daemon/handlers/pre-tool-use-handler.js +15 -15
  55. package/dist/daemon/handlers/pre-tool-use-handler.js.map +1 -1
  56. package/dist/daemon/handlers/stop-handler.d.ts.map +1 -1
  57. package/dist/daemon/handlers/stop-handler.js +23 -9
  58. package/dist/daemon/handlers/stop-handler.js.map +1 -1
  59. package/dist/daemon/handlers/user-prompt-handler.d.ts +9 -8
  60. package/dist/daemon/handlers/user-prompt-handler.d.ts.map +1 -1
  61. package/dist/daemon/handlers/user-prompt-handler.js +75 -48
  62. package/dist/daemon/handlers/user-prompt-handler.js.map +1 -1
  63. package/dist/daemon/index.d.ts.map +1 -1
  64. package/dist/daemon/index.js +25 -15
  65. package/dist/daemon/index.js.map +1 -1
  66. package/dist/daemon/lifecycle.d.ts +6 -0
  67. package/dist/daemon/lifecycle.d.ts.map +1 -1
  68. package/dist/daemon/lifecycle.js +28 -0
  69. package/dist/daemon/lifecycle.js.map +1 -1
  70. package/dist/daemon/server.d.ts +2 -1
  71. package/dist/daemon/server.d.ts.map +1 -1
  72. package/dist/daemon/server.js +20 -1
  73. package/dist/daemon/server.js.map +1 -1
  74. package/dist/distill/index.d.ts.map +1 -1
  75. package/dist/distill/index.js +4 -0
  76. package/dist/distill/index.js.map +1 -1
  77. package/dist/distill/writer.d.ts +22 -0
  78. package/dist/distill/writer.d.ts.map +1 -1
  79. package/dist/distill/writer.js +77 -0
  80. package/dist/distill/writer.js.map +1 -1
  81. package/dist/hooks/check-context-limit.sh +0 -0
  82. package/dist/hooks/notification.sh +3 -1
  83. package/dist/hooks/post-tool-use.sh +3 -1
  84. package/dist/hooks/pre-tool-use.sh +3 -1
  85. package/dist/hooks/stop.sh +3 -1
  86. package/dist/hooks/user-prompt-submit.sh +3 -1
  87. package/dist/pipeline/phase-manager.d.ts +4 -0
  88. package/dist/pipeline/phase-manager.d.ts.map +1 -1
  89. package/dist/pipeline/phase-manager.js +52 -10
  90. package/dist/pipeline/phase-manager.js.map +1 -1
  91. package/dist/skill-registry/evolver.d.ts.map +1 -1
  92. package/dist/skill-registry/evolver.js +4 -2
  93. package/dist/skill-registry/evolver.js.map +1 -1
  94. package/package.json +10 -4
  95. package/dist/cli/commands/console.d.ts +0 -3
  96. package/dist/cli/commands/console.d.ts.map +0 -1
  97. package/dist/cli/commands/console.js +0 -11
  98. package/dist/cli/commands/console.js.map +0 -1
  99. package/dist/cli/interceptor.d.ts +0 -5
  100. package/dist/cli/interceptor.d.ts.map +0 -1
  101. package/dist/cli/interceptor.js +0 -55
  102. package/dist/cli/interceptor.js.map +0 -1
  103. package/dist/hooks/hooks/check-context-limit.sh +0 -97
  104. package/dist/hooks/hooks/notification.sh +0 -33
  105. package/dist/hooks/hooks/post-tool-use.sh +0 -49
  106. package/dist/hooks/hooks/pre-tool-use.sh +0 -55
  107. package/dist/hooks/hooks/stop.sh +0 -29
  108. package/dist/hooks/hooks/user-prompt-submit.sh +0 -72
  109. package/dist/skill-registry/recommender.d.ts +0 -25
  110. package/dist/skill-registry/recommender.d.ts.map +0 -1
  111. package/dist/skill-registry/recommender.js +0 -91
  112. package/dist/skill-registry/recommender.js.map +0 -1
  113. package/dist/tests/claude-api.test.d.ts +0 -2
  114. package/dist/tests/claude-api.test.d.ts.map +0 -1
  115. package/dist/tests/claude-api.test.js +0 -96
  116. package/dist/tests/claude-api.test.js.map +0 -1
  117. package/dist/tests/conversational-config-handler.test.d.ts +0 -2
  118. package/dist/tests/conversational-config-handler.test.d.ts.map +0 -1
  119. package/dist/tests/conversational-config-handler.test.js +0 -107
  120. package/dist/tests/conversational-config-handler.test.js.map +0 -1
  121. package/dist/tests/doc-sync.test.d.ts +0 -2
  122. package/dist/tests/doc-sync.test.d.ts.map +0 -1
  123. package/dist/tests/doc-sync.test.js +0 -148
  124. package/dist/tests/doc-sync.test.js.map +0 -1
  125. package/dist/tests/orchestration-config.test.d.ts +0 -2
  126. package/dist/tests/orchestration-config.test.d.ts.map +0 -1
  127. package/dist/tests/orchestration-config.test.js +0 -122
  128. package/dist/tests/orchestration-config.test.js.map +0 -1
  129. package/dist/tests/pipeline-options.test.d.ts +0 -2
  130. package/dist/tests/pipeline-options.test.d.ts.map +0 -1
  131. package/dist/tests/pipeline-options.test.js +0 -68
  132. package/dist/tests/pipeline-options.test.js.map +0 -1
  133. package/dist/tests/resume-context-gen.test.d.ts +0 -2
  134. package/dist/tests/resume-context-gen.test.d.ts.map +0 -1
  135. package/dist/tests/resume-context-gen.test.js +0 -93
  136. package/dist/tests/resume-context-gen.test.js.map +0 -1
  137. package/dist/tests/sqlite.test.d.ts +0 -2
  138. package/dist/tests/sqlite.test.d.ts.map +0 -1
  139. package/dist/tests/sqlite.test.js +0 -154
  140. package/dist/tests/sqlite.test.js.map +0 -1
  141. package/dist/tests/tracker.test.d.ts +0 -2
  142. package/dist/tests/tracker.test.d.ts.map +0 -1
  143. package/dist/tests/tracker.test.js +0 -75
  144. package/dist/tests/tracker.test.js.map +0 -1
  145. package/dist/tests/tui.test.d.ts +0 -2
  146. package/dist/tests/tui.test.d.ts.map +0 -1
  147. package/dist/tests/tui.test.js +0 -39
  148. package/dist/tests/tui.test.js.map +0 -1
  149. package/dist/tests/user-prompt-handler.test.d.ts +0 -2
  150. package/dist/tests/user-prompt-handler.test.d.ts.map +0 -1
  151. package/dist/tests/user-prompt-handler.test.js +0 -182
  152. package/dist/tests/user-prompt-handler.test.js.map +0 -1
  153. package/dist/tui/index.d.ts +0 -2
  154. package/dist/tui/index.d.ts.map +0 -1
  155. package/dist/tui/index.js +0 -486
  156. package/dist/tui/index.js.map +0 -1
@@ -21,8 +21,9 @@ export class PreToolUseHandler extends BaseHookHandler {
21
21
  // 2. Skill 推荐注入
22
22
  const skillRec = await skillRegistry.processEvent(event);
23
23
  if (skillRec) {
24
- const preview = skillRec.replace(/\[Forge 自动编排\]\s*/, '').split('\n')[0].substring(0, 80);
25
- logger.info(`[Forge:技能] 已注入推荐(触发工具:${event.tool_name}):${preview}`);
24
+ // 提取匹配的技能名列表作为日志预览(跳过标题行,提取 **name** 部分)
25
+ const skillNames = skillRec.match(/\*\*([^*]+)\*\*/g)?.map(s => s.replace(/\*\*/g, '')).join(', ') || '(unknown)';
26
+ logger.info(`[Forge:技能] 已注入推荐(触发工具:${event.tool_name}):${skillNames}`);
26
27
  decision = this.appendContext(decision, ForgeFormatter.formatModuleNotification('skill', skillRec));
27
28
  }
28
29
  // 3. Pipeline 阶段指令注入
@@ -41,19 +42,18 @@ export class PreToolUseHandler extends BaseHookHandler {
41
42
  return decision ?? undefined;
42
43
  }
43
44
  runBackgroundChecks(projectPath, autoGenerate, resumeEngine) {
44
- (async () => {
45
- if (autoGenerate) {
46
- await this.promptInjector.checkAndPrompt(projectPath);
47
- }
48
- if (resumeEngine) {
49
- try {
50
- await resumeEngine.checkAndInject(projectPath);
51
- }
52
- catch (err) {
53
- logger.warn(`续接检查失败:${err}`);
54
- }
55
- }
56
- })().catch(err => logger.error(`后台检查失败:${err}`));
45
+ const tasks = [];
46
+ if (autoGenerate) {
47
+ tasks.push(this.promptInjector.checkAndPrompt(projectPath));
48
+ }
49
+ if (resumeEngine) {
50
+ tasks.push(resumeEngine.checkAndInject(projectPath).then(() => { }).catch(err => {
51
+ logger.warn(`续接检查失败:${err}`);
52
+ }));
53
+ }
54
+ if (tasks.length > 0) {
55
+ Promise.all(tasks).catch(err => logger.error(`后台检查失败:${err}`));
56
+ }
57
57
  }
58
58
  }
59
59
  //# sourceMappingURL=pre-tool-use-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pre-tool-use-handler.js","sourceRoot":"","sources":["../../../src/daemon/handlers/pre-tool-use-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pre-tool-use-handler.js","sourceRoot":"","sources":["../../../src/daemon/handlers/pre-tool-use-handler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stop-handler.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/stop-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAOpD,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD,OAAO,CAAC,SAAS,CAAK;gBAEV,GAAG,EAAE,cAAc;IAIzB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;CA2G9D"}
1
+ {"version":3,"file":"stop-handler.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/stop-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAOpD,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD,OAAO,CAAC,SAAS,CAAK;gBAEV,GAAG,EAAE,cAAc;IAIzB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;CAwH9D"}
@@ -11,7 +11,7 @@ export class StopHandler extends BaseHookHandler {
11
11
  super(ctx);
12
12
  }
13
13
  async handle(event) {
14
- const { resumeEngine, qualityGate, knowledgeEngine, trigger, orchestration, skillRegistry, config, profileManager } = this.ctx;
14
+ const { resumeEngine, qualityGate, trigger, orchestration, skillRegistry, config, profileManager } = this.ctx;
15
15
  this.stopCount++;
16
16
  // 1. 保存续接摘要(趁数据新鲜)
17
17
  if (resumeEngine) {
@@ -26,19 +26,32 @@ export class StopHandler extends BaseHookHandler {
26
26
  if (config.claudemd.auto_generate) {
27
27
  await this.promptInjector.checkAndPrompt(event.project_path);
28
28
  }
29
- // 3. 质量报告与重置
29
+ // 3. 质量报告:有 fail 项则阻断会话结束,强制修复
30
30
  if (qualityGate) {
31
+ const failures = qualityGate.getUnresolvedFailures();
32
+ if (failures.length > 0) {
33
+ const report = qualityGate.generateReport();
34
+ logger.warn(`[Forge:质量门禁] 发现 ${failures.length} 个未解决的失败项,阻断会话结束`);
35
+ const issueLines = [];
36
+ for (const f of failures) {
37
+ issueLines.push(`- ${f.summary}`);
38
+ for (const c of f.checks) {
39
+ issueLines.push(` [${c.category}] ${c.message}`);
40
+ if (c.suggestion)
41
+ issueLines.push(` 修复建议:${c.suggestion}`);
42
+ }
43
+ }
44
+ const reason = `[Forge QualityGate] ❌ 以下质量问题必须在结束前修复:\n\n${issueLines.join('\n')}\n\n请修复上述问题后再结束会话。`;
45
+ // 不 reset,保留历史供下次 Stop 检查
46
+ return { allow: false, reason };
47
+ }
31
48
  const report = qualityGate.generateReport();
32
49
  if (report && report !== '暂无审查记录。') {
33
50
  logger.info(`[Forge:质量门禁] 会话报告:\n${report}`);
34
51
  }
35
52
  qualityGate.reset();
36
53
  }
37
- // 4. 知识库清理
38
- if (knowledgeEngine) {
39
- knowledgeEngine.prune(config.autopilot.knowledge_max_age_days);
40
- }
41
- // 5. 触发蒸馏
54
+ // 4. 触发蒸馏
42
55
  if (trigger) {
43
56
  await trigger.onStopHook(event.session_id, event.project_path);
44
57
  logger.info(`[Forge:蒸馏] Stop 事件触发会话蒸馏完成:${event.project_path}`);
@@ -46,10 +59,11 @@ export class StopHandler extends BaseHookHandler {
46
59
  orchestration.pushNotification('[Forge] 会话蒸馏完成,decisions.md 和 timeline.md 已更新');
47
60
  }
48
61
  // 5b. 蒸馏完成后,异步更新 CLAUDE.md(每 5 次 Stop 触发一次,避免频繁 API 调用)
62
+ // 增量优化:ClaudeMdEngine.refine() 内部会检查 refine-state,不足 3 次蒸馏且无新增内容时自动跳过
49
63
  if (event.project_path && this.stopCount % 5 === 0 && this.ctx.sharedApi) {
50
64
  const claudeMdEngine = new ClaudeMdEngine(this.ctx.sharedApi);
51
65
  const distillWriter = new DistillWriter();
52
- const lastDecisions = distillWriter.readLastDecisions(event.project_path, 30);
66
+ const lastDecisions = distillWriter.readDecisionsSince(event.project_path) || distillWriter.readLastDecisions(event.project_path, 30);
53
67
  const events = this.ctx.storage.queryEvents({ project_path: event.project_path, limit: 50 });
54
68
  claudeMdEngine.refine(event.project_path, lastDecisions, events).then(updated => {
55
69
  if (updated) {
@@ -70,7 +84,7 @@ export class StopHandler extends BaseHookHandler {
70
84
  const recentEvents = this.ctx.storage.queryEvents({
71
85
  project_path: event.project_path,
72
86
  start_time: windowStart,
73
- limit: 200,
87
+ limit: 1000,
74
88
  });
75
89
  logger.info(`[Forge:文档同步] 准备同步,近 2h 事件 ${recentEvents.length} 条`);
76
90
  const docSync = new DocSyncEngine(this.ctx.sharedApi);
@@ -1 +1 @@
1
- {"version":3,"file":"stop-handler.js","sourceRoot":"","sources":["../../../src/daemon/handlers/stop-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stop-handler.js","sourceRoot":"","sources":["../../../src/daemon/handlers/stop-handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,OAAO,WAAY,SAAQ,eAAe;IAC7B,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IAC/C,SAAS,GAAG,CAAC,CAAC;IAEtB,YAAY,GAAmB;QAC7B,KAAK,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAiB;QAC5B,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QAC9G,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,mBAAmB;QACnB,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;YACtE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC/D,CAAC;QAED,+BAA+B;QAC/B,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC;YACrD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC5C,MAAM,CAAC,IAAI,CAAC,mBAAmB,QAAQ,CAAC,MAAM,kBAAkB,CAAC,CAAC;gBAClE,MAAM,UAAU,GAAa,EAAE,CAAC;gBAChC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;oBACzB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBAClC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;wBACzB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;wBAClD,IAAI,CAAC,CAAC,UAAU;4BAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;oBAC9D,CAAC;gBACH,CAAC;gBACD,MAAM,MAAM,GAAG,4CAA4C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;gBACrG,0BAA0B;gBAC1B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YAClC,CAAC;YAED,MAAM,MAAM,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;YAC5C,IAAI,MAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAC;YAC/C,CAAC;YACD,WAAW,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;QAED,UAAU;QACV,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,8BAA8B,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;YAEhE,IAAI,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;gBAC5D,aAAa,CAAC,gBAAgB,CAAC,+CAA+C,CAAC,CAAC;YAClF,CAAC;YAED,wDAAwD;YACxD,sEAAsE;YACtE,IAAI,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACzE,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC9D,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;gBAC1C,MAAM,aAAa,GAAG,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;gBACtI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7F,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBAC9E,IAAI,OAAO,EAAE,CAAC;wBACZ,MAAM,CAAC,IAAI,CAAC,kCAAkC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;wBACpE,IAAI,aAAa,EAAE,CAAC;4BAClB,aAAa,CAAC,gBAAgB,CAAC,iCAAiC,CAAC,CAAC;wBACpE,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACb,MAAM,CAAC,IAAI,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;YACL,CAAC;YAED,kCAAkC;YAClC,6DAA6D;YAC7D,oCAAoC;YACpC,IAAI,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBAC7C,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC;oBAChD,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,UAAU,EAAE,WAAW;oBACvB,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,6BAA6B,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC;gBAClE,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACtD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBAC3E,MAAM,CAAC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;gBAC1C,CAAC,CAAC,CAAC;YACL,CAAC;YAED,mCAAmC;YACnC,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACzD,IAAI,YAAY,IAAI,aAAa,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAa,EAAE,CAAC;gBAC3B,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;gBACvF,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,SAAS,CAAC,MAAM,WAAW,CAAC,CAAC;gBAClG,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,aAAa,CAAC,gBAAgB,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YAED,6BAA6B;YAC7B,IAAI,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnD,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC7E,IAAI,WAAW,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,EAAE,CAAC;oBACrE,aAAa,CAAC,gBAAgB,CAAC,sBAAsB,WAAW,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,CAAC;gBAC7F,CAAC;YACH,CAAC;QACH,CAAC;QAED,4BAA4B;QAE5B,2CAA2C;QAC3C,cAAc,CAAC,uBAAuB,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,SAAS,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACpD,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBAC1D,MAAM,CAAC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;CACF"}
@@ -23,8 +23,10 @@ export declare class UserPromptHandler extends BaseHookHandler {
23
23
  private static readonly MAX_STATE_AGE_MS;
24
24
  private configHandler;
25
25
  constructor(ctx: HandlerContext);
26
- /** 已提示过初始化的 session,避免每条消息都提示 */
26
+ /** 已提示过初始化的 session,避免每条消息都提示(key=sessionId:projectPath) */
27
27
  private initPromptedSessions;
28
+ /** initPromptedSessions 条目的写入时间,用于 TTL 清理 */
29
+ private initPromptedAt;
28
30
  handle(event: ForgeEvent): Promise<HookResponse | void>;
29
31
  /**
30
32
  * 处理用户对 Pipeline 选择的回复(A/B/C)。
@@ -33,6 +35,11 @@ export declare class UserPromptHandler extends BaseHookHandler {
33
35
  private handlePipelineReply;
34
36
  /** 冷却检查,通过返回 true,并清理过期条目 */
35
37
  private checkCooldown;
38
+ /**
39
+ * 构建会话上下文:最近的用户输入 + 工具调用摘要。
40
+ * 帮助意图引擎理解当前对话在做什么,避免孤立判断单条输入。
41
+ */
42
+ private buildConversationHistory;
36
43
  /** 清理超过 MAX_STATE_AGE_MS 的 Map 条目,防止内存无限增长 */
37
44
  private evictStaleEntries;
38
45
  private setSuggestionPending;
@@ -53,15 +60,9 @@ export declare class UserPromptHandler extends BaseHookHandler {
53
60
  * 方案 A:同一 session 内 decisions.md 内容不变则直接复用缓存,不重复注入。
54
61
  */
55
62
  private readDecisionsContext;
56
- /**
57
- * 方案 A:knowledge 搜索去重 —— 相同 keywords 在同一 session 内直接返回缓存结果。
58
- * 方案 B:知识库单条截到 500 字符(在 KnowledgeEngine.formatLocalResults 中控制),
59
- * 此处对整体结果做兜底截断(不超过 1500 字符)。
60
- */
61
- private searchKnowledge;
62
63
  /**
63
64
  * 按优先级组装上下文,无总量限制。
64
- * 优先级:directive > card > decisions > knowledge
65
+ * 优先级:directive > decisions > convention
65
66
  */
66
67
  private budgetContext;
67
68
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"user-prompt-handler.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/user-prompt-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAmBpD,qBAAa,iBAAkB,SAAQ,eAAe;IACpD;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAA8B;IACvD;;;OAGG;IACH,OAAO,CAAC,cAAc,CAA6B;IACnD;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAqC;IAE3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAO;IACnD,iCAAiC;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IAE1D,OAAO,CAAC,aAAa,CAA8B;gBAEvC,GAAG,EAAE,cAAc;IAK/B,iCAAiC;IACjC,OAAO,CAAC,oBAAoB,CAAqB;IAE3C,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IA2E7D;;;OAGG;YACW,mBAAmB;IAsBjC,6BAA6B;IAC7B,OAAO,CAAC,aAAa;IAYrB,8CAA8C;IAC9C,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,WAAW;IASnB;;;OAGG;YACW,kBAAkB;IAoChC,OAAO,CAAC,kBAAkB;IAW1B,+DAA+D;YACjD,iBAAiB;YA4BjB,iBAAiB;IAuC/B,OAAO,CAAC,oBAAoB;YAkBd,mBAAmB;IA4BjC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAoC5B;;;;OAIG;YACW,eAAe;IAoC7B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;YACW,uBAAuB;CA0BtC"}
1
+ {"version":3,"file":"user-prompt-handler.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/user-prompt-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAiBpD,qBAAa,iBAAkB,SAAQ,eAAe;IACpD;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAA8B;IACvD;;;OAGG;IACH,OAAO,CAAC,cAAc,CAA6B;IACnD;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAqC;IAE3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAO;IACnD,iCAAiC;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IAE1D,OAAO,CAAC,aAAa,CAA8B;gBAEvC,GAAG,EAAE,cAAc;IAK/B,4DAA4D;IAC5D,OAAO,CAAC,oBAAoB,CAAqB;IACjD,6CAA6C;IAC7C,OAAO,CAAC,cAAc,CAA6B;IAE7C,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IA6E7D;;;OAGG;YACW,mBAAmB;IAsBjC,6BAA6B;IAC7B,OAAO,CAAC,aAAa;IAYrB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAqDhC,8CAA8C;IAC9C,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,WAAW;IASnB;;;OAGG;YACW,kBAAkB;IAoChC,OAAO,CAAC,kBAAkB;IAW1B,+DAA+D;YACjD,iBAAiB;YA4BjB,iBAAiB;IA+C/B,OAAO,CAAC,oBAAoB;YAkBd,mBAAmB;IA0BjC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAoC5B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;YACW,uBAAuB;CA0BtC"}
@@ -31,8 +31,10 @@ export class UserPromptHandler extends BaseHookHandler {
31
31
  super(ctx);
32
32
  this.configHandler = new ConversationalConfigHandler(ctx);
33
33
  }
34
- /** 已提示过初始化的 session,避免每条消息都提示 */
34
+ /** 已提示过初始化的 session,避免每条消息都提示(key=sessionId:projectPath) */
35
35
  initPromptedSessions = new Set();
36
+ /** initPromptedSessions 条目的写入时间,用于 TTL 清理 */
37
+ initPromptedAt = new Map();
36
38
  async handle(event) {
37
39
  const { intentEngine } = this.ctx;
38
40
  const userPrompt = event.tool_input?.user_prompt || '';
@@ -42,6 +44,7 @@ export class UserPromptHandler extends BaseHookHandler {
42
44
  const sessionKey = `${event.session_id}:${event.project_path}`;
43
45
  if (!this.initPromptedSessions.has(sessionKey) && !isForgeManaged(event.project_path)) {
44
46
  this.initPromptedSessions.add(sessionKey);
47
+ this.initPromptedAt.set(sessionKey, Date.now());
45
48
  logger.info(`[Forge:初始化] 项目未初始化,注入引导提示:${event.project_path}`);
46
49
  return {
47
50
  allow: true,
@@ -65,8 +68,9 @@ export class UserPromptHandler extends BaseHookHandler {
65
68
  // 2. 冷却检查
66
69
  if (!this.checkCooldown(event.project_path))
67
70
  return;
68
- // 3. 意图分析
69
- const analysis = await intentEngine.analyze(userPrompt, event.project_path);
71
+ // 3. 意图分析(带会话上下文)
72
+ const history = this.buildConversationHistory(event.session_id, event.project_path);
73
+ const analysis = await intentEngine.analyze(userPrompt, event.project_path, undefined, history);
70
74
  this.logAnalysis(analysis);
71
75
  if (analysis.searchKeywords?.length) {
72
76
  this.ctx.skillRegistry.setIntentKeywords(analysis.searchKeywords);
@@ -128,6 +132,57 @@ export class UserPromptHandler extends BaseHookHandler {
128
132
  this.lastAnalysisAt.set(projectPath, now);
129
133
  return true;
130
134
  }
135
+ /**
136
+ * 构建会话上下文:最近的用户输入 + 工具调用摘要。
137
+ * 帮助意图引擎理解当前对话在做什么,避免孤立判断单条输入。
138
+ */
139
+ buildConversationHistory(sessionId, projectPath) {
140
+ try {
141
+ const { storage } = this.ctx;
142
+ // 查询最近 10 条事件(含 UserPromptSubmit 和工具调用)
143
+ const recentEvents = storage.queryEvents({
144
+ session_id: sessionId,
145
+ project_path: projectPath,
146
+ limit: 15,
147
+ });
148
+ if (recentEvents.length === 0)
149
+ return undefined;
150
+ const lines = [];
151
+ // 提取最近的用户输入(最多 3 条,不含当前输入)
152
+ const userPrompts = recentEvents
153
+ .filter(e => e.hook_type === 'UserPromptSubmit' && e.tool_input)
154
+ .slice(0, 4) // 多取一条因为第一条是当前输入
155
+ .slice(1) // 去掉当前输入
156
+ .reverse(); // 按时间正序
157
+ if (userPrompts.length > 0) {
158
+ lines.push('### 最近的用户指令');
159
+ for (const e of userPrompts) {
160
+ const prompt = e.tool_input?.user_prompt || '';
161
+ if (prompt) {
162
+ lines.push(`- ${prompt.substring(0, 150)}`);
163
+ }
164
+ }
165
+ }
166
+ // 提取最近的工具调用摘要(最多 5 条)
167
+ const toolEvents = recentEvents
168
+ .filter(e => (e.hook_type === 'PostToolUse' || e.hook_type === 'PreToolUse') && e.tool_name)
169
+ .slice(0, 5)
170
+ .reverse();
171
+ if (toolEvents.length > 0) {
172
+ lines.push('### 最近的工具调用');
173
+ for (const e of toolEvents) {
174
+ const inputStr = e.tool_input ? JSON.stringify(e.tool_input).substring(0, 100) : '';
175
+ lines.push(`- ${e.tool_name}: ${inputStr}`);
176
+ }
177
+ }
178
+ if (lines.length === 0)
179
+ return undefined;
180
+ return lines.join('\n');
181
+ }
182
+ catch {
183
+ return undefined;
184
+ }
185
+ }
131
186
  /** 清理超过 MAX_STATE_AGE_MS 的 Map 条目,防止内存无限增长 */
132
187
  evictStaleEntries(now) {
133
188
  const cutoff = now - UserPromptHandler.MAX_STATE_AGE_MS;
@@ -138,6 +193,13 @@ export class UserPromptHandler extends BaseHookHandler {
138
193
  this.injectionCache.delete(key);
139
194
  }
140
195
  }
196
+ // 清理 initPromptedSessions 中超过 TTL 的条目
197
+ for (const [key, ts] of this.initPromptedAt) {
198
+ if (ts < cutoff) {
199
+ this.initPromptedAt.delete(key);
200
+ this.initPromptedSessions.delete(key);
201
+ }
202
+ }
141
203
  }
142
204
  setSuggestionPending(projectPath, value) {
143
205
  this.suggestionPending.set(projectPath, value);
@@ -222,8 +284,13 @@ export class UserPromptHandler extends BaseHookHandler {
222
284
  const teamContext = shouldUseTeamMode(analysis)
223
285
  ? buildTeamModeContext(analysis, event.project_path)
224
286
  : null;
225
- if (teamContext)
226
- logger.info('[Forge:团队] 已注入并行 Agent 分解指令');
287
+ if (teamContext) {
288
+ logger.info(`[Forge:团队] 已启用 Team 模式(3 个并行 Agent):\n` +
289
+ ` Agent A — 需求分析:识别功能点、边界条件、验收标准\n` +
290
+ ` Agent B — 代码库搜索:定位相关文件、测试、可复用组件\n` +
291
+ ` Agent C — 方案规划:文件改动清单、实现步骤、技术决策\n` +
292
+ ` 预估涉及 ${analysis.estimatedFiles ?? '多个'} 个文件 | 需求:${analysis.requirement.substring(0, 80)}`);
293
+ }
227
294
  const conventionPrompt = this.ctx.conventionManager.getActivePrompt(event.project_path) ?? undefined;
228
295
  const context = ForgeFormatter.wrapInQuote(this.budgetContext({ content: conventionPrompt, priority: 0 }, { content: autoMsg, priority: 1 }, { content: teamContext ?? undefined, priority: 2 }, { content: this.readDecisionsContext(analysis.requirement, event.project_path), priority: 3 }));
229
296
  if (analysis.clarifyQuestions?.length) {
@@ -245,7 +312,6 @@ export class UserPromptHandler extends BaseHookHandler {
245
312
  }
246
313
  async buildSimpleResponse(analysis, card, projectPath) {
247
314
  const directive = this.ctx.intentEngine.generateDirective(analysis);
248
- const knowledgeContext = await this.searchKnowledge(analysis, projectPath);
249
315
  const decisionsContext = this.readDecisionsContext(analysis.requirement, projectPath);
250
316
  const conventionPrompt = this.ctx.conventionManager.getActivePrompt(projectPath) ?? undefined;
251
317
  if (analysis.clarifyQuestions?.length) {
@@ -256,7 +322,7 @@ export class UserPromptHandler extends BaseHookHandler {
256
322
  additionalContext: clarify,
257
323
  };
258
324
  }
259
- const body = this.budgetContext({ content: conventionPrompt, priority: 0 }, { content: directive ?? undefined, priority: 1 }, { content: decisionsContext, priority: 2 }, { content: knowledgeContext, priority: 3 });
325
+ const body = this.budgetContext({ content: conventionPrompt, priority: 0 }, { content: directive ?? undefined, priority: 1 }, { content: decisionsContext, priority: 2 });
260
326
  return {
261
327
  allow: true,
262
328
  systemMessage: card,
@@ -288,7 +354,7 @@ export class UserPromptHandler extends BaseHookHandler {
288
354
  const result = ForgeFormatter.formatModuleNotification('decisions', `项目决策历史(供参考):\n\`\`\`\n${recent}\n\`\`\``);
289
355
  // 更新缓存
290
356
  this.injectionCache.set(projectPath, {
291
- ...(cache ?? { keywordsKey: '', knowledgeResult: '' }),
357
+ ...(cache ?? { decisionsKey: '' }),
292
358
  decisionsKey: fingerprint,
293
359
  decisionsResult: result,
294
360
  });
@@ -298,48 +364,9 @@ export class UserPromptHandler extends BaseHookHandler {
298
364
  return undefined;
299
365
  }
300
366
  }
301
- /**
302
- * 方案 A:knowledge 搜索去重 —— 相同 keywords 在同一 session 内直接返回缓存结果。
303
- * 方案 B:知识库单条截到 500 字符(在 KnowledgeEngine.formatLocalResults 中控制),
304
- * 此处对整体结果做兜底截断(不超过 1500 字符)。
305
- */
306
- async searchKnowledge(analysis, projectPath) {
307
- const { knowledgeEngine } = this.ctx;
308
- if (!knowledgeEngine || !analysis.searchKeywords?.length)
309
- return undefined;
310
- const keywordsKey = analysis.searchKeywords.slice().sort().join(',');
311
- const cache = this.injectionCache.get(projectPath);
312
- if (cache?.keywordsKey === keywordsKey && cache.knowledgeResult) {
313
- logger.info(`[Forge:知识库] 命中 session 缓存,跳过重复搜索:${keywordsKey}`);
314
- return cache.knowledgeResult;
315
- }
316
- logger.info(`[Forge:知识库] 搜索中:${analysis.searchKeywords.join(', ')}`);
317
- try {
318
- const raw = await Promise.race([
319
- knowledgeEngine.search(analysis.searchKeywords),
320
- new Promise((resolve) => setTimeout(() => resolve(null), 3000)),
321
- ]);
322
- if (!raw)
323
- return undefined;
324
- // 兜底截断:整体不超过 1500 字符
325
- const result = raw.length > 1500 ? raw.slice(0, 1500) + '\n…(已截断)' : raw;
326
- logger.info('[Forge:知识库] 搜索完成');
327
- // 写入缓存
328
- this.injectionCache.set(projectPath, {
329
- ...(cache ?? { decisionsKey: '', decisionsResult: '' }),
330
- keywordsKey,
331
- knowledgeResult: result,
332
- });
333
- return result;
334
- }
335
- catch (err) {
336
- logger.warn(`[Forge:知识库] 搜索失败:${err}`);
337
- }
338
- return undefined;
339
- }
340
367
  /**
341
368
  * 按优先级组装上下文,无总量限制。
342
- * 优先级:directive > card > decisions > knowledge
369
+ * 优先级:directive > decisions > convention
343
370
  */
344
371
  budgetContext(...parts) {
345
372
  const sorted = parts
@@ -1 +1 @@
1
- {"version":3,"file":"user-prompt-handler.js","sourceRoot":"","sources":["../../../src/daemon/handlers/user-prompt-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-prompt-handler.js","sourceRoot":"","sources":["../../../src/daemon/handlers/user-prompt-handler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AA0BA,wBAAsB,WAAW,CAAC,UAAU,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA2R5E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AA4BA,wBAAsB,WAAW,CAAC,UAAU,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAkS5E"}
@@ -2,7 +2,7 @@ import path from 'path';
2
2
  import os from 'os';
3
3
  import fs from 'fs';
4
4
  import { SocketServer } from './server.js';
5
- import { writePidFile, removePidFile, cleanSocket, getSocketPath, isForgeManaged, } from './lifecycle.js';
5
+ import { writePidFile, removePidFile, cleanSocket, getSocketPath, isForgeManaged, writeAuthToken, removeAuthToken, } from './lifecycle.js';
6
6
  import { logger, setLogFile, setLogLevel, setEventsFile, logEvent, LogLevel } from '../utils/logger.js';
7
7
  import { SQLiteStorage } from '../storage/sqlite.js';
8
8
  import { ConfigManager } from '../config/index.js';
@@ -27,6 +27,8 @@ export async function startDaemon(foreground = false) {
27
27
  logger.info('Claude Forge 守护进程启动中...');
28
28
  cleanSocket();
29
29
  writePidFile();
30
+ const authToken = writeAuthToken();
31
+ logger.info('[安全] Auth token 已生成');
30
32
  // ── Storage ────────────────────────────────────────────────────────────────
31
33
  const dbPath = config.storage.path.replace('~', os.homedir());
32
34
  const storage = new SQLiteStorage(dbPath);
@@ -89,7 +91,6 @@ export async function startDaemon(foreground = false) {
89
91
  resume: !!ctx.resumeEngine,
90
92
  pipeline: !!ctx.pipelineEngine,
91
93
  intent: !!ctx.intentEngine,
92
- knowledge: !!ctx.knowledgeEngine,
93
94
  quality: !!ctx.qualityGate,
94
95
  skills: true,
95
96
  },
@@ -144,6 +145,13 @@ export async function startDaemon(foreground = false) {
144
145
  }
145
146
  storage.writeEvent(event);
146
147
  logEvent(event.project_path, 'info', event.hook_type, `tool=${event.tool_name || 'N/A'} session=${event.session_id}`);
148
+ // 关键事件在 daemon.log 中也输出,便于排查
149
+ if (event.hook_type === 'UserPromptSubmit' || event.hook_type === 'Stop') {
150
+ logger.info(`[事件] ${event.hook_type} | project=${event.project_path}`);
151
+ }
152
+ else {
153
+ logger.debug(`[事件] ${event.hook_type} | tool=${event.tool_name || 'N/A'} | project=${event.project_path}`);
154
+ }
147
155
  if (trigger) {
148
156
  trigger.trackProject(event.session_id, event.project_path);
149
157
  }
@@ -168,13 +176,6 @@ export async function startDaemon(foreground = false) {
168
176
  if (result)
169
177
  return result;
170
178
  }
171
- // 非 Stop 事件的蒸馏触发(跨 handler 关注点,保留在路由层)
172
- if (trigger && event.hook_type !== 'Stop') {
173
- const distilled = await trigger.checkEventThreshold(event.session_id, event.project_path);
174
- if (distilled && ctx.resumeEngine) {
175
- await ctx.resumeEngine.saveIncremental(event.session_id, event.project_path);
176
- }
177
- }
178
179
  }
179
180
  catch (err) {
180
181
  logger.error(`事件处理失败:${err}`);
@@ -182,13 +183,19 @@ export async function startDaemon(foreground = false) {
182
183
  };
183
184
  // ── Socket server ──────────────────────────────────────────────────────────
184
185
  const socketPath = getSocketPath();
185
- const server = new SocketServer(socketPath, handleEvent);
186
+ const server = new SocketServer(socketPath, handleEvent, authToken);
186
187
  // ── 技能目录文件监听(跨平台:逐目录注册,避免 Linux 下 recursive 无效)──────
187
188
  const skillsDir = path.join(os.homedir(), '.claude', 'skills');
188
189
  const skillsWatchers = new Map();
189
190
  let skillsDebounceTimer = null;
190
- const onSkillChange = (filename) => {
191
- if (!filename?.endsWith('.md'))
191
+ const onSkillChange = (eventType, filename) => {
192
+ // 过滤非技能文件:只关注 .md 文件变更和目录增删(rename),忽略 .DS_Store 等噪音文件
193
+ if (!filename)
194
+ return;
195
+ const ignored = ['.DS_Store', 'Thumbs.db', '.gitkeep', 'desktop.ini'];
196
+ if (ignored.includes(filename))
197
+ return;
198
+ if (!filename.endsWith('.md') && eventType !== 'rename')
192
199
  return;
193
200
  if (skillsDebounceTimer)
194
201
  clearTimeout(skillsDebounceTimer);
@@ -204,15 +211,17 @@ export async function startDaemon(foreground = false) {
204
211
  catch (err) {
205
212
  logger.warn(`[Forge:技能监听] 刷新失败:${err}`);
206
213
  }
207
- // 扫描是否有新子目录需要注册
208
- watchSkillsDir();
214
+ // 仅在 rename 事件(目录新增/删除)时重新扫描子目录
215
+ if (eventType === 'rename') {
216
+ watchSkillsDir();
217
+ }
209
218
  }, 500);
210
219
  };
211
220
  const watchDir = (dir) => {
212
221
  if (skillsWatchers.has(dir))
213
222
  return;
214
223
  try {
215
- const w = fs.watch(dir, (_, filename) => onSkillChange(filename));
224
+ const w = fs.watch(dir, (eventType, filename) => onSkillChange(eventType, filename));
216
225
  skillsWatchers.set(dir, w);
217
226
  }
218
227
  catch {
@@ -270,6 +279,7 @@ export async function startDaemon(foreground = false) {
270
279
  storage.close();
271
280
  removePidFile();
272
281
  cleanSocket();
282
+ removeAuthToken();
273
283
  clearTimeout(forceExit);
274
284
  process.exit(0);
275
285
  };