@zooique/memora 2.0.0 → 2.0.3

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 (212) hide show
  1. package/README.en.md +272 -0
  2. package/README.md +150 -38
  3. package/dist/agent/agent.d.ts +233 -58
  4. package/dist/agent/agent.d.ts.map +1 -1
  5. package/dist/agent/agent.js +651 -359
  6. package/dist/agent/agent.js.map +1 -1
  7. package/dist/agent/assembler.d.ts +29 -13
  8. package/dist/agent/assembler.d.ts.map +1 -1
  9. package/dist/agent/assembler.js +79 -44
  10. package/dist/agent/assembler.js.map +1 -1
  11. package/dist/agent/builtinToolHandlers.d.ts +26 -1
  12. package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
  13. package/dist/agent/builtinToolHandlers.js +73 -1
  14. package/dist/agent/builtinToolHandlers.js.map +1 -1
  15. package/dist/agent/constants.d.ts +4 -0
  16. package/dist/agent/constants.d.ts.map +1 -1
  17. package/dist/agent/constants.js +4 -0
  18. package/dist/agent/constants.js.map +1 -1
  19. package/dist/agent/contextManager.d.ts +8 -0
  20. package/dist/agent/contextManager.d.ts.map +1 -1
  21. package/dist/agent/contextManager.js +7 -2
  22. package/dist/agent/contextManager.js.map +1 -1
  23. package/dist/agent/guardrail.d.ts +4 -2
  24. package/dist/agent/guardrail.d.ts.map +1 -1
  25. package/dist/agent/guardrail.js +13 -5
  26. package/dist/agent/guardrail.js.map +1 -1
  27. package/dist/agent/loop.d.ts +58 -14
  28. package/dist/agent/loop.d.ts.map +1 -1
  29. package/dist/agent/loop.js +184 -131
  30. package/dist/agent/loop.js.map +1 -1
  31. package/dist/agent/managers/archiveCoordinator.d.ts +126 -22
  32. package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
  33. package/dist/agent/managers/archiveCoordinator.js +239 -44
  34. package/dist/agent/managers/archiveCoordinator.js.map +1 -1
  35. package/dist/agent/managers/autoConfigRefiner.d.ts.map +1 -1
  36. package/dist/agent/managers/autoConfigRefiner.js +4 -8
  37. package/dist/agent/managers/autoConfigRefiner.js.map +1 -1
  38. package/dist/agent/managers/configManager.d.ts +87 -3
  39. package/dist/agent/managers/configManager.d.ts.map +1 -1
  40. package/dist/agent/managers/configManager.js +139 -2
  41. package/dist/agent/managers/configManager.js.map +1 -1
  42. package/dist/agent/managers/dedupManager.d.ts +169 -0
  43. package/dist/agent/managers/dedupManager.d.ts.map +1 -0
  44. package/dist/agent/managers/dedupManager.js +336 -0
  45. package/dist/agent/managers/dedupManager.js.map +1 -0
  46. package/dist/agent/managers/insightExtractor.d.ts.map +1 -1
  47. package/dist/agent/managers/insightExtractor.js +11 -11
  48. package/dist/agent/managers/insightExtractor.js.map +1 -1
  49. package/dist/agent/managers/llmJudgeHelper.d.ts +38 -0
  50. package/dist/agent/managers/llmJudgeHelper.d.ts.map +1 -0
  51. package/dist/agent/managers/llmJudgeHelper.js +49 -0
  52. package/dist/agent/managers/llmJudgeHelper.js.map +1 -0
  53. package/dist/agent/managers/memoryAdvisor.d.ts +3 -3
  54. package/dist/agent/managers/memoryAdvisor.d.ts.map +1 -1
  55. package/dist/agent/managers/memoryAdvisor.js +53 -67
  56. package/dist/agent/managers/memoryAdvisor.js.map +1 -1
  57. package/dist/agent/managers/memoryDecayScheduler.d.ts +46 -5
  58. package/dist/agent/managers/memoryDecayScheduler.d.ts.map +1 -1
  59. package/dist/agent/managers/memoryDecayScheduler.js +127 -63
  60. package/dist/agent/managers/memoryDecayScheduler.js.map +1 -1
  61. package/dist/agent/managers/memoryGovernance.d.ts +56 -0
  62. package/dist/agent/managers/memoryGovernance.d.ts.map +1 -0
  63. package/dist/agent/managers/memoryGovernance.js +63 -0
  64. package/dist/agent/managers/memoryGovernance.js.map +1 -0
  65. package/dist/agent/managers/memoryInspector.d.ts +32 -157
  66. package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
  67. package/dist/agent/managers/memoryInspector.js +70 -363
  68. package/dist/agent/managers/memoryInspector.js.map +1 -1
  69. package/dist/agent/managers/relationBuilder.js +2 -2
  70. package/dist/agent/managers/relationBuilder.js.map +1 -1
  71. package/dist/agent/managers/sessionArchiver.d.ts +6 -1
  72. package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
  73. package/dist/agent/managers/sessionArchiver.js +19 -22
  74. package/dist/agent/managers/sessionArchiver.js.map +1 -1
  75. package/dist/agent/managers/streamAccumulator.d.ts +45 -0
  76. package/dist/agent/managers/streamAccumulator.d.ts.map +1 -0
  77. package/dist/agent/managers/streamAccumulator.js +40 -0
  78. package/dist/agent/managers/streamAccumulator.js.map +1 -0
  79. package/dist/agent/managers/textPolishManager.d.ts.map +1 -1
  80. package/dist/agent/managers/textPolishManager.js +4 -7
  81. package/dist/agent/managers/textPolishManager.js.map +1 -1
  82. package/dist/agent/managers/workProjection.d.ts +16 -1
  83. package/dist/agent/managers/workProjection.d.ts.map +1 -1
  84. package/dist/agent/managers/workProjection.js +48 -24
  85. package/dist/agent/managers/workProjection.js.map +1 -1
  86. package/dist/agent/toolExecutor.d.ts +22 -2
  87. package/dist/agent/toolExecutor.d.ts.map +1 -1
  88. package/dist/agent/toolExecutor.js +28 -3
  89. package/dist/agent/toolExecutor.js.map +1 -1
  90. package/dist/agent/types.d.ts +10 -1
  91. package/dist/agent/types.d.ts.map +1 -1
  92. package/dist/agent/userFactExtractor.d.ts.map +1 -1
  93. package/dist/agent/userFactExtractor.js +7 -0
  94. package/dist/agent/userFactExtractor.js.map +1 -1
  95. package/dist/config/loader.d.ts +124 -236
  96. package/dist/config/loader.d.ts.map +1 -1
  97. package/dist/config/loader.js +273 -117
  98. package/dist/config/loader.js.map +1 -1
  99. package/dist/index.d.ts +7 -2
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.js +9 -0
  102. package/dist/index.js.map +1 -1
  103. package/dist/llm/embedding.d.ts +13 -1
  104. package/dist/llm/embedding.d.ts.map +1 -1
  105. package/dist/llm/embedding.js.map +1 -1
  106. package/dist/llm/factory.d.ts +19 -5
  107. package/dist/llm/factory.d.ts.map +1 -1
  108. package/dist/llm/factory.js +19 -37
  109. package/dist/llm/factory.js.map +1 -1
  110. package/dist/llm/openaiCompatible.d.ts.map +1 -1
  111. package/dist/llm/openaiCompatible.js +2 -9
  112. package/dist/llm/openaiCompatible.js.map +1 -1
  113. package/dist/logging/logger.d.ts +3 -1
  114. package/dist/logging/logger.d.ts.map +1 -1
  115. package/dist/logging/logger.js +47 -50
  116. package/dist/logging/logger.js.map +1 -1
  117. package/dist/memory/governance.d.ts +50 -0
  118. package/dist/memory/governance.d.ts.map +1 -0
  119. package/dist/memory/governance.js +70 -0
  120. package/dist/memory/governance.js.map +1 -0
  121. package/dist/memory/hybridMerge.d.ts +0 -4
  122. package/dist/memory/hybridMerge.d.ts.map +1 -1
  123. package/dist/memory/hybridMerge.js +19 -4
  124. package/dist/memory/hybridMerge.js.map +1 -1
  125. package/dist/memory/inMemoryRelationStore.d.ts +7 -0
  126. package/dist/memory/inMemoryRelationStore.d.ts.map +1 -1
  127. package/dist/memory/inMemoryRelationStore.js +15 -0
  128. package/dist/memory/inMemoryRelationStore.js.map +1 -1
  129. package/dist/memory/inMemoryStorage.d.ts +36 -1
  130. package/dist/memory/inMemoryStorage.d.ts.map +1 -1
  131. package/dist/memory/inMemoryStorage.js +66 -16
  132. package/dist/memory/inMemoryStorage.js.map +1 -1
  133. package/dist/memory/loader.d.ts +2 -0
  134. package/dist/memory/loader.d.ts.map +1 -1
  135. package/dist/memory/loader.js +8 -1
  136. package/dist/memory/loader.js.map +1 -1
  137. package/dist/memory/lockManager.d.ts +7 -2
  138. package/dist/memory/lockManager.d.ts.map +1 -1
  139. package/dist/memory/lockManager.js +31 -5
  140. package/dist/memory/lockManager.js.map +1 -1
  141. package/dist/memory/projectManager.d.ts +2 -1
  142. package/dist/memory/projectManager.d.ts.map +1 -1
  143. package/dist/memory/projectManager.js +21 -3
  144. package/dist/memory/projectManager.js.map +1 -1
  145. package/dist/memory/projectRegistry.d.ts +34 -1
  146. package/dist/memory/projectRegistry.d.ts.map +1 -1
  147. package/dist/memory/projectRegistry.js +99 -22
  148. package/dist/memory/projectRegistry.js.map +1 -1
  149. package/dist/memory/recall.d.ts +16 -0
  150. package/dist/memory/recall.d.ts.map +1 -1
  151. package/dist/memory/recall.js +33 -18
  152. package/dist/memory/recall.js.map +1 -1
  153. package/dist/memory/relationStore.d.ts +20 -3
  154. package/dist/memory/relationStore.d.ts.map +1 -1
  155. package/dist/memory/sourceValidation.d.ts +11 -0
  156. package/dist/memory/sourceValidation.d.ts.map +1 -1
  157. package/dist/memory/sourceValidation.js +24 -2
  158. package/dist/memory/sourceValidation.js.map +1 -1
  159. package/dist/memory/storageInterface.d.ts +26 -1
  160. package/dist/memory/storageInterface.d.ts.map +1 -1
  161. package/dist/memory/store.d.ts +22 -1
  162. package/dist/memory/store.d.ts.map +1 -1
  163. package/dist/memory/store.js +58 -20
  164. package/dist/memory/store.js.map +1 -1
  165. package/dist/memory/types.d.ts +44 -31
  166. package/dist/memory/types.d.ts.map +1 -1
  167. package/dist/memory/types.js +63 -24
  168. package/dist/memory/types.js.map +1 -1
  169. package/dist/memory/userProfile.d.ts +32 -8
  170. package/dist/memory/userProfile.d.ts.map +1 -1
  171. package/dist/memory/userProfile.js +105 -44
  172. package/dist/memory/userProfile.js.map +1 -1
  173. package/dist/memory/vectorStore.d.ts +16 -22
  174. package/dist/memory/vectorStore.d.ts.map +1 -1
  175. package/dist/memory/vectorStore.js +49 -22
  176. package/dist/memory/vectorStore.js.map +1 -1
  177. package/dist/persona/personaManager.d.ts +36 -87
  178. package/dist/persona/personaManager.d.ts.map +1 -1
  179. package/dist/persona/personaManager.js +131 -230
  180. package/dist/persona/personaManager.js.map +1 -1
  181. package/dist/skill/skillManager.d.ts +11 -57
  182. package/dist/skill/skillManager.d.ts.map +1 -1
  183. package/dist/skill/skillManager.js +46 -142
  184. package/dist/skill/skillManager.js.map +1 -1
  185. package/dist/skill/types.d.ts +2 -3
  186. package/dist/skill/types.d.ts.map +1 -1
  187. package/dist/utils/configResourceManager.d.ts +111 -0
  188. package/dist/utils/configResourceManager.d.ts.map +1 -0
  189. package/dist/utils/configResourceManager.js +148 -0
  190. package/dist/utils/configResourceManager.js.map +1 -0
  191. package/dist/utils/errors.d.ts +17 -0
  192. package/dist/utils/errors.d.ts.map +1 -1
  193. package/dist/utils/errors.js +19 -0
  194. package/dist/utils/errors.js.map +1 -1
  195. package/dist/utils/eventEmitter.d.ts +83 -6
  196. package/dist/utils/eventEmitter.d.ts.map +1 -1
  197. package/dist/utils/eventEmitter.js +23 -0
  198. package/dist/utils/eventEmitter.js.map +1 -1
  199. package/dist/utils/frontmatter.d.ts.map +1 -1
  200. package/dist/utils/frontmatter.js +4 -2
  201. package/dist/utils/frontmatter.js.map +1 -1
  202. package/dist/utils/math.d.ts +11 -0
  203. package/dist/utils/math.d.ts.map +1 -1
  204. package/dist/utils/math.js +17 -0
  205. package/dist/utils/math.js.map +1 -1
  206. package/dist/utils/segmenter.d.ts +0 -10
  207. package/dist/utils/segmenter.d.ts.map +1 -1
  208. package/dist/utils/segmenter.js +10 -1
  209. package/dist/utils/segmenter.js.map +1 -1
  210. package/docs/memora-api-reference.md +1235 -0
  211. package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +808 -0
  212. package/package.json +39 -22
@@ -1,11 +1,14 @@
1
1
  import { SOURCE_LABELS } from '../../memory/types.js';
2
2
  import { ONE_DAY_MS } from '../../memory/recall.js';
3
3
  import { nowIso } from '../../utils/time.js';
4
- // parseLlmJson 用于解析 LLM 冲突判断结果
4
+ import { roundTo } from '../../utils/math.js';
5
+ // LLM judge 三件套高阶函数(流式累积 + parseLlmJson + configError 异常封装)
6
+ import { judgeWithLlm } from '../../agent/managers/llmJudgeHelper.js';
5
7
  import { byScoreDesc } from '../../utils/array.js';
6
- import { parseLlmJson } from '../../utils/json.js';
7
8
  import { truncate } from '../../utils/strings.js';
8
9
  import { logger } from '../../logging/logger.js';
10
+ // LLM 治理源列表(v2 REPEAT-1 闭环,消除 5 处独立维护的 [INSIGHT, PROFILE, WORK_PROJECTION] 列表)
11
+ import { GOVERNANCE_SOURCES } from '../../memory/governance.js';
9
12
  // ─── 常量 ────────────────────────────────────────────────
10
13
  /** 关联推荐:每个 source 采样 top-N 条 */
11
14
  const SUGGEST_TOP_PER_SOURCE = 3;
@@ -25,8 +28,7 @@ const SOURCE_HEALTH_THRESHOLDS = {
25
28
  WARNING_DAYS: 7,
26
29
  };
27
30
  // ─── L3 冲突检测常量 ────────────────────────────────────
28
- /** 参与冲突检测的 source 标签 */
29
- const CONFLICT_SOURCES = [SOURCE_LABELS.INSIGHT, SOURCE_LABELS.PROFILE, SOURCE_LABELS.WORK_PROJECTION];
31
+ // 注:CONFLICT_SOURCES 已统一为 GOVERNANCE_SOURCES(governance.ts),消除 5 处独立维护
30
32
  /** 单个 source 内参与配对的记忆条数上限(控制 O(n²) 配对规模) */
31
33
  const CONFLICT_CANDIDATES_PER_SOURCE = 10;
32
34
  /** 单次 LLM 冲突判断的候选对数上限 */
@@ -115,8 +117,8 @@ export class MemoryAdvisor {
115
117
  entries.push({
116
118
  source,
117
119
  count,
118
- avgScore: Math.round(avgScore * 1000) / 1000,
119
- daysSinceLastAccess: Math.round(daysSinceLastAccess * 10) / 10,
120
+ avgScore: roundTo(avgScore, 3),
121
+ daysSinceLastAccess: roundTo(daysSinceLastAccess, 1),
120
122
  status,
121
123
  });
122
124
  }
@@ -159,9 +161,8 @@ export class MemoryAdvisor {
159
161
  }
160
162
  }
161
163
  }
162
- // 补充:按 source 分组采样,确保来源多样性
163
- const knownSources = [SOURCE_LABELS.INSIGHT, SOURCE_LABELS.PROFILE, SOURCE_LABELS.WORK_PROJECTION];
164
- for (const source of knownSources) {
164
+ // 补充:按 source 分组采样,确保来源多样性(治理源列表统一来自 governance.ts)
165
+ for (const source of GOVERNANCE_SOURCES) {
165
166
  const count = this.index.countBySource(source);
166
167
  if (count > 0 && !excludeSources.includes(source)) {
167
168
  const memories = this.index.getBySource(source);
@@ -212,7 +213,7 @@ export class MemoryAdvisor {
212
213
  id: memory.id,
213
214
  name: memory.name,
214
215
  source: memory.source,
215
- relevance: Math.round(relevance * 100) / 100,
216
+ relevance: roundTo(relevance, 2),
216
217
  contentPreview: truncate(memory.content, ADVISOR_PREVIEW_LEN),
217
218
  reason,
218
219
  }));
@@ -254,7 +255,7 @@ export class MemoryAdvisor {
254
255
  }
255
256
  // ── 步骤 1:加载候选记忆(每个 source 取 top 10 条,按 score 降序) ──
256
257
  const candidates = [];
257
- for (const source of CONFLICT_SOURCES) {
258
+ for (const source of GOVERNANCE_SOURCES) {
258
259
  const memories = this.index.getBySource(source);
259
260
  // 按 score 降序取 top N
260
261
  const top = memories.sort(byScoreDesc).slice(0, CONFLICT_CANDIDATES_PER_SOURCE);
@@ -343,12 +344,12 @@ export class MemoryAdvisor {
343
344
  return pairs.slice(0, CONFLICT_PAIR_LIMIT);
344
345
  }
345
346
  /**
346
- * 调用 LLM 判断单对记忆是否存在语义冲突
347
+ * 调用 LLM 判断两条记忆是否存在语义冲突
347
348
  *
348
349
  * 使用结构化 JSON 输出(hasConflict + conflictDescription + recommendation + reason),
349
- * 参照 SessionArchiver.generateSummary 的 parseLlmJson 模式。
350
+ * 流式累积 + parseLlmJson + 异常封装委托给 llmJudgeHelper.judgeWithLlm。
350
351
  *
351
- * LLM 失败时抛出异常(由 detectConflicts 捕获并降级跳过此对)。
352
+ * LLM 失败时抛出 MemoraError(由 detectConflicts 捕获并降级跳过此对)。
352
353
  *
353
354
  * @param memoryA 记忆 A
354
355
  * @param memoryB 记忆 B
@@ -357,22 +358,7 @@ export class MemoryAdvisor {
357
358
  */
358
359
  async judgeConflict(memoryA, memoryB, signal) {
359
360
  const messages = buildConflictMessages(memoryA, memoryB);
360
- let llmResponse = '';
361
- // 流式累积模式(与 TextPolishManager / SessionArchiver 一致)
362
- for await (const chunk of this.backgroundProvider.chat(messages, {
363
- maxTokens: 300,
364
- temperature: 0,
365
- timeoutMs: CONFLICT_TIMEOUT_MS,
366
- signal,
367
- })) {
368
- if (chunk.content)
369
- llmResponse += chunk.content;
370
- }
371
- // 解析 LLM 响应(JSON 格式)
372
- const parsed = parseLlmJson(llmResponse.trim());
373
- if (!parsed) {
374
- throw new Error('LLM 冲突判断返回非法 JSON');
375
- }
361
+ const parsed = await judgeWithLlm(this.backgroundProvider, messages, { maxTokens: 300, timeoutMs: CONFLICT_TIMEOUT_MS, signal }, 'LLM 冲突判断返回非法 JSON');
376
362
  // 校验 recommendation 字段(允许 'a' / 'b' / 'both',其他值忽略)
377
363
  const recRaw = parsed.recommendation;
378
364
  const recommendation = recRaw === 'a' || recRaw === 'b' || recRaw === 'both' ? recRaw : undefined;
@@ -410,47 +396,47 @@ function buildConflictMessages(memoryA, memoryB) {
410
396
  return [
411
397
  {
412
398
  role: 'system',
413
- content: `你是记忆冲突检测助手。判断给定的两条记忆是否存在语义冲突(表达互相矛盾的信息)。
414
-
415
- 判断规则:
416
- - 存在冲突 = 两条记忆表达的信息互相矛盾,不能同时为真(如"喜欢 X" vs "讨厌 X")
417
- - 无冲突 = 两条记忆信息互补、独立或不相关
418
- - 不同维度不构成冲突(如"擅长后端" vs "偏好前端"是不同维度,非冲突)
419
- - 时间演化不构成冲突(如"用 React 16" vs "用 React 18"是版本升级,非冲突)
420
-
421
- 输出 JSON 格式:
422
- {
423
- "hasConflict": true/false,
424
- "conflictDescription": "冲突点描述(仅 hasConflict=true 时提供)",
425
- "recommendation": "a/b/both(建议保留哪条:a=保留A,b=保留B,both=都保留需用户裁决)",
426
- "reason": "判断理由(简短说明)"
427
- }
428
-
429
- 示例:
430
- 输入 A: "用户喜欢使用 JavaScript"
431
- 输入 B: "用户讨厌 JavaScript"
432
- 输出: {"hasConflict": true, "conflictDescription": "对 JavaScript 的态度矛盾", "recommendation": "both", "reason": "需用户裁决当前偏好"}
433
-
434
- 输入 A: "用户擅长后端开发"
435
- 输入 B: "用户偏好前端开发"
399
+ content: `你是记忆冲突检测助手。判断给定的两条记忆是否存在语义冲突(表达互相矛盾的信息)。
400
+
401
+ 判断规则:
402
+ - 存在冲突 = 两条记忆表达的信息互相矛盾,不能同时为真(如"喜欢 X" vs "讨厌 X")
403
+ - 无冲突 = 两条记忆信息互补、独立或不相关
404
+ - 不同维度不构成冲突(如"擅长后端" vs "偏好前端"是不同维度,非冲突)
405
+ - 时间演化不构成冲突(如"用 React 16" vs "用 React 18"是版本升级,非冲突)
406
+
407
+ 输出 JSON 格式:
408
+ {
409
+ "hasConflict": true/false,
410
+ "conflictDescription": "冲突点描述(仅 hasConflict=true 时提供)",
411
+ "recommendation": "a/b/both(建议保留哪条:a=保留A,b=保留B,both=都保留需用户裁决)",
412
+ "reason": "判断理由(简短说明)"
413
+ }
414
+
415
+ 示例:
416
+ 输入 A: "用户喜欢使用 JavaScript"
417
+ 输入 B: "用户讨厌 JavaScript"
418
+ 输出: {"hasConflict": true, "conflictDescription": "对 JavaScript 的态度矛盾", "recommendation": "both", "reason": "需用户裁决当前偏好"}
419
+
420
+ 输入 A: "用户擅长后端开发"
421
+ 输入 B: "用户偏好前端开发"
436
422
  输出: {"hasConflict": false, "reason": "擅长领域与偏好领域是不同维度,非冲突"}`,
437
423
  },
438
424
  {
439
425
  role: 'user',
440
- content: `请判断以下两条记忆是否存在语义冲突:
441
-
442
- 记忆 A(score: ${memoryA.score}):
443
- - 名称:${memoryA.name}
444
- - 来源:${memoryA.source}
445
- - 创建时间:${memoryA.createdAt}
446
- - 内容:${contentA}
447
-
448
- 记忆 B(score: ${memoryB.score}):
449
- - 名称:${memoryB.name}
450
- - 来源:${memoryB.source}
451
- - 创建时间:${memoryB.createdAt}
452
- - 内容:${contentB}
453
-
426
+ content: `请判断以下两条记忆是否存在语义冲突:
427
+
428
+ 记忆 A(score: ${memoryA.score}):
429
+ - 名称:${memoryA.name}
430
+ - 来源:${memoryA.source}
431
+ - 创建时间:${memoryA.createdAt}
432
+ - 内容:${contentA}
433
+
434
+ 记忆 B(score: ${memoryB.score}):
435
+ - 名称:${memoryB.name}
436
+ - 来源:${memoryB.source}
437
+ - 创建时间:${memoryB.createdAt}
438
+ - 内容:${contentB}
439
+
454
440
  请输出 JSON 判断结果。`,
455
441
  },
456
442
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"memoryAdvisor.js","sourceRoot":"","sources":["../../../src/agent/managers/memoryAdvisor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memoryAdvisor.js","sourceRoot":"","sources":["../../../src/agent/managers/memoryAdvisor.ts"],"names":[],"mappings":"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"}
@@ -99,6 +99,21 @@ export declare class MemoryDecayScheduler {
99
99
  private decayTimer;
100
100
  /** 衰减目标存储(start 时注入,stop 时释放) */
101
101
  private storage;
102
+ /**
103
+ * L2 时效性评估的 AbortController
104
+ *
105
+ * FIX-P0-1:stop() 时 abort,让正在进行的 evaluateTimeliness 尽快结束,
106
+ * 防止 close 后 LLM 回调 upsert 已关闭的 storage。
107
+ * 每次 evaluateTimeliness 启动时重置为新的 controller。
108
+ */
109
+ private evaluateAbortController;
110
+ /**
111
+ * 当前正在进行的 evaluateTimeliness Promise(null 表示无)
112
+ *
113
+ * FIX-P0-1:close() 通过 awaitInflight() 等待此 Promise 完成,
114
+ * 确保关闭时所有 L2 评估的 upsert 都落在 storage 关闭前。
115
+ */
116
+ private inflightEvaluate;
102
117
  /** 衰减执行次数(每次 runOnce 实际执行 +1) */
103
118
  private metricDecayRunCount;
104
119
  /** 累计衰减记忆数(score 被调低的记忆条数总和) */
@@ -116,9 +131,24 @@ export declare class MemoryDecayScheduler {
116
131
  /**
117
132
  * 停止定期衰减,释放资源
118
133
  *
119
- * 清理定时器和 storage 引用,防止 close 后回调触发。
134
+ * FIX-P0-1:清理定时器 + abort 正在进行的 L2 时效性评估 + 释放 storage 引用,
135
+ * 防止 close 后回调触发 upsert 已关闭的 storage。
136
+ *
137
+ * 注意:stop() 不等待 inflightEvaluate 完成(避免阻塞 close 流程),
138
+ * 调用方如需等待应使用 awaitInflight()。abort 后 LLM 调用会快速失败,
139
+ * evaluateTimeliness 内部的 try/catch 会捕获并降级返回。
120
140
  */
121
141
  stop(): void;
142
+ /**
143
+ * 等待正在进行的 L2 时效性评估完成
144
+ *
145
+ * FIX-P0-1:Agent.close() 在 stop() 后调用此方法,确保所有 inflight 的
146
+ * evaluateTimeliness Promise 完成(要么正常返回,要么因 abort 快速 reject),
147
+ * 防止 close 后 LLM 回调 upsert 已关闭的 storage。
148
+ *
149
+ * @returns 完成 Promise,无 inflight 时立即 resolve
150
+ */
151
+ awaitInflight(): Promise<void>;
122
152
  /**
123
153
  * 执行一次记忆衰减
124
154
  *
@@ -156,17 +186,29 @@ export declare class MemoryDecayScheduler {
156
186
  * - 单条 LLM 失败不阻塞后续评估
157
187
  * - backgroundProvider / index 未注入时静默跳过(向后兼容)
158
188
  *
159
- * @param signal 可选的 AbortSignal(取消正在进行的 LLM 评估)
189
+ * FIX-P0-1:每次启动评估创建新的 AbortController,注册到 inflightEvaluate。
190
+ * stop() 时 abort 让 LLM 调用快速失败,awaitInflight() 等待 Promise 完成。
191
+ * 外部 signal 仍可与内部 abort 信号同时使用(任一触发即取消)。
192
+ *
193
+ * @param signal 可选的外部 AbortSignal(与内部 abort 信号叠加,任一触发即取消)
160
194
  * @returns 评估报告
161
195
  */
162
196
  evaluateTimeliness(signal?: AbortSignal): Promise<TimelinessReport>;
197
+ /**
198
+ * 实际执行 L2 时效性评估的核心逻辑
199
+ *
200
+ * 从 evaluateTimeliness 拆出,便于 inflightEvaluate Promise 注册和清理。
201
+ *
202
+ * @param combinedSignal 已叠加内部 + 外部的 AbortSignal
203
+ */
204
+ private doEvaluateTimeliness;
163
205
  /**
164
206
  * 调用 LLM 判断单条记忆的时效性
165
207
  *
166
208
  * 使用结构化 JSON 输出(isOutdated + reason),
167
- * 参照 SessionArchiver.generateSummary 的 parseLlmJson 模式。
209
+ * 流式累积 + parseLlmJson + 异常封装委托给 llmJudgeHelper.judgeWithLlm。
168
210
  *
169
- * LLM 失败时抛出异常(由 evaluateTimeliness 捕获并降级跳过此条)。
211
+ * LLM 失败时抛出 MemoraError(由 evaluateTimeliness 捕获并降级跳过此条)。
170
212
  *
171
213
  * @param memory 待评估的记忆
172
214
  * @param signal 可选的 AbortSignal
@@ -178,7 +220,6 @@ export declare class MemoryDecayScheduler {
178
220
  *
179
221
  * 安全设计:
180
222
  * - 不物理删除,仅降低 score,保留可恢复性
181
- * - 通过 upsert 覆盖原记忆(保持 id/source/name/createdAt 不变)
182
223
  * - 更新 accessedAt,标记最近被处理过
183
224
  *
184
225
  * @param memory 待降级的过时记忆
@@ -1 +1 @@
1
- {"version":3,"file":"memoryDecayScheduler.d.ts","sourceRoot":"","sources":["../../../src/agent/managers/memoryDecayScheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memoryDecayScheduler.d.ts","sourceRoot":"","sources":["../../../src/agent/managers/memoryDecayScheduler.ts"],"names":[],"mappings":"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"}
@@ -33,14 +33,14 @@ import { safeSetInterval, clearSafeInterval } from '../../utils/safeTimer.js';
33
33
  import { logger } from '../../logging/logger.js';
34
34
  import { toError } from '../../utils/errors.js';
35
35
  import { nowIso } from '../../utils/time.js';
36
- import { SOURCE_LABELS } from '../../memory/types.js';
37
36
  import { NOOP_TRACER, TRACE_SPANS } from '../../agent/tracer.js';
38
- // parseLlmJson 用于解析 LLM 时效性判断结果(与 SessionArchiver 同模式)
39
- import { parseLlmJson } from '../../utils/json.js';
37
+ // LLM judge 三件套高阶函数(流式累积 + parseLlmJson + configError 异常封装)
38
+ import { judgeWithLlm } from '../../agent/managers/llmJudgeHelper.js';
40
39
  import { truncate } from '../../utils/strings.js';
40
+ // LLM 治理源列表(v2 REPEAT-1 闭环,消除 5 处独立维护的 [INSIGHT, PROFILE, WORK_PROJECTION] 列表)
41
+ import { GOVERNANCE_SOURCES } from '../../memory/governance.js';
41
42
  // ─── L2 时效性评估常量 ────────────────────────────────────
42
- /** 参与时效性评估的 source 标签(与衰减范围一致) */
43
- const TIMELINESS_SOURCES = [SOURCE_LABELS.INSIGHT, SOURCE_LABELS.PROFILE, SOURCE_LABELS.WORK_PROJECTION];
43
+ // 注:TIMELINESS_SOURCES 已统一为 GOVERNANCE_SOURCES(governance.ts),消除 5 处独立维护
44
44
  /** 低分记忆阈值(score 低于此值的记忆进入 LLM 时效性评估) */
45
45
  const TIMELINESS_LOW_SCORE_THRESHOLD = 0.3;
46
46
  /** 单次时效性评估的记忆条数上限(控制 LLM 调用量) */
@@ -74,6 +74,21 @@ export class MemoryDecayScheduler {
74
74
  decayTimer = null;
75
75
  /** 衰减目标存储(start 时注入,stop 时释放) */
76
76
  storage = null;
77
+ /**
78
+ * L2 时效性评估的 AbortController
79
+ *
80
+ * FIX-P0-1:stop() 时 abort,让正在进行的 evaluateTimeliness 尽快结束,
81
+ * 防止 close 后 LLM 回调 upsert 已关闭的 storage。
82
+ * 每次 evaluateTimeliness 启动时重置为新的 controller。
83
+ */
84
+ evaluateAbortController = null;
85
+ /**
86
+ * 当前正在进行的 evaluateTimeliness Promise(null 表示无)
87
+ *
88
+ * FIX-P0-1:close() 通过 awaitInflight() 等待此 Promise 完成,
89
+ * 确保关闭时所有 L2 评估的 upsert 都落在 storage 关闭前。
90
+ */
91
+ inflightEvaluate = null;
77
92
  // ─── 衰减指标统计字段 ──────────────────────────────────
78
93
  /** 衰减执行次数(每次 runOnce 实际执行 +1) */
79
94
  metricDecayRunCount = 0;
@@ -104,15 +119,44 @@ export class MemoryDecayScheduler {
104
119
  /**
105
120
  * 停止定期衰减,释放资源
106
121
  *
107
- * 清理定时器和 storage 引用,防止 close 后回调触发。
122
+ * FIX-P0-1:清理定时器 + abort 正在进行的 L2 时效性评估 + 释放 storage 引用,
123
+ * 防止 close 后回调触发 upsert 已关闭的 storage。
124
+ *
125
+ * 注意:stop() 不等待 inflightEvaluate 完成(避免阻塞 close 流程),
126
+ * 调用方如需等待应使用 awaitInflight()。abort 后 LLM 调用会快速失败,
127
+ * evaluateTimeliness 内部的 try/catch 会捕获并降级返回。
108
128
  */
109
129
  stop() {
110
130
  if (this.decayTimer) {
111
131
  clearSafeInterval(this.decayTimer);
112
132
  this.decayTimer = null;
113
133
  }
134
+ // FIX-P0-1:abort 正在进行的 L2 评估,让 LLM 调用快速失败
135
+ if (this.evaluateAbortController) {
136
+ this.evaluateAbortController.abort();
137
+ this.evaluateAbortController = null;
138
+ }
114
139
  this.storage = null;
115
140
  }
141
+ /**
142
+ * 等待正在进行的 L2 时效性评估完成
143
+ *
144
+ * FIX-P0-1:Agent.close() 在 stop() 后调用此方法,确保所有 inflight 的
145
+ * evaluateTimeliness Promise 完成(要么正常返回,要么因 abort 快速 reject),
146
+ * 防止 close 后 LLM 回调 upsert 已关闭的 storage。
147
+ *
148
+ * @returns 完成 Promise,无 inflight 时立即 resolve
149
+ */
150
+ async awaitInflight() {
151
+ if (this.inflightEvaluate) {
152
+ try {
153
+ await this.inflightEvaluate;
154
+ }
155
+ catch {
156
+ // abort 导致的 reject 是预期行为,吞掉即可
157
+ }
158
+ }
159
+ }
116
160
  /**
117
161
  * 执行一次记忆衰减
118
162
  *
@@ -129,8 +173,8 @@ export class MemoryDecayScheduler {
129
173
  // 衰减 Span:记录衰减执行过程,补全衰减可观测性缺口
130
174
  const decaySpan = this.tracer.startSpan(TRACE_SPANS.DECAY);
131
175
  try {
132
- const sources = [SOURCE_LABELS.INSIGHT, SOURCE_LABELS.PROFILE, SOURCE_LABELS.WORK_PROJECTION];
133
- const decayedCount = this.storage.decayScores(sources, new Date());
176
+ // 治理源列表统一来自 governance.ts(v2 REPEAT-1 闭环)
177
+ const decayedCount = this.storage.decayScores([...GOVERNANCE_SOURCES], new Date());
134
178
  logger.debug({ decayedCount }, '记忆衰减完成');
135
179
  // 衰减指标统计:累计执行次数和衰减记忆数
136
180
  this.metricDecayRunCount++;
@@ -181,7 +225,11 @@ export class MemoryDecayScheduler {
181
225
  * - 单条 LLM 失败不阻塞后续评估
182
226
  * - backgroundProvider / index 未注入时静默跳过(向后兼容)
183
227
  *
184
- * @param signal 可选的 AbortSignal(取消正在进行的 LLM 评估)
228
+ * FIX-P0-1:每次启动评估创建新的 AbortController,注册到 inflightEvaluate。
229
+ * stop() 时 abort 让 LLM 调用快速失败,awaitInflight() 等待 Promise 完成。
230
+ * 外部 signal 仍可与内部 abort 信号同时使用(任一触发即取消)。
231
+ *
232
+ * @param signal 可选的外部 AbortSignal(与内部 abort 信号叠加,任一触发即取消)
185
233
  * @returns 评估报告
186
234
  */
187
235
  async evaluateTimeliness(signal) {
@@ -194,9 +242,41 @@ export class MemoryDecayScheduler {
194
242
  skippedReason: 'backgroundProvider 或 index 未注入',
195
243
  };
196
244
  }
245
+ // FIX-P0-1:每次评估创建新的 AbortController,stop() 可主动 abort
246
+ this.evaluateAbortController = new AbortController();
247
+ const internalSignal = this.evaluateAbortController.signal;
248
+ // 外部 signal 与内部 signal 叠加:任一 abort 即触发
249
+ // 使用 AbortSignal.any 需 Node 18+,兼容方案是手动转发
250
+ const combinedSignal = signal
251
+ ? AbortSignal.any([internalSignal, signal])
252
+ : internalSignal;
253
+ // 注册到 inflightEvaluate,让 awaitInflight() 可等待
254
+ const promise = this.doEvaluateTimeliness(combinedSignal);
255
+ this.inflightEvaluate = promise;
256
+ try {
257
+ return await promise;
258
+ }
259
+ finally {
260
+ // 评估完成(成功/失败/abort)后清理引用
261
+ if (this.inflightEvaluate === promise) {
262
+ this.inflightEvaluate = null;
263
+ }
264
+ if (this.evaluateAbortController?.signal === internalSignal) {
265
+ this.evaluateAbortController = null;
266
+ }
267
+ }
268
+ }
269
+ /**
270
+ * 实际执行 L2 时效性评估的核心逻辑
271
+ *
272
+ * 从 evaluateTimeliness 拆出,便于 inflightEvaluate Promise 注册和清理。
273
+ *
274
+ * @param combinedSignal 已叠加内部 + 外部的 AbortSignal
275
+ */
276
+ async doEvaluateTimeliness(signal) {
197
277
  // ── 步骤 1:加载低分记忆 ──
198
278
  const lowScoreMemories = [];
199
- for (const source of TIMELINESS_SOURCES) {
279
+ for (const source of GOVERNANCE_SOURCES) {
200
280
  const memories = this.index.getBySource(source);
201
281
  // 筛选低分记忆(score 低于阈值)
202
282
  lowScoreMemories.push(...memories.filter((m) => m.score < TIMELINESS_LOW_SCORE_THRESHOLD));
@@ -216,6 +296,9 @@ export class MemoryDecayScheduler {
216
296
  const demotedIds = [];
217
297
  let outdatedCount = 0;
218
298
  for (const memory of limited) {
299
+ // abort 后提前退出循环,避免无谓的 LLM 调用
300
+ if (signal.aborted)
301
+ break;
219
302
  try {
220
303
  const verdict = await this.judgeTimeliness(memory, signal);
221
304
  if (verdict.isOutdated) {
@@ -226,7 +309,7 @@ export class MemoryDecayScheduler {
226
309
  }
227
310
  }
228
311
  catch (err) {
229
- // 单条 LLM 判断失败不阻塞后续评估
312
+ // 单条 LLM 判断失败不阻塞后续评估(abort 导致的失败也走此分支)
230
313
  logger.warn({ err, memoryId: memory.id }, '时效性评估:LLM 判断失败,跳过此条');
231
314
  }
232
315
  }
@@ -240,9 +323,9 @@ export class MemoryDecayScheduler {
240
323
  * 调用 LLM 判断单条记忆的时效性
241
324
  *
242
325
  * 使用结构化 JSON 输出(isOutdated + reason),
243
- * 参照 SessionArchiver.generateSummary 的 parseLlmJson 模式。
326
+ * 流式累积 + parseLlmJson + 异常封装委托给 llmJudgeHelper.judgeWithLlm。
244
327
  *
245
- * LLM 失败时抛出异常(由 evaluateTimeliness 捕获并降级跳过此条)。
328
+ * LLM 失败时抛出 MemoraError(由 evaluateTimeliness 捕获并降级跳过此条)。
246
329
  *
247
330
  * @param memory 待评估的记忆
248
331
  * @param signal 可选的 AbortSignal
@@ -250,22 +333,7 @@ export class MemoryDecayScheduler {
250
333
  */
251
334
  async judgeTimeliness(memory, signal) {
252
335
  const messages = buildTimelinessMessages(memory);
253
- let llmResponse = '';
254
- // 流式累积模式(与 TextPolishManager / SessionArchiver 一致)
255
- for await (const chunk of this.backgroundProvider.chat(messages, {
256
- maxTokens: 200,
257
- temperature: 0,
258
- timeoutMs: TIMELINESS_TIMEOUT_MS,
259
- signal,
260
- })) {
261
- if (chunk.content)
262
- llmResponse += chunk.content;
263
- }
264
- // 解析 LLM 响应(JSON 格式)
265
- const parsed = parseLlmJson(llmResponse.trim());
266
- if (!parsed) {
267
- throw new Error('LLM 时效性判断返回非法 JSON');
268
- }
336
+ const parsed = await judgeWithLlm(this.backgroundProvider, messages, { maxTokens: 200, timeoutMs: TIMELINESS_TIMEOUT_MS, signal }, 'LLM 时效性判断返回非法 JSON');
269
337
  return {
270
338
  memoryId: memory.id,
271
339
  isOutdated: parsed.isOutdated === true,
@@ -277,18 +345,14 @@ export class MemoryDecayScheduler {
277
345
  *
278
346
  * 安全设计:
279
347
  * - 不物理删除,仅降低 score,保留可恢复性
280
- * - 通过 upsert 覆盖原记忆(保持 id/source/name/createdAt 不变)
281
348
  * - 更新 accessedAt,标记最近被处理过
282
349
  *
283
350
  * @param memory 待降级的过时记忆
284
351
  */
285
352
  demoteOutdatedMemory(memory) {
286
- const demoted = {
287
- ...memory,
288
- score: TIMELINESS_OUTDATED_SCORE,
289
- accessedAt: nowIso(),
290
- };
291
- this.index.upsert(demoted);
353
+ // MIND2-L3:改用 setScore 原子操作,消除 spread 旧快照覆盖其他字段
354
+ // 原模式 spread 旧快照后整条 upsert,会覆盖期间被 boost/decay 改的 content 等字段
355
+ this.index.setScore(memory.id, TIMELINESS_OUTDATED_SCORE, nowIso());
292
356
  }
293
357
  }
294
358
  // ─── L2 时效性评估 Prompt 模板(模块级函数,与 buildDedupMessages 同模式) ───
@@ -311,37 +375,37 @@ function buildTimelinessMessages(memory) {
311
375
  return [
312
376
  {
313
377
  role: 'system',
314
- content: `你是记忆时效性评估助手。判断给定的记忆是否已过时(信息已失效或不再适用)。
315
-
316
- 判断规则:
317
- - 已过时 = 信息明确失效(如旧版本号、已废弃的 API、已变更的偏好)
318
- - 未过时 = 信息仍然有效(如通用编程原则、长期偏好、历史事件记录)
319
- - 不确定时倾向"未过时"(避免误删有效记忆)
320
-
321
- 输出 JSON 格式:
322
- {
323
- "isOutdated": true/false,
324
- "reason": "判断理由(简短说明)"
325
- }
326
-
327
- 示例:
328
- 输入: "用户使用 React 16 进行开发"(createdAt: 2020-01-01)
329
- 输出: {"isOutdated": true, "reason": "React 16 已是旧版本,当前普遍使用 React 18+"}
330
-
331
- 输入: "用户偏好函数式编程风格"
378
+ content: `你是记忆时效性评估助手。判断给定的记忆是否已过时(信息已失效或不再适用)。
379
+
380
+ 判断规则:
381
+ - 已过时 = 信息明确失效(如旧版本号、已废弃的 API、已变更的偏好)
382
+ - 未过时 = 信息仍然有效(如通用编程原则、长期偏好、历史事件记录)
383
+ - 不确定时倾向"未过时"(避免误删有效记忆)
384
+
385
+ 输出 JSON 格式:
386
+ {
387
+ "isOutdated": true/false,
388
+ "reason": "判断理由(简短说明)"
389
+ }
390
+
391
+ 示例:
392
+ 输入: "用户使用 React 16 进行开发"(createdAt: 2020-01-01)
393
+ 输出: {"isOutdated": true, "reason": "React 16 已是旧版本,当前普遍使用 React 18+"}
394
+
395
+ 输入: "用户偏好函数式编程风格"
332
396
  输出: {"isOutdated": false, "reason": "编程风格偏好通常是长期的"}`,
333
397
  },
334
398
  {
335
399
  role: 'user',
336
- content: `请判断以下记忆是否已过时:
337
-
338
- 记忆详情:
339
- - 名称:${memory.name}
340
- - 来源:${memory.source}
341
- - 当前 score:${memory.score}(低分,可能因长期未访问而衰减)
342
- - 创建时间:${memory.createdAt}
343
- - 内容:${content}
344
-
400
+ content: `请判断以下记忆是否已过时:
401
+
402
+ 记忆详情:
403
+ - 名称:${memory.name}
404
+ - 来源:${memory.source}
405
+ - 当前 score:${memory.score}(低分,可能因长期未访问而衰减)
406
+ - 创建时间:${memory.createdAt}
407
+ - 内容:${content}
408
+
345
409
  请输出 JSON 判断结果。`,
346
410
  },
347
411
  ];