@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,5 +1,6 @@
1
1
  import { logger } from '../../logging/logger.js';
2
2
  import { parseLlmJson } from '../../utils/json.js';
3
+ import { accumulateStream } from '../../agent/managers/streamAccumulator.js';
3
4
  const DEFAULT_OPTIONS = {
4
5
  minConfidence: 0.6,
5
6
  maxSuggestions: 3,
@@ -82,15 +83,10 @@ export class AutoConfigRefiner {
82
83
  },
83
84
  ];
84
85
  try {
85
- // 收集流式输出
86
- let fullContent = '';
87
- for await (const chunk of this.backgroundProvider.chat(messages, {
86
+ // 收集流式输出(复用 accumulateStream 工具函数)
87
+ const fullContent = await accumulateStream(this.backgroundProvider, messages, {
88
88
  temperature: 0.3,
89
- })) {
90
- if (chunk.content) {
91
- fullContent += chunk.content;
92
- }
93
- }
89
+ });
94
90
  const parsed = parseLlmJson(fullContent || '[]');
95
91
  const items = Array.isArray(parsed) ? parsed : parsed?.suggestions ?? [];
96
92
  return items.filter((s) => s.type && s.name && s.content && typeof s.confidence === 'number');
@@ -1 +1 @@
1
- {"version":3,"file":"autoConfigRefiner.js","sourceRoot":"","sources":["../../../src/agent/managers/autoConfigRefiner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autoConfigRefiner.js","sourceRoot":"","sources":["../../../src/agent/managers/autoConfigRefiner.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,18 @@
1
1
  /**
2
- * 配置管理器 — 规则/技能注入 + 配置建议持久化
2
+ * 配置管理器 — 规则/技能注入 + 配置建议持久化 + 设定 CRUD
3
3
  *
4
4
  * 从 Agent 拆分出来,负责:
5
5
  * - addRule / addSimpleRule:运行时规则注入(SQLite + System Prompt)
6
6
  * - addSkill / addSimpleSkill:运行时技能注入(仅 SkillManager,session-only)
7
7
  * - onConfigSuggestion / confirmConfigSuggestion:模式 3 配置建议回调 + 持久化
8
+ * - deleteRule / updateRule / listRules:规则单条 CRUD(SQLite + System Prompt 同步)
9
+ * - deleteSkill / listSkills:技能单条删除与列表(SQLite + SkillManager 内存同步)
10
+ * - getBootstrapMemories:获取 rule + skill 记忆(供 AgentLoop 刷新 system prompt)
8
11
  *
9
12
  * 设计原则:
10
- * - 独立于 Agent 生命周期,仅依赖 Storage / SkillManager / Loop
13
+ * - 独立于 Agent 生命周期,仅依赖 Storage / SkillManager / 回调
11
14
  * - 不持有 LLM Provider(纯配置操作)
15
+ * - 不直接操作文件(文件 CRUD 由宿主层 configFileManager 处理,本类只管 SQLite + system prompt 同步)
12
16
  */
13
17
  import type { Memory } from '../../memory/types.js';
14
18
  import type { IMemoryStorage } from '../../memory/storageInterface.js';
@@ -46,6 +50,14 @@ export interface ConfigSuggestion {
46
50
  * 当 type 不在约定值内时,必须提供此字段,否则 confirmConfigSuggestion 抛 configError。
47
51
  */
48
52
  memorySource?: string;
53
+ /**
54
+ * 可选:写入配置文件 frontmatter 的额外元数据
55
+ *
56
+ * 键值对会合并到 frontmatter 中(如 `keywords`、`description`),
57
+ * 供 PersonaManager.parseKeywords / SkillManager 等加载时解析。
58
+ * 不传时 frontmatter 仅含标准字段(id/source/score/createdAt/accessedAt)。
59
+ */
60
+ metadata?: Record<string, string>;
49
61
  }
50
62
  /** 配置建议回调函数类型 */
51
63
  export type ConfigSuggestionHandler = (suggestion: ConfigSuggestion) => void;
@@ -54,6 +66,7 @@ export declare class ConfigManager {
54
66
  private readonly skillManager;
55
67
  private readonly injectSystemMessage;
56
68
  private readonly writeConfigFile?;
69
+ private readonly refreshBootstrapMemories?;
57
70
  /** 配置建议回调(模式 3) */
58
71
  private suggestionHandler;
59
72
  /**
@@ -61,8 +74,11 @@ export declare class ConfigManager {
61
74
  * @param skillManager - 技能管理器(运行时注入技能)
62
75
  * @param injectSystemMessage - 注入 system 消息的回调(来自 AgentLoop)
63
76
  * @param writeConfigFile - 写入配置文件的回调(来自 Agent,解耦 FileStore 依赖)
77
+ * @param refreshBootstrapMemories - 刷新 AgentLoop system prompt 中 bootstrap 段的回调
78
+ * 设定 CRUD(deleteRule/updateRule/deleteSkill)后调用,使 system prompt 中的
79
+ * rule/skill 段立即同步。由 Agent 在装配时注入(assembler.ts)。
64
80
  */
65
- constructor(index: IMemoryStorage, skillManager: SkillManager, injectSystemMessage: (message: string) => void, writeConfigFile?: ((memory: Memory) => Promise<void>) | undefined);
81
+ constructor(index: IMemoryStorage, skillManager: SkillManager, injectSystemMessage: (message: string) => void, writeConfigFile?: ((memory: Memory) => Promise<void>) | undefined, refreshBootstrapMemories?: (() => void) | undefined);
66
82
  /**
67
83
  * 注册配置建议回调(模式 3)
68
84
  *
@@ -121,5 +137,73 @@ export declare class ConfigManager {
121
137
  * 注入后仅在当前会话生效,持久化需调用 config.confirmConfigSuggestion()。
122
138
  */
123
139
  addSimpleSkill(name: string, content: string, keywords?: string[]): Promise<void>;
140
+ /**
141
+ * 删除规则(设定面板调用)
142
+ *
143
+ * 软删除 SQLite 中 source='rule' name=name 的记忆,
144
+ * 并刷新 AgentLoop system prompt 中的 bootstrap 段。
145
+ *
146
+ * 文件层删除由宿主层 configFileManager 处理(本方法不操作文件)。
147
+ * 删除后调用 refreshBootstrapMemories 回调,使 system prompt 立即同步。
148
+ *
149
+ * @param name 规则名(与 frontmatter name 字段一致)
150
+ * @returns true 删除成功;false 规则不存在
151
+ */
152
+ deleteRule(name: string): boolean;
153
+ /**
154
+ * 更新规则内容(设定面板调用)
155
+ *
156
+ * upsert SQLite 中 source='rule' name=name 的记忆,
157
+ * 并刷新 AgentLoop system prompt 中的 bootstrap 段。
158
+ *
159
+ * 文件层更新由宿主层 configFileManager 处理(本方法不操作文件)。
160
+ * 与 addRule 的区别:addRule 是新增(追加 system 消息),
161
+ * updateRule 是覆盖更新(刷新 bootstrap 段,不追加 system 消息)。
162
+ *
163
+ * content 处理:调用方传入的是完整文件内容(含 frontmatter + body),
164
+ * 本方法用 parseFrontmatter 解析后只存 body.trim(),
165
+ * 与 FileStore.parseMemory(store.ts)保持一致——避免 system prompt bootstrap 段
166
+ * 含 frontmatter 噪音,且重启后 MemoryLoader 重新加载时内容一致。
167
+ *
168
+ * @param name 规则名
169
+ * @param content 新的规则文件内容(含 frontmatter + body)
170
+ */
171
+ updateRule(name: string, content: string): void;
172
+ /**
173
+ * 列出所有规则(设定面板调用)
174
+ *
175
+ * @returns 所有 source='rule' 的活跃记忆(按 score 降序)
176
+ */
177
+ listRules(): Memory[];
178
+ /**
179
+ * 删除技能(设定面板调用)
180
+ *
181
+ * 软删除 SQLite 中 source='skill' name=name 的记忆,
182
+ * 同步清理 SkillManager 内存缓存,
183
+ * 并刷新 AgentLoop system prompt 中的 bootstrap 段。
184
+ *
185
+ * 文件层删除由宿主层 configFileManager 处理(本方法不操作文件)。
186
+ *
187
+ * @param name 技能名
188
+ * @returns true 删除成功;false 技能不存在
189
+ */
190
+ deleteSkill(name: string): boolean;
191
+ /**
192
+ * 列出所有技能(设定面板调用)
193
+ *
194
+ * @returns 所有 source='skill' 的活跃记忆(按 score 降序)
195
+ */
196
+ listSkills(): Memory[];
197
+ /**
198
+ * 获取 bootstrap 记忆(仅 Rule,供 AgentLoop 刷新 system prompt)
199
+ *
200
+ * AgentLoop 的 system prompt 中包含 bootstrap 段(rule 记忆)。
201
+ * Skill 已迁移到 per-round matchAndInjectSkill 动态注入,不再放入 bootstrap。
202
+ * 设定 CRUD 后调用 refreshBootstrapMemories 回调,回调内部调用此方法
203
+ * 获取最新的 rule 记忆,传给 AgentLoop.refreshBootstrapMemories()。
204
+ *
205
+ * @returns rule 活跃记忆数组
206
+ */
207
+ getBootstrapMemories(): Memory[];
124
208
  }
125
209
  //# sourceMappingURL=configManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"configManager.d.ts","sourceRoot":"","sources":["../../../src/agent/managers/configManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAO5D;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,iBAAiB;AACjB,MAAM,MAAM,uBAAuB,GAAG,CAAC,UAAU,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAI7E,qBAAa,aAAa;IAWtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IAbnC,mBAAmB;IACnB,OAAO,CAAC,iBAAiB,CAAwC;IAEjE;;;;;OAKG;gBAEgB,KAAK,EAAE,cAAc,EACrB,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAC9C,eAAe,CAAC,GAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,aAAA;IAKtE;;;;;OAKG;IACH,kBAAkB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;IAI1D,oBAAoB;IACpB,IAAI,kBAAkB,IAAI,uBAAuB,GAAG,IAAI,CAEvD;IAED;;;;;;;;;OASG;IACG,uBAAuB,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqE1E;;;;;;OAMG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe5C;;;;;OAKG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBjE;;;;;;;;;;;;;OAaG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB7C;;;;;;OAMG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAc5F"}
1
+ {"version":3,"file":"configManager.d.ts","sourceRoot":"","sources":["../../../src/agent/managers/configManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAS5D;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,iBAAiB;AACjB,MAAM,MAAM,uBAAuB,GAAG,CAAC,UAAU,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAI7E,qBAAa,aAAa;IActB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAjB5C,mBAAmB;IACnB,OAAO,CAAC,iBAAiB,CAAwC;IAEjE;;;;;;;;OAQG;gBAEgB,KAAK,EAAE,cAAc,EACrB,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAC9C,eAAe,CAAC,GAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,aAAA,EACnD,wBAAwB,CAAC,GAAE,MAAM,IAAI,aAAA;IAKxD;;;;;OAKG;IACH,kBAAkB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;IAI1D,oBAAoB;IACpB,IAAI,kBAAkB,IAAI,uBAAuB,GAAG,IAAI,CAEvD;IAED;;;;;;;;;OASG;IACG,uBAAuB,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA6E1E;;;;;;OAMG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe5C;;;;;OAKG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBjE;;;;;;;;;;;;;OAaG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB7C;;;;;;OAMG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB3F;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAajC;;;;;;;;;;;;;;;;;OAiBG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAwB/C;;;;OAIG;IACH,SAAS,IAAI,MAAM,EAAE;IAIrB;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAelC;;;;OAIG;IACH,UAAU,IAAI,MAAM,EAAE;IAItB;;;;;;;;;OASG;IACH,oBAAoB,IAAI,MAAM,EAAE;CAKjC"}
@@ -2,12 +2,15 @@ import { SOURCE_LABELS } from '../../memory/types.js';
2
2
  import { configError, toError } from '../../utils/errors.js';
3
3
  import { logger } from '../../logging/logger.js';
4
4
  import { nowIso } from '../../utils/time.js';
5
+ // parseFrontmatter:与 FileStore.parseMemory 保持一致的 content 处理(只存 body,去掉 frontmatter)
6
+ import { parseFrontmatter } from '../../utils/frontmatter.js';
5
7
  // ─── 类 ──────────────────────────────────────────────────
6
8
  export class ConfigManager {
7
9
  index;
8
10
  skillManager;
9
11
  injectSystemMessage;
10
12
  writeConfigFile;
13
+ refreshBootstrapMemories;
11
14
  /** 配置建议回调(模式 3) */
12
15
  suggestionHandler = null;
13
16
  /**
@@ -15,12 +18,16 @@ export class ConfigManager {
15
18
  * @param skillManager - 技能管理器(运行时注入技能)
16
19
  * @param injectSystemMessage - 注入 system 消息的回调(来自 AgentLoop)
17
20
  * @param writeConfigFile - 写入配置文件的回调(来自 Agent,解耦 FileStore 依赖)
21
+ * @param refreshBootstrapMemories - 刷新 AgentLoop system prompt 中 bootstrap 段的回调
22
+ * 设定 CRUD(deleteRule/updateRule/deleteSkill)后调用,使 system prompt 中的
23
+ * rule/skill 段立即同步。由 Agent 在装配时注入(assembler.ts)。
18
24
  */
19
- constructor(index, skillManager, injectSystemMessage, writeConfigFile) {
25
+ constructor(index, skillManager, injectSystemMessage, writeConfigFile, refreshBootstrapMemories) {
20
26
  this.index = index;
21
27
  this.skillManager = skillManager;
22
28
  this.injectSystemMessage = injectSystemMessage;
23
29
  this.writeConfigFile = writeConfigFile;
30
+ this.refreshBootstrapMemories = refreshBootstrapMemories;
24
31
  }
25
32
  // ─── 配置建议 ─────────────────────────────────────────
26
33
  /**
@@ -67,7 +74,8 @@ export class ConfigManager {
67
74
  ]);
68
75
  }
69
76
  // 构造记忆对象并写入配置文件(真理源)
70
- // 不写入 SQLite——遵守"配置文件是真理源"约束
77
+ // 写入 SQLite index(运行时索引):配置文件是真理源,SQLite 是运行时检索索引
78
+ // 两层写入语义:配置文件保证重启后自动加载;SQLite 保证当前会话 search_memories 可检索
71
79
  const now = nowIso();
72
80
  const memory = {
73
81
  id: `${source}:${suggestion.name}`,
@@ -77,6 +85,8 @@ export class ConfigManager {
77
85
  createdAt: now,
78
86
  accessedAt: now,
79
87
  score: suggestion.confidence,
88
+ // metadata 透传到 FileStore.write,合并到 frontmatter(如 keywords/description)
89
+ metadata: suggestion.metadata,
80
90
  };
81
91
  // 包裹错误处理:磁盘满/权限不足/路径越界等异常转为友好的 configError
82
92
  try {
@@ -90,6 +100,10 @@ export class ConfigManager {
90
100
  '确认进程对配置目录有写权限',
91
101
  ], e);
92
102
  }
103
+ // 同步写入 SQLite index:当前会话的 search_memories / recall 可立即检索到新创建的配置
104
+ // persona/skill 后续由 reloadConfig → SkillManager.reload / PersonaManager.reload 重新扫描覆盖,
105
+ // 但 rule 的 reloadConfig 是 no-op(agent.ts 内跳过),必须在此显式同步
106
+ this.index.upsert(memory);
93
107
  // 如果是规则,立即注入到 AgentLoop(当前会话生效,重启后由配置文件自动加载)
94
108
  if (suggestion.type === 'rule') {
95
109
  const rulePrompt = `【项目规则】${suggestion.name}\n${suggestion.content}`;
@@ -190,5 +204,128 @@ export class ConfigManager {
190
204
  };
191
205
  await this.addSkill(memory);
192
206
  }
207
+ // ─── 设定 CRUD(设定面板专用) ───────────────────────
208
+ /**
209
+ * 删除规则(设定面板调用)
210
+ *
211
+ * 软删除 SQLite 中 source='rule' name=name 的记忆,
212
+ * 并刷新 AgentLoop system prompt 中的 bootstrap 段。
213
+ *
214
+ * 文件层删除由宿主层 configFileManager 处理(本方法不操作文件)。
215
+ * 删除后调用 refreshBootstrapMemories 回调,使 system prompt 立即同步。
216
+ *
217
+ * @param name 规则名(与 frontmatter name 字段一致)
218
+ * @returns true 删除成功;false 规则不存在
219
+ */
220
+ deleteRule(name) {
221
+ const id = `rule:${name}`;
222
+ const existing = this.index.getById(id);
223
+ if (!existing) {
224
+ logger.warn({ name, id }, '删除规则失败:规则不存在');
225
+ return false;
226
+ }
227
+ this.index.delete(id);
228
+ this.refreshBootstrapMemories?.();
229
+ logger.info({ name, id }, '规则已删除');
230
+ return true;
231
+ }
232
+ /**
233
+ * 更新规则内容(设定面板调用)
234
+ *
235
+ * upsert SQLite 中 source='rule' name=name 的记忆,
236
+ * 并刷新 AgentLoop system prompt 中的 bootstrap 段。
237
+ *
238
+ * 文件层更新由宿主层 configFileManager 处理(本方法不操作文件)。
239
+ * 与 addRule 的区别:addRule 是新增(追加 system 消息),
240
+ * updateRule 是覆盖更新(刷新 bootstrap 段,不追加 system 消息)。
241
+ *
242
+ * content 处理:调用方传入的是完整文件内容(含 frontmatter + body),
243
+ * 本方法用 parseFrontmatter 解析后只存 body.trim(),
244
+ * 与 FileStore.parseMemory(store.ts)保持一致——避免 system prompt bootstrap 段
245
+ * 含 frontmatter 噪音,且重启后 MemoryLoader 重新加载时内容一致。
246
+ *
247
+ * @param name 规则名
248
+ * @param content 新的规则文件内容(含 frontmatter + body)
249
+ */
250
+ updateRule(name, content) {
251
+ const id = `rule:${name}`;
252
+ const existing = this.index.getById(id);
253
+ const now = nowIso();
254
+ // 与 FileStore.parseMemory 保持一致:只存 body(去掉 frontmatter),避免 system prompt 含噪音
255
+ const { body } = parseFrontmatter(content);
256
+ const memory = {
257
+ id,
258
+ content: body.trim(),
259
+ source: SOURCE_LABELS.RULE,
260
+ name,
261
+ createdAt: existing?.createdAt ?? now,
262
+ accessedAt: now,
263
+ score: existing?.score ?? 0.8,
264
+ };
265
+ // 若 existing 已软删除,需先 restore 再 upsert(避免"通过 upsert 复活软删除记忆"校验失败)
266
+ if (existing?.deletedAt) {
267
+ this.index.restore(id);
268
+ }
269
+ this.index.upsert(memory);
270
+ this.refreshBootstrapMemories?.();
271
+ logger.info({ name, id }, '规则已更新');
272
+ }
273
+ /**
274
+ * 列出所有规则(设定面板调用)
275
+ *
276
+ * @returns 所有 source='rule' 的活跃记忆(按 score 降序)
277
+ */
278
+ listRules() {
279
+ return this.index.getBySource(SOURCE_LABELS.RULE);
280
+ }
281
+ /**
282
+ * 删除技能(设定面板调用)
283
+ *
284
+ * 软删除 SQLite 中 source='skill' name=name 的记忆,
285
+ * 同步清理 SkillManager 内存缓存,
286
+ * 并刷新 AgentLoop system prompt 中的 bootstrap 段。
287
+ *
288
+ * 文件层删除由宿主层 configFileManager 处理(本方法不操作文件)。
289
+ *
290
+ * @param name 技能名
291
+ * @returns true 删除成功;false 技能不存在
292
+ */
293
+ deleteSkill(name) {
294
+ const id = `skill:${name}`;
295
+ const existing = this.index.getById(id);
296
+ if (!existing) {
297
+ logger.warn({ name, id }, '删除技能失败:技能不存在');
298
+ return false;
299
+ }
300
+ this.index.delete(id);
301
+ // 同步清理 SkillManager 内存缓存(deleteSkill 内部处理 name 不存在的情况)
302
+ this.skillManager.deleteSkill(name);
303
+ this.refreshBootstrapMemories?.();
304
+ logger.info({ name, id }, '技能已删除');
305
+ return true;
306
+ }
307
+ /**
308
+ * 列出所有技能(设定面板调用)
309
+ *
310
+ * @returns 所有 source='skill' 的活跃记忆(按 score 降序)
311
+ */
312
+ listSkills() {
313
+ return this.index.getBySource(SOURCE_LABELS.SKILL);
314
+ }
315
+ /**
316
+ * 获取 bootstrap 记忆(仅 Rule,供 AgentLoop 刷新 system prompt)
317
+ *
318
+ * AgentLoop 的 system prompt 中包含 bootstrap 段(rule 记忆)。
319
+ * Skill 已迁移到 per-round matchAndInjectSkill 动态注入,不再放入 bootstrap。
320
+ * 设定 CRUD 后调用 refreshBootstrapMemories 回调,回调内部调用此方法
321
+ * 获取最新的 rule 记忆,传给 AgentLoop.refreshBootstrapMemories()。
322
+ *
323
+ * @returns rule 活跃记忆数组
324
+ */
325
+ getBootstrapMemories() {
326
+ return [
327
+ ...this.index.getBySource(SOURCE_LABELS.RULE),
328
+ ];
329
+ }
193
330
  }
194
331
  //# sourceMappingURL=configManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"configManager.js","sourceRoot":"","sources":["../../../src/agent/managers/configManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configManager.js","sourceRoot":"","sources":["../../../src/agent/managers/configManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * 语义去重管理器 — L1 记忆治理子系统
3
+ *
4
+ * 从 MemoryInspector 拆分出来,专责异步 LLM 语义去重。
5
+ * 与 MemoryInspector 的分工:
6
+ * - MemoryInspector:同步读写入口(snapshot/search/stats/writeXxx/relations)
7
+ * - DedupManager:异步 LLM 治理(deduplicateMemories)
8
+ *
9
+ * 拆分理由(SPLIT-3,2026-07-21):
10
+ * - 职责分离——同步读写 vs 异步 LLM 治理是两个独立关注点
11
+ * - 依赖清晰——MemoryInspector 不再依赖 LLM Provider,纯存储读写
12
+ * - 可测试性——去重逻辑独立测试,无需 mock loop/history/advisor
13
+ * - 自包含——去重逻辑(配对 + LLM 判断 + 降级 + prompt)形成自闭合子系统
14
+ *
15
+ * 设计原则:
16
+ * - 静默降级——backgroundProvider 未注入时返回 skippedReason 报告,不抛错
17
+ * - 不物理删除——仅降级 score(→ 0.1),保留可恢复性
18
+ * - 异步执行——不阻塞主对话热路径(由宿主定时任务或用户手动触发)
19
+ *
20
+ * @module agent/managers/dedupManager
21
+ */
22
+ import type { Memory } from '../../memory/types.js';
23
+ import type { IMemoryStorage } from '../../memory/storageInterface.js';
24
+ import type { LlmProvider } from '../../llm/provider.js';
25
+ /** 名称高度相似的候选记忆对(待 LLM 判断语义等价性) */
26
+ export interface DedupPair {
27
+ /** 记忆 A(score 较高,作为保留候选) */
28
+ a: Memory;
29
+ /** 记忆 B(score 较低,作为降级候选) */
30
+ b: Memory;
31
+ /** 名称归一化相似度(0-1,越小越相似) */
32
+ nameSimilarity: number;
33
+ }
34
+ /** LLM 对单对记忆的语义等价判断结果 */
35
+ export interface DedupVerdict {
36
+ /** 是否语义等价(true → 降级低分记忆) */
37
+ isDuplicate: boolean;
38
+ /** 合并后的内容(isDuplicate=true 时提供,保留更完整的信息) */
39
+ mergedContent?: string;
40
+ /** LLM 判断理由(便于审计和调试) */
41
+ reason: string;
42
+ }
43
+ /** 降级记忆的审计详情(DedupReport.verdicts 元素,供 UI 展示"为什么降级") */
44
+ export interface DedupVerdictSummary {
45
+ /** 被降级的记忆 ID(与 demotedIds 元素一一对应) */
46
+ demotedId: string;
47
+ /** LLM 判断理由(便于用户审计降级是否合理) */
48
+ reason: string;
49
+ /** 合并后的完整内容(便于用户验证合并质量;未提供 mergedContent 时省略,渲染器负责截断展示) */
50
+ mergedContent?: string;
51
+ }
52
+ /** 语义去重报告(deduplicateMemories 返回值) */
53
+ export interface DedupReport {
54
+ /** 扫描的候选记忆总数 */
55
+ scannedCount: number;
56
+ /** 发现的名称相似对数 */
57
+ pairCount: number;
58
+ /** LLM 判定为语义等价并执行降级的对数 */
59
+ deduplicatedCount: number;
60
+ /** 被降级的记忆 ID 列表(score 降至 DEDUP_LOW_SCORE,未物理删除) */
61
+ demotedIds: string[];
62
+ /** 降级审计详情(与 demotedIds 一一对应,供 UI 展示 reason + mergedContentPreview) */
63
+ verdicts?: DedupVerdictSummary[];
64
+ /** 跳过原因(LLM 不可用 / 无候选对 / LLM 失败降级) */
65
+ skippedReason?: string;
66
+ }
67
+ /**
68
+ * 语义去重管理器
69
+ *
70
+ * 扫描名称高度相似的记忆对,调用 LLM 判断语义等价性,降级低分记忆。
71
+ *
72
+ * 装配:由 assembler.ts 在组合根创建,backgroundProvider 可选注入。
73
+ * 调用:Agent.deduplicateMemories() 透传至本类。
74
+ */
75
+ export declare class DedupManager {
76
+ private readonly index;
77
+ /** 去重完成回调(宿主可据此发射事件通知用户) */
78
+ private readonly onCompleted?;
79
+ /** 后台 LLM Provider(可选,用于语义去重等异步治理任务,未注入时降级跳过) */
80
+ private readonly backgroundProvider;
81
+ /**
82
+ * @param index - 记忆存储(用于读写候选记忆)
83
+ * @param backgroundProvider - 后台 LLM Provider(可选,用于语义去重,未注入时降级跳过)
84
+ */
85
+ constructor(index: IMemoryStorage, backgroundProvider?: LlmProvider | null,
86
+ /** 去重完成回调(宿主可据此发射事件通知用户) */
87
+ onCompleted?: ((report: DedupReport) => void) | undefined);
88
+ /**
89
+ * 语义去重:扫描名称高度相似的记忆对,调用 LLM 判断语义等价性
90
+ *
91
+ * 流程:
92
+ * 1. 从 insight/profile/work-projection 加载候选记忆(上限 50 条)
93
+ * 2. 按名称归一化 Levenshtein 距离筛选相似对(上限 10 对)
94
+ * 3. 对每对调用 LLM 判断语义等价性(结构化 JSON 输出)
95
+ * 4. 等价则降级低分记忆(score → 0.1,不物理删除,保留可恢复性)
96
+ * 5. 返回去重报告
97
+ *
98
+ * 安全设计:
99
+ * - 不物理删除——仅降级 score,用户可通过宿主 UI 手动恢复
100
+ * - LLM 失败降级——返回已处理的报告,不阻塞调用方
101
+ * - 异步执行——不阻塞主对话热路径(由宿主定时任务或用户手动触发)
102
+ * - backgroundProvider 未注入时静默跳过(返回 skippedReason)
103
+ *
104
+ * @param signal 可选的 AbortSignal(取消正在进行的 LLM 判断)
105
+ * @returns 去重报告
106
+ */
107
+ deduplicateMemories(signal?: AbortSignal): Promise<DedupReport>;
108
+ /**
109
+ * 筛选名称高度相似的候选记忆对
110
+ *
111
+ * 判定规则(满足任一即视为名称相似):
112
+ * 1. 归一化 Levenshtein 距离 ≤ 0.3(如 "用户偏好" vs "用户偏爱")
113
+ * 2. 一个名称包含另一个(如 "用户偏好" vs "用户偏好设置")
114
+ *
115
+ * 去重设计:
116
+ * - 已配对的记忆不再参与后续配对(避免 A-B-C 三元组产生 A-B + A-C + B-C 三对)
117
+ * - 候选对按相似度升序排列(越相似越优先),取前 10 对
118
+ *
119
+ * @param candidates 候选记忆列表(已按 score 降序)
120
+ * @returns 名称相似的记忆对列表(a.score ≥ b.score)
121
+ */
122
+ private findNameOverlapPairs;
123
+ /**
124
+ * 计算两个名称的归一化相似度(0-1,越小越相似)
125
+ *
126
+ * 综合两种规则取较小值:
127
+ * 1. 归一化 Levenshtein 距离 = distance / max(len_a, len_b)
128
+ * 2. 包含关系:若一个名称包含另一个,相似度 = 0(完全相似)
129
+ *
130
+ * @param nameA 名称 A
131
+ * @param nameB 名称 B
132
+ * @returns 相似度(0=完全相似,1=完全不同)
133
+ */
134
+ private static computeNameSimilarity;
135
+ /**
136
+ * 调用 LLM 判断单对记忆的语义等价性
137
+ *
138
+ * 使用结构化 JSON 输出(isDuplicate + mergedContent + reason),
139
+ * 流式累积 + parseLlmJson + 异常封装委托给 llmJudgeHelper.judgeWithLlm。
140
+ *
141
+ * LLM 失败时抛出 MemoraError(由 deduplicateMemories 捕获并降级跳过此对)。
142
+ *
143
+ * @param pair 候选记忆对
144
+ * @param signal 可选的 AbortSignal
145
+ * @returns LLM 判断结果
146
+ */
147
+ private judgeDuplicate;
148
+ /**
149
+ * 降级重复记忆(score → DEDUP_LOW_SCORE)
150
+ *
151
+ * 安全设计:
152
+ * - 不物理删除,仅降低 score,保留可恢复性
153
+ * - 合并内容由 keepMerged() 单独写回保留方 a(职责清晰:本方法只降级低分方)
154
+ *
155
+ * @param memory 待降级的记忆(低分方)
156
+ */
157
+ private demoteMemory;
158
+ /**
159
+ * 将合并内容写回保留方(高分记忆 a)
160
+ *
161
+ * 保持 a 的 id/source/name/score/createdAt 不变,仅更新 content 为合并后内容并刷新
162
+ * accessedAt,使"两条重复记忆合并为一条更完整记忆"的语义真正落库(M6 修复)。
163
+ *
164
+ * @param memory 保留方记忆(高分方)
165
+ * @param mergedContent LLM 生成的合并后完整内容
166
+ */
167
+ private keepMerged;
168
+ }
169
+ //# sourceMappingURL=dedupManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dedupManager.d.ts","sourceRoot":"","sources":["../../../src/agent/managers/dedupManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,KAAK,EAAE,WAAW,EAAW,MAAM,mBAAmB,CAAC;AAgC9D,kCAAkC;AAClC,MAAM,WAAW,SAAS;IACxB,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,0BAA0B;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,yBAAyB;AACzB,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,sCAAsC;AACtC,MAAM,WAAW,WAAW;IAC1B,gBAAgB;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mDAAmD;IACnD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID;;;;;;;GAOG;AACH,qBAAa,YAAY;IASrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAEtB,4BAA4B;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAX/B,iDAAiD;IACjD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IAExD;;;OAGG;gBAEgB,KAAK,EAAE,cAAc,EACtC,kBAAkB,GAAE,WAAW,GAAG,IAAW;IAC7C,4BAA4B;IACX,WAAW,CAAC,GAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,aAAA;IAK9D;;;;;;;;;;;;;;;;;;OAkBG;IACG,mBAAmB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAiFrE;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,oBAAoB;IAgC5B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAqBpC;;;;;;;;;;;OAWG;YACW,cAAc;IAoB5B;;;;;;;;OAQG;IACH,OAAO,CAAC,YAAY;IAMpB;;;;;;;;OAQG;IACH,OAAO,CAAC,UAAU;CASnB"}