@zooique/memora 1.0.1 → 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 (274) hide show
  1. package/README.en.md +272 -0
  2. package/README.md +150 -38
  3. package/dist/agent/agent.d.ts +257 -115
  4. package/dist/agent/agent.d.ts.map +1 -1
  5. package/dist/agent/agent.js +747 -400
  6. package/dist/agent/agent.js.map +1 -1
  7. package/dist/agent/assembler.d.ts +32 -16
  8. package/dist/agent/assembler.d.ts.map +1 -1
  9. package/dist/agent/assembler.js +83 -47
  10. package/dist/agent/assembler.js.map +1 -1
  11. package/dist/agent/builtinToolHandlers.d.ts +27 -2
  12. package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
  13. package/dist/agent/builtinToolHandlers.js +78 -5
  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 +137 -15
  28. package/dist/agent/loop.d.ts.map +1 -1
  29. package/dist/agent/loop.js +449 -270
  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/chatLockManager.d.ts +116 -0
  39. package/dist/agent/managers/chatLockManager.d.ts.map +1 -0
  40. package/dist/agent/managers/chatLockManager.js +191 -0
  41. package/dist/agent/managers/chatLockManager.js.map +1 -0
  42. package/dist/agent/managers/configManager.d.ts +87 -3
  43. package/dist/agent/managers/configManager.d.ts.map +1 -1
  44. package/dist/agent/managers/configManager.js +139 -2
  45. package/dist/agent/managers/configManager.js.map +1 -1
  46. package/dist/agent/managers/dedupManager.d.ts +169 -0
  47. package/dist/agent/managers/dedupManager.d.ts.map +1 -0
  48. package/dist/agent/managers/dedupManager.js +336 -0
  49. package/dist/agent/managers/dedupManager.js.map +1 -0
  50. package/dist/agent/managers/insightExtractor.d.ts +31 -3
  51. package/dist/agent/managers/insightExtractor.d.ts.map +1 -1
  52. package/dist/agent/managers/insightExtractor.js +130 -59
  53. package/dist/agent/managers/insightExtractor.js.map +1 -1
  54. package/dist/agent/managers/llmJudgeHelper.d.ts +38 -0
  55. package/dist/agent/managers/llmJudgeHelper.d.ts.map +1 -0
  56. package/dist/agent/managers/llmJudgeHelper.js +49 -0
  57. package/dist/agent/managers/llmJudgeHelper.js.map +1 -0
  58. package/dist/agent/managers/memoryAdvisor.d.ts +102 -2
  59. package/dist/agent/managers/memoryAdvisor.d.ts.map +1 -1
  60. package/dist/agent/managers/memoryAdvisor.js +254 -10
  61. package/dist/agent/managers/memoryAdvisor.js.map +1 -1
  62. package/dist/agent/managers/memoryDecayScheduler.d.ts +127 -1
  63. package/dist/agent/managers/memoryDecayScheduler.d.ts.map +1 -1
  64. package/dist/agent/managers/memoryDecayScheduler.js +283 -4
  65. package/dist/agent/managers/memoryDecayScheduler.js.map +1 -1
  66. package/dist/agent/managers/memoryGovernance.d.ts +56 -0
  67. package/dist/agent/managers/memoryGovernance.d.ts.map +1 -0
  68. package/dist/agent/managers/memoryGovernance.js +63 -0
  69. package/dist/agent/managers/memoryGovernance.js.map +1 -0
  70. package/dist/agent/managers/memoryInspector.d.ts +113 -30
  71. package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
  72. package/dist/agent/managers/memoryInspector.js +165 -32
  73. package/dist/agent/managers/memoryInspector.js.map +1 -1
  74. package/dist/agent/managers/relationBuilder.d.ts +4 -4
  75. package/dist/agent/managers/relationBuilder.d.ts.map +1 -1
  76. package/dist/agent/managers/relationBuilder.js +5 -4
  77. package/dist/agent/managers/relationBuilder.js.map +1 -1
  78. package/dist/agent/managers/sessionArchiver.d.ts +12 -1
  79. package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
  80. package/dist/agent/managers/sessionArchiver.js +87 -30
  81. package/dist/agent/managers/sessionArchiver.js.map +1 -1
  82. package/dist/agent/managers/sessionManager.d.ts.map +1 -1
  83. package/dist/agent/managers/sessionManager.js +9 -17
  84. package/dist/agent/managers/sessionManager.js.map +1 -1
  85. package/dist/agent/managers/streamAccumulator.d.ts +45 -0
  86. package/dist/agent/managers/streamAccumulator.d.ts.map +1 -0
  87. package/dist/agent/managers/streamAccumulator.js +40 -0
  88. package/dist/agent/managers/streamAccumulator.js.map +1 -0
  89. package/dist/agent/managers/textPolishManager.d.ts +62 -0
  90. package/dist/agent/managers/textPolishManager.d.ts.map +1 -0
  91. package/dist/agent/managers/textPolishManager.js +96 -0
  92. package/dist/agent/managers/textPolishManager.js.map +1 -0
  93. package/dist/agent/managers/workProjection.d.ts +16 -1
  94. package/dist/agent/managers/workProjection.d.ts.map +1 -1
  95. package/dist/agent/managers/workProjection.js +48 -24
  96. package/dist/agent/managers/workProjection.js.map +1 -1
  97. package/dist/agent/personaMatcher.d.ts +29 -0
  98. package/dist/agent/personaMatcher.d.ts.map +1 -0
  99. package/dist/agent/personaMatcher.js +60 -0
  100. package/dist/agent/personaMatcher.js.map +1 -0
  101. package/dist/agent/toolExecutor.d.ts +24 -4
  102. package/dist/agent/toolExecutor.d.ts.map +1 -1
  103. package/dist/agent/toolExecutor.js +30 -4
  104. package/dist/agent/toolExecutor.js.map +1 -1
  105. package/dist/agent/tracer.d.ts +31 -0
  106. package/dist/agent/tracer.d.ts.map +1 -1
  107. package/dist/agent/tracer.js +31 -0
  108. package/dist/agent/tracer.js.map +1 -1
  109. package/dist/agent/types.d.ts +133 -0
  110. package/dist/agent/types.d.ts.map +1 -1
  111. package/dist/agent/types.js +38 -0
  112. package/dist/agent/types.js.map +1 -1
  113. package/dist/agent/userFactExtractor.d.ts.map +1 -1
  114. package/dist/agent/userFactExtractor.js +7 -0
  115. package/dist/agent/userFactExtractor.js.map +1 -1
  116. package/dist/config/loader.d.ts +124 -236
  117. package/dist/config/loader.d.ts.map +1 -1
  118. package/dist/config/loader.js +296 -118
  119. package/dist/config/loader.js.map +1 -1
  120. package/dist/eval/evalRunner.d.ts +94 -0
  121. package/dist/eval/evalRunner.d.ts.map +1 -0
  122. package/dist/eval/evalRunner.js +141 -0
  123. package/dist/eval/evalRunner.js.map +1 -0
  124. package/dist/eval/evalTypes.d.ts +21 -0
  125. package/dist/eval/evalTypes.d.ts.map +1 -1
  126. package/dist/eval/evalTypes.js +15 -0
  127. package/dist/eval/evalTypes.js.map +1 -1
  128. package/dist/eval/scenarios.d.ts +33 -0
  129. package/dist/eval/scenarios.d.ts.map +1 -0
  130. package/dist/eval/scenarios.js +109 -0
  131. package/dist/eval/scenarios.js.map +1 -0
  132. package/dist/index.d.ts +45 -6
  133. package/dist/index.d.ts.map +1 -1
  134. package/dist/index.js +45 -5
  135. package/dist/index.js.map +1 -1
  136. package/dist/llm/abortSignal.d.ts +27 -0
  137. package/dist/llm/abortSignal.d.ts.map +1 -0
  138. package/dist/llm/abortSignal.js +44 -0
  139. package/dist/llm/abortSignal.js.map +1 -0
  140. package/dist/llm/embedding.d.ts +13 -12
  141. package/dist/llm/embedding.d.ts.map +1 -1
  142. package/dist/llm/embedding.js +5 -17
  143. package/dist/llm/embedding.js.map +1 -1
  144. package/dist/llm/factory.d.ts +19 -5
  145. package/dist/llm/factory.d.ts.map +1 -1
  146. package/dist/llm/factory.js +19 -37
  147. package/dist/llm/factory.js.map +1 -1
  148. package/dist/llm/openaiCompatible.d.ts.map +1 -1
  149. package/dist/llm/openaiCompatible.js +17 -34
  150. package/dist/llm/openaiCompatible.js.map +1 -1
  151. package/dist/logging/logger.d.ts +3 -1
  152. package/dist/logging/logger.d.ts.map +1 -1
  153. package/dist/logging/logger.js +47 -50
  154. package/dist/logging/logger.js.map +1 -1
  155. package/dist/memory/governance.d.ts +50 -0
  156. package/dist/memory/governance.d.ts.map +1 -0
  157. package/dist/memory/governance.js +70 -0
  158. package/dist/memory/governance.js.map +1 -0
  159. package/dist/memory/hybridMerge.d.ts +0 -4
  160. package/dist/memory/hybridMerge.d.ts.map +1 -1
  161. package/dist/memory/hybridMerge.js +19 -4
  162. package/dist/memory/hybridMerge.js.map +1 -1
  163. package/dist/memory/inMemoryRelationStore.d.ts +7 -0
  164. package/dist/memory/inMemoryRelationStore.d.ts.map +1 -1
  165. package/dist/memory/inMemoryRelationStore.js +15 -0
  166. package/dist/memory/inMemoryRelationStore.js.map +1 -1
  167. package/dist/memory/inMemoryStorage.d.ts +36 -1
  168. package/dist/memory/inMemoryStorage.d.ts.map +1 -1
  169. package/dist/memory/inMemoryStorage.js +70 -19
  170. package/dist/memory/inMemoryStorage.js.map +1 -1
  171. package/dist/memory/loader.d.ts +2 -0
  172. package/dist/memory/loader.d.ts.map +1 -1
  173. package/dist/memory/loader.js +8 -1
  174. package/dist/memory/loader.js.map +1 -1
  175. package/dist/memory/lockManager.d.ts +7 -2
  176. package/dist/memory/lockManager.d.ts.map +1 -1
  177. package/dist/memory/lockManager.js +35 -17
  178. package/dist/memory/lockManager.js.map +1 -1
  179. package/dist/memory/projectManager.d.ts +8 -7
  180. package/dist/memory/projectManager.d.ts.map +1 -1
  181. package/dist/memory/projectManager.js +33 -15
  182. package/dist/memory/projectManager.js.map +1 -1
  183. package/dist/memory/projectRegistry.d.ts +34 -1
  184. package/dist/memory/projectRegistry.d.ts.map +1 -1
  185. package/dist/memory/projectRegistry.js +100 -31
  186. package/dist/memory/projectRegistry.js.map +1 -1
  187. package/dist/memory/recall.d.ts +16 -0
  188. package/dist/memory/recall.d.ts.map +1 -1
  189. package/dist/memory/recall.js +35 -20
  190. package/dist/memory/recall.js.map +1 -1
  191. package/dist/memory/relationStore.d.ts +20 -3
  192. package/dist/memory/relationStore.d.ts.map +1 -1
  193. package/dist/memory/sourceValidation.d.ts +17 -0
  194. package/dist/memory/sourceValidation.d.ts.map +1 -1
  195. package/dist/memory/sourceValidation.js +27 -3
  196. package/dist/memory/sourceValidation.js.map +1 -1
  197. package/dist/memory/storageInterface.d.ts +26 -1
  198. package/dist/memory/storageInterface.d.ts.map +1 -1
  199. package/dist/memory/store.d.ts +22 -1
  200. package/dist/memory/store.d.ts.map +1 -1
  201. package/dist/memory/store.js +58 -20
  202. package/dist/memory/store.js.map +1 -1
  203. package/dist/memory/types.d.ts +44 -31
  204. package/dist/memory/types.d.ts.map +1 -1
  205. package/dist/memory/types.js +63 -24
  206. package/dist/memory/types.js.map +1 -1
  207. package/dist/memory/userProfile.d.ts +32 -8
  208. package/dist/memory/userProfile.d.ts.map +1 -1
  209. package/dist/memory/userProfile.js +105 -44
  210. package/dist/memory/userProfile.js.map +1 -1
  211. package/dist/memory/vectorStore.d.ts +16 -8
  212. package/dist/memory/vectorStore.d.ts.map +1 -1
  213. package/dist/memory/vectorStore.js +49 -22
  214. package/dist/memory/vectorStore.js.map +1 -1
  215. package/dist/persona/personaManager.d.ts +38 -63
  216. package/dist/persona/personaManager.d.ts.map +1 -1
  217. package/dist/persona/personaManager.js +136 -202
  218. package/dist/persona/personaManager.js.map +1 -1
  219. package/dist/skill/skillManager.d.ts +11 -57
  220. package/dist/skill/skillManager.d.ts.map +1 -1
  221. package/dist/skill/skillManager.js +46 -141
  222. package/dist/skill/skillManager.js.map +1 -1
  223. package/dist/skill/types.d.ts +2 -3
  224. package/dist/skill/types.d.ts.map +1 -1
  225. package/dist/utils/array.d.ts +24 -0
  226. package/dist/utils/array.d.ts.map +1 -0
  227. package/dist/utils/array.js +24 -0
  228. package/dist/utils/array.js.map +1 -0
  229. package/dist/utils/configResourceManager.d.ts +111 -0
  230. package/dist/utils/configResourceManager.d.ts.map +1 -0
  231. package/dist/utils/configResourceManager.js +148 -0
  232. package/dist/utils/configResourceManager.js.map +1 -0
  233. package/dist/utils/errors.d.ts +27 -8
  234. package/dist/utils/errors.d.ts.map +1 -1
  235. package/dist/utils/errors.js +31 -9
  236. package/dist/utils/errors.js.map +1 -1
  237. package/dist/utils/eventEmitter.d.ts +88 -4
  238. package/dist/utils/eventEmitter.d.ts.map +1 -1
  239. package/dist/utils/eventEmitter.js +23 -0
  240. package/dist/utils/eventEmitter.js.map +1 -1
  241. package/dist/utils/frontmatter.d.ts.map +1 -1
  242. package/dist/utils/frontmatter.js +4 -2
  243. package/dist/utils/frontmatter.js.map +1 -1
  244. package/dist/utils/math.d.ts +11 -0
  245. package/dist/utils/math.d.ts.map +1 -1
  246. package/dist/utils/math.js +17 -0
  247. package/dist/utils/math.js.map +1 -1
  248. package/dist/utils/objects.d.ts +17 -0
  249. package/dist/utils/objects.d.ts.map +1 -0
  250. package/dist/utils/objects.js +19 -0
  251. package/dist/utils/objects.js.map +1 -0
  252. package/dist/utils/segmenter.d.ts +11 -10
  253. package/dist/utils/segmenter.d.ts.map +1 -1
  254. package/dist/utils/segmenter.js +23 -1
  255. package/dist/utils/segmenter.js.map +1 -1
  256. package/dist/utils/strings.d.ts +22 -1
  257. package/dist/utils/strings.d.ts.map +1 -1
  258. package/dist/utils/strings.js +29 -1
  259. package/dist/utils/strings.js.map +1 -1
  260. package/dist/utils/time.d.ts +18 -3
  261. package/dist/utils/time.d.ts.map +1 -1
  262. package/dist/utils/time.js +24 -8
  263. package/dist/utils/time.js.map +1 -1
  264. package/dist/utils/toError.d.ts +8 -4
  265. package/dist/utils/toError.d.ts.map +1 -1
  266. package/dist/utils/toError.js +25 -5
  267. package/dist/utils/toError.js.map +1 -1
  268. package/docs/memora-api-reference.md +1235 -0
  269. package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +808 -0
  270. package/package.json +49 -22
  271. package/dist/agent/managers/memoryMutator.d.ts +0 -92
  272. package/dist/agent/managers/memoryMutator.d.ts.map +0 -1
  273. package/dist/agent/managers/memoryMutator.js +0 -94
  274. package/dist/agent/managers/memoryMutator.js.map +0 -1
@@ -14,6 +14,44 @@
14
14
  *
15
15
  * error 事件:流式过程中发生错误(如 LLM 超时、连接断开),
16
16
  * 替代裸 throw 让宿主能优雅展示错误并清理 UI(避免未处理 rejection 静默卡死)。
17
+ *
18
+ * ─── agent/ 模块依赖图(最后更新:2026-07-16) ─────────────────
19
+ * 如需精确依赖关系,请阅读各文件 import 语句。本图仅展示高层模块关系。
20
+ *
21
+ * agent.ts(门面,Agent 类)
22
+ * ├─ assembler.ts(组件装配,init 阶段)
23
+ * ├─ loop.ts(主循环,chat 阶段)
24
+ * │ ├─ toolExecutor.ts(工具执行)
25
+ * │ ├─ contextManager.ts(上下文窗口管理)
26
+ * │ ├─ messageHistory.ts(历史消息存储)
27
+ * │ ├─ guardrail.ts(护栏规则)
28
+ * │ └─ tracer.ts(可观测性 span)
29
+ * ├─ personaMatcher.ts(LLM 角色匹配,从 persona 迁入)
30
+ * ├─ userFactExtractor.ts(用户事实提取,纯函数)
31
+ * ├─ builtinToolHandlers.ts(内置工具处理器)
32
+ * └─ managers/(12 个专职 Manager)
33
+ * ├─ chatLockManager.ts(并发锁,token 机制)
34
+ * ├─ configManager.ts(配置加载)
35
+ * ├─ contextManager.ts(上下文管理)
36
+ * ├─ insightExtractor.ts(LLM 提炼,prompt 独立函数)
37
+ * ├─ memoryInspector.ts(记忆读写统一入口,ADR-014)
38
+ * ├─ memoryDecayScheduler.ts(记忆衰减调度)
39
+ * ├─ memoryAdvisor.ts(记忆建议)
40
+ * ├─ relationBuilder.ts(记忆关系构建,ADR-014 侧车)
41
+ * ├─ archiveCoordinator.ts(归档协调,emit archiveFailed)
42
+ * ├─ sessionArchiver.ts(会话归档)
43
+ * ├─ sessionManager.ts(会话状态)
44
+ * ├─ textPolishManager.ts(文本润色)
45
+ * ├─ autoConfigRefiner.ts(配置自动优化)
46
+ * └─ workProjection.ts(作品投影)
47
+ *
48
+ * 分层依赖方向(ADR-008):
49
+ * agent/ → memory/ → storage/(不可反向)
50
+ * agent/ → persona/(不可反向,persona 不调 LLM)
51
+ * agent/ → llm/(provider 注入)
52
+ * agent/ → skill/(技能加载)
53
+ * agent/ → config/(配置加载)
54
+ * ──────────────────────────────────────────────────────────
17
55
  */
18
56
  /** thinking 事件的阶段标识 */
19
57
  export type ThinkingPhase = 'recalling' | 'processing' | 'archiving';
@@ -118,6 +156,15 @@ export interface UIMessages {
118
156
  guardrailWarningPrefix?: string;
119
157
  /** 输出被护栏阻断提示模板 */
120
158
  outputBlockedByGuard?: (rule: string) => string;
159
+ /**
160
+ * Reflection(反思/自修正)提示生成函数
161
+ *
162
+ * 工具调用失败且错误可重试时,在 LLM 上下文中追加此提示,帮助 LLM 聚焦于修正而非放弃。
163
+ *
164
+ * @param remaining 剩余反思次数
165
+ * @returns 系统消息内容
166
+ */
167
+ reflectionHint?: (remaining: number) => string;
121
168
  }
122
169
  /**
123
170
  * Agent 归档模式三态控制
@@ -132,4 +179,90 @@ export interface UIMessages {
132
179
  * 归档行为保持一致——`insights-only` 下都自动,`manual` 下都需手动。
133
180
  */
134
181
  export type ArchiveMode = 'full' | 'insights-only' | 'manual';
182
+ import type { LlmProvider } from '../llm/provider.js';
183
+ import type { IVectorStore } from '../memory/vectorStore.js';
184
+ import type { IMemoryStorage } from '../memory/storageInterface.js';
185
+ import type { IMemoryRelationStore } from '../memory/relationStore.js';
186
+ import type { ISessionStore } from '../memory/sessionStore.js';
187
+ import type { ITracer } from '../agent/tracer.js';
188
+ import type { ProjectContext } from '../memory/projectManager.js';
189
+ /** Agent 构造选项 */
190
+ export interface AgentOptions {
191
+ /** 项目路径(必须) */
192
+ projectPath: string;
193
+ /** 前台 LLM Provider(必须,宿主负责创建) */
194
+ provider: LlmProvider;
195
+ /** 后台 LLM Provider(可选,用于投影等后台操作,不配时复用前台) */
196
+ backgroundProvider?: LlmProvider;
197
+ /** 配置目录(personas/rules/skills) */
198
+ configDir?: string;
199
+ /** 记忆数据目录(由宿主显式注入) */
200
+ dataDir?: string;
201
+ /** 项目注册表目录(默认与 dataDir 相同)。设为用户级路径可避免每项目重复存储 */
202
+ registryDir?: string;
203
+ /** 最大上下文 token 数(默认 120000) */
204
+ maxContextTokens?: number;
205
+ /** 默认角色名 */
206
+ persona?: string;
207
+ /** 安全权限 */
208
+ permission?: 'owner' | 'guest';
209
+ /** 允许的路径白名单 */
210
+ allowedPaths?: string[];
211
+ /** 写入确认 */
212
+ confirmWrites?: boolean;
213
+ /** 向量存储(可选,提供时启用语义搜索召回;宿主可注入任意 IVectorStore 实现) */
214
+ vectorStore?: IVectorStore;
215
+ /** 召回时排除的 source 标签(默认 ['persona', 'rule', 'skill'],这些已由 bootstrap 注入) */
216
+ recallExcludeSources?: string[];
217
+ /** 外部注入的存储实例(可选,不传则内部创建 InMemoryStorage) */
218
+ storage?: IMemoryStorage;
219
+ /** 外部注入的记忆关系存储(可选,ADR-014 侧车模型,不传则跳过关系构建) */
220
+ relationStore?: IMemoryRelationStore;
221
+ /** 外部注入的会话存储(可选,不传则仅在内存中保存) */
222
+ sessionStore?: ISessionStore;
223
+ /** 可观测性 Tracer(可选,不传则使用 NoopTracer 静默丢弃所有 span) */
224
+ tracer?: ITracer;
225
+ /** 宿主可覆盖的 UI 消息文本(默认英文,宿主覆盖为中文等) */
226
+ messages?: UIMessages;
227
+ /** 上下文超限时是否自动生成摘要(默认 true,开启后首次截断时增加 ~1-2s 延迟) */
228
+ enableContextSummary?: boolean;
229
+ /**
230
+ * 归档模式(ADR-015,默认 'full')
231
+ *
232
+ * - 'full':profile facts + insight 自动归档(对话原始内容待会话归档实现后自动)
233
+ * - 'insights-only':profile facts + insight 自动归档,对话原始内容需手动
234
+ * - 'manual':所有归档都需手动触发
235
+ */
236
+ archiveMode?: ArchiveMode;
237
+ }
238
+ /** Agent 初始化后暴露的运行时上下文 */
239
+ export type AgentContext = ProjectContext;
240
+ /** Agent 项目条目(来自 ProjectManager 注册表) */
241
+ export interface AgentProjectEntry {
242
+ name: string;
243
+ path: string;
244
+ lastOpened: string;
245
+ }
246
+ /** Agent 内部配置(构造参数分组) */
247
+ export interface AgentConfig {
248
+ dataDir: string;
249
+ registryDir: string | undefined;
250
+ maxContextTokens: number;
251
+ personaName: string | undefined;
252
+ permission: 'owner' | 'guest';
253
+ allowedPaths: string[];
254
+ confirmWrites: boolean;
255
+ vectorStore: IVectorStore | undefined;
256
+ recallExcludeSources: string[];
257
+ storage: IMemoryStorage | undefined;
258
+ relationStore: IMemoryRelationStore | undefined;
259
+ sessionStore: ISessionStore | undefined;
260
+ projectPath: string;
261
+ configDir: string | undefined;
262
+ tracer: ITracer | undefined;
263
+ messages: UIMessages | undefined;
264
+ enableContextSummary: boolean;
265
+ /** 归档模式(ADR-015,默认 'full') */
266
+ archiveMode: ArchiveMode;
267
+ }
135
268
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,uBAAuB;AACvB,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;AAErE;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAC1C;IACE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GACD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACxF;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtF;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAIrB;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7D,yCAAyC;IACzC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,uCAAuC;IACvC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,kBAAkB;IAClB,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACjD;AAID;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,eAAe,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,44 @@
14
14
  *
15
15
  * error 事件:流式过程中发生错误(如 LLM 超时、连接断开),
16
16
  * 替代裸 throw 让宿主能优雅展示错误并清理 UI(避免未处理 rejection 静默卡死)。
17
+ *
18
+ * ─── agent/ 模块依赖图(最后更新:2026-07-16) ─────────────────
19
+ * 如需精确依赖关系,请阅读各文件 import 语句。本图仅展示高层模块关系。
20
+ *
21
+ * agent.ts(门面,Agent 类)
22
+ * ├─ assembler.ts(组件装配,init 阶段)
23
+ * ├─ loop.ts(主循环,chat 阶段)
24
+ * │ ├─ toolExecutor.ts(工具执行)
25
+ * │ ├─ contextManager.ts(上下文窗口管理)
26
+ * │ ├─ messageHistory.ts(历史消息存储)
27
+ * │ ├─ guardrail.ts(护栏规则)
28
+ * │ └─ tracer.ts(可观测性 span)
29
+ * ├─ personaMatcher.ts(LLM 角色匹配,从 persona 迁入)
30
+ * ├─ userFactExtractor.ts(用户事实提取,纯函数)
31
+ * ├─ builtinToolHandlers.ts(内置工具处理器)
32
+ * └─ managers/(12 个专职 Manager)
33
+ * ├─ chatLockManager.ts(并发锁,token 机制)
34
+ * ├─ configManager.ts(配置加载)
35
+ * ├─ contextManager.ts(上下文管理)
36
+ * ├─ insightExtractor.ts(LLM 提炼,prompt 独立函数)
37
+ * ├─ memoryInspector.ts(记忆读写统一入口,ADR-014)
38
+ * ├─ memoryDecayScheduler.ts(记忆衰减调度)
39
+ * ├─ memoryAdvisor.ts(记忆建议)
40
+ * ├─ relationBuilder.ts(记忆关系构建,ADR-014 侧车)
41
+ * ├─ archiveCoordinator.ts(归档协调,emit archiveFailed)
42
+ * ├─ sessionArchiver.ts(会话归档)
43
+ * ├─ sessionManager.ts(会话状态)
44
+ * ├─ textPolishManager.ts(文本润色)
45
+ * ├─ autoConfigRefiner.ts(配置自动优化)
46
+ * └─ workProjection.ts(作品投影)
47
+ *
48
+ * 分层依赖方向(ADR-008):
49
+ * agent/ → memory/ → storage/(不可反向)
50
+ * agent/ → persona/(不可反向,persona 不调 LLM)
51
+ * agent/ → llm/(provider 注入)
52
+ * agent/ → skill/(技能加载)
53
+ * agent/ → config/(配置加载)
54
+ * ──────────────────────────────────────────────────────────
17
55
  */
18
56
  export {};
19
57
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG"}
@@ -1 +1 @@
1
- {"version":3,"file":"userFactExtractor.d.ts","sourceRoot":"","sources":["../../src/agent/userFactExtractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE,CAgFlF"}
1
+ {"version":3,"file":"userFactExtractor.d.ts","sourceRoot":"","sources":["../../src/agent/userFactExtractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE,CAuFlF"}
@@ -17,6 +17,8 @@ export function extractUserFacts(input, turnIndex) {
17
17
  if (identityMatch) {
18
18
  facts.push({
19
19
  category: 'identity',
20
+ // 显式 fieldName,冲突检测基于 category + fieldName
21
+ fieldName: '姓名',
20
22
  value: `姓名: ${identityMatch[1]}`,
21
23
  sourceTurn: turnIndex,
22
24
  confidence: 0.95,
@@ -27,6 +29,7 @@ export function extractUserFacts(input, turnIndex) {
27
29
  if (locationMatch) {
28
30
  facts.push({
29
31
  category: 'identity',
32
+ fieldName: '住址',
30
33
  value: `住址: ${locationMatch[1]}`,
31
34
  sourceTurn: turnIndex,
32
35
  confidence: 0.9,
@@ -38,6 +41,7 @@ export function extractUserFacts(input, turnIndex) {
38
41
  // 避免与 identityMatch 重复
39
42
  facts.push({
40
43
  category: 'identity',
44
+ fieldName: '职业',
41
45
  value: `职业: ${jobMatch[1]}`,
42
46
  sourceTurn: turnIndex,
43
47
  confidence: 0.85,
@@ -49,6 +53,7 @@ export function extractUserFacts(input, turnIndex) {
49
53
  if (prefMatch) {
50
54
  facts.push({
51
55
  category: 'preference',
56
+ fieldName: '偏好',
52
57
  value: `偏好: ${prefMatch[1]}`,
53
58
  sourceTurn: turnIndex,
54
59
  confidence: 0.85,
@@ -60,6 +65,7 @@ export function extractUserFacts(input, turnIndex) {
60
65
  if (toolMatch && !prefMatch) {
61
66
  facts.push({
62
67
  category: 'preference',
68
+ fieldName: '工具',
63
69
  value: `工具: ${toolMatch[1]}`,
64
70
  sourceTurn: turnIndex,
65
71
  confidence: 0.8,
@@ -71,6 +77,7 @@ export function extractUserFacts(input, turnIndex) {
71
77
  if (expertiseMatch) {
72
78
  facts.push({
73
79
  category: 'expertise',
80
+ fieldName: '专长',
74
81
  value: `专长: ${expertiseMatch[1]}`,
75
82
  sourceTurn: turnIndex,
76
83
  confidence: 0.75,
@@ -1 +1 @@
1
- {"version":3,"file":"userFactExtractor.js","sourceRoot":"","sources":["../../src/agent/userFactExtractor.ts"],"names":[],"mappings":"AAeA;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,SAAiB;IAC/D,MAAM,KAAK,GAAoB,EAAE,CAAC;IAElC,kBAAkB;IAClB,0BAA0B;IAC1B,uCAAuC;IACzC,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAChF,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,OAAO,aAAa,CAAC,CAAC,CAAC,EAAE;YAChC,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7E,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,OAAO,aAAa,CAAC,CAAC,CAAC,EAAE;YAChC,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAED,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAC1B,4DAA4D,CAC7D,CAAC;IACF,IAAI,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/B,uBAAuB;QACvB,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE;YAC3B,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,qCAAqC;IACrC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAC3B,wEAAwE,CACzE,CAAC;IACF,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE;YAC5B,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB;IACrB,6BAA6B;IAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC3E,IAAI,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE;YAC5B,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB;IACnB,qBAAqB;IACrB,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IACjF,IAAI,cAAc,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,WAAW;YACrB,KAAK,EAAE,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE;YACjC,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"userFactExtractor.js","sourceRoot":"","sources":["../../src/agent/userFactExtractor.ts"],"names":[],"mappings":"AAeA;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,SAAiB;IAC/D,MAAM,KAAK,GAAoB,EAAE,CAAC;IAElC,kBAAkB;IAClB,0BAA0B;IAC1B,uCAAuC;IACzC,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAChF,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,UAAU;YACpB,2CAA2C;YAC3C,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,OAAO,aAAa,CAAC,CAAC,CAAC,EAAE;YAChC,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7E,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,OAAO,aAAa,CAAC,CAAC,CAAC,EAAE;YAChC,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAED,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAC1B,4DAA4D,CAC7D,CAAC;IACF,IAAI,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/B,uBAAuB;QACvB,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE;YAC3B,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,qCAAqC;IACrC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAC3B,wEAAwE,CACzE,CAAC;IACF,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,YAAY;YACtB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE;YAC5B,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB;IACrB,6BAA6B;IAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC3E,IAAI,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,YAAY;YACtB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE;YAC5B,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB;IACnB,qBAAqB;IACrB,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IACjF,IAAI,cAAc,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,WAAW;YACrB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE;YACjC,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,246 +1,134 @@
1
- import { z } from 'zod';
2
- declare const ConfigSchema: z.ZodObject<{
3
- llm: z.ZodDefault<z.ZodObject<{
4
- provider: z.ZodDefault<z.ZodString>;
5
- model: z.ZodDefault<z.ZodString>;
6
- baseUrl: z.ZodOptional<z.ZodString>;
7
- apiKey: z.ZodOptional<z.ZodString>;
8
- temperature: z.ZodDefault<z.ZodNumber>;
9
- /**
10
- * 多 Provider 映射表
11
- *
12
- * key 为 Provider 别名(如 "deepseek"、"openai"),value 为 Provider 配置。
13
- * 配置后,旧扁平字段(provider/model/baseUrl/apiKey)被忽略。
14
- * 不配置时回退到旧的单 provider 行为——完全向后兼容。
15
- */
16
- providers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
17
- provider: z.ZodString;
18
- model: z.ZodString;
19
- baseUrl: z.ZodOptional<z.ZodString>;
20
- apiKey: z.ZodOptional<z.ZodString>;
21
- /** 该 Provider 的 temperature,未配置时回退到全局 llm.temperature */
22
- temperature: z.ZodOptional<z.ZodNumber>;
23
- /** 该 Provider 的上下文窗口大小(token 数),未配置时回退到 memory.maxContextTokens */
24
- contextWindow: z.ZodOptional<z.ZodNumber>;
25
- }, "strip", z.ZodTypeAny, {
26
- model: string;
27
- provider: string;
28
- apiKey?: string | undefined;
29
- temperature?: number | undefined;
30
- baseUrl?: string | undefined;
31
- contextWindow?: number | undefined;
32
- }, {
33
- model: string;
34
- provider: string;
35
- apiKey?: string | undefined;
36
- temperature?: number | undefined;
37
- baseUrl?: string | undefined;
38
- contextWindow?: number | undefined;
39
- }>>>;
40
- /**
41
- * 当前激活的 Provider 别名
42
- *
43
- * 必须与 providers 中的某个 key 一致。
44
- * 不配置时默认使用 providers 的第一个 key。
45
- */
46
- active: z.ZodOptional<z.ZodString>;
47
- /**
48
- * 后台通道配置(多 Provider 路由预留)
49
- *
50
- * 不配时所有消费者复用前台(llm)配置——零破坏性,完全向后兼容。
51
- * 配置后,归档/投影/画像等后台操作使用此通道,降低成本。
52
- * 详见接入指南 §九
53
- */
54
- background: z.ZodOptional<z.ZodObject<{
55
- provider: z.ZodString;
56
- model: z.ZodString;
57
- baseUrl: z.ZodOptional<z.ZodString>;
58
- apiKey: z.ZodOptional<z.ZodString>;
59
- temperature: z.ZodDefault<z.ZodNumber>;
60
- }, "strip", z.ZodTypeAny, {
61
- temperature: number;
62
- model: string;
63
- provider: string;
64
- apiKey?: string | undefined;
65
- baseUrl?: string | undefined;
66
- }, {
67
- model: string;
68
- provider: string;
69
- apiKey?: string | undefined;
70
- temperature?: number | undefined;
71
- baseUrl?: string | undefined;
72
- }>>;
73
- }, "strip", z.ZodTypeAny, {
74
- temperature: number;
75
- model: string;
76
- provider: string;
77
- apiKey?: string | undefined;
78
- active?: string | undefined;
79
- baseUrl?: string | undefined;
80
- providers?: Record<string, {
81
- model: string;
82
- provider: string;
83
- apiKey?: string | undefined;
84
- temperature?: number | undefined;
85
- baseUrl?: string | undefined;
86
- contextWindow?: number | undefined;
87
- }> | undefined;
88
- background?: {
89
- temperature: number;
90
- model: string;
91
- provider: string;
92
- apiKey?: string | undefined;
93
- baseUrl?: string | undefined;
94
- } | undefined;
95
- }, {
96
- apiKey?: string | undefined;
97
- temperature?: number | undefined;
98
- model?: string | undefined;
99
- active?: string | undefined;
100
- provider?: string | undefined;
101
- baseUrl?: string | undefined;
102
- providers?: Record<string, {
103
- model: string;
104
- provider: string;
105
- apiKey?: string | undefined;
106
- temperature?: number | undefined;
107
- baseUrl?: string | undefined;
108
- contextWindow?: number | undefined;
109
- }> | undefined;
110
- background?: {
111
- model: string;
112
- provider: string;
113
- apiKey?: string | undefined;
114
- temperature?: number | undefined;
115
- baseUrl?: string | undefined;
116
- } | undefined;
117
- }>>;
118
- memory: z.ZodDefault<z.ZodObject<{
119
- dataDir: z.ZodDefault<z.ZodString>;
120
- maxContextTokens: z.ZodDefault<z.ZodNumber>;
121
- }, "strip", z.ZodTypeAny, {
122
- maxContextTokens: number;
123
- dataDir: string;
124
- }, {
125
- maxContextTokens?: number | undefined;
126
- dataDir?: string | undefined;
127
- }>>;
128
- security: z.ZodDefault<z.ZodObject<{
129
- permission: z.ZodDefault<z.ZodEnum<["owner", "guest"]>>;
130
- confirmWrites: z.ZodDefault<z.ZodBoolean>;
131
- }, "strip", z.ZodTypeAny, {
132
- permission: "owner" | "guest";
133
- confirmWrites: boolean;
134
- }, {
135
- permission?: "owner" | "guest" | undefined;
136
- confirmWrites?: boolean | undefined;
137
- }>>;
138
- allowedPaths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
139
- persona: z.ZodOptional<z.ZodString>;
1
+ interface ProviderConfig {
140
2
  /**
141
- * Embedding 配置(可选,配置后启用向量语义召回)
3
+ * Provider 标识(仅用于日志,不影响路由)
142
4
  *
143
- * 复用 OpenAI 兼容协议的 /embeddings 端点。
144
- * 不配置时降级为纯关键词召回(当前行为)。
5
+ * 宿主 UI 用此字段存储模式标识('cloud' / 'local' / 厂商名),
6
+ * 内核仅作透传,不依据此字段做路由决策。
145
7
  */
146
- embedding: z.ZodOptional<z.ZodObject<{
147
- model: z.ZodString;
148
- baseUrl: z.ZodOptional<z.ZodString>;
149
- apiKey: z.ZodOptional<z.ZodString>;
150
- }, "strip", z.ZodTypeAny, {
151
- model: string;
152
- apiKey?: string | undefined;
153
- baseUrl?: string | undefined;
154
- }, {
155
- model: string;
156
- apiKey?: string | undefined;
157
- baseUrl?: string | undefined;
158
- }>>;
159
- }, "strip", z.ZodTypeAny, {
160
- llm: {
161
- temperature: number;
162
- model: string;
163
- provider: string;
164
- apiKey?: string | undefined;
165
- active?: string | undefined;
166
- baseUrl?: string | undefined;
167
- providers?: Record<string, {
168
- model: string;
169
- provider: string;
170
- apiKey?: string | undefined;
171
- temperature?: number | undefined;
172
- baseUrl?: string | undefined;
173
- contextWindow?: number | undefined;
174
- }> | undefined;
175
- background?: {
176
- temperature: number;
177
- model: string;
178
- provider: string;
179
- apiKey?: string | undefined;
180
- baseUrl?: string | undefined;
181
- } | undefined;
182
- };
183
- security: {
184
- permission: "owner" | "guest";
185
- confirmWrites: boolean;
186
- };
187
- memory: {
188
- maxContextTokens: number;
189
- dataDir: string;
190
- };
8
+ provider: string;
9
+ /** 模型名称 */
10
+ model: string;
11
+ /** API 基础 URL(可选——内核不做预设回退,缺失时工厂会报错) */
12
+ baseUrl?: string;
13
+ /** API 密钥(可选,从环境变量读取。本地 LLM 如 Ollama 可为空字符串) */
14
+ apiKey?: string;
15
+ /** 该 Provider 的 temperature,未配置时回退到全局 llm.temperature */
16
+ temperature?: number;
17
+ /** 该 Provider 的上下文窗口大小(token 数),未配置时回退到 memory.maxContextTokens */
18
+ contextWindow?: number;
19
+ }
20
+ /**
21
+ * 后台通道配置接口(多 Provider 路由预留)
22
+ *
23
+ * 不配时所有消费者复用前台(llm)配置——零破坏性,完全向后兼容。
24
+ * 配置后,归档/投影/画像等后台操作使用此通道,降低成本。
25
+ * 详见接入指南 §九
26
+ */
27
+ interface BackgroundConfig {
28
+ /** Provider 名称 */
29
+ provider: string;
30
+ /** 模型名称 */
31
+ model: string;
32
+ /** API 基础 URL(可选) */
33
+ baseUrl?: string;
34
+ /** API 密钥(可选,从环境变量读取) */
35
+ apiKey?: string;
36
+ /** 该通道的 temperature */
37
+ temperature: number;
38
+ }
39
+ /**
40
+ * LLM 配置接口
41
+ *
42
+ * provider 允许任意字符串:内核仅内置 'mock' 一种机制(用于无 API Key 的测试/降级),
43
+ * 其他厂商 provider(deepseek/openai/doubao 等)需宿主或用户显式配置 baseUrl + model。
44
+ * 详见 ADR-003(内核只提供机制,不预设厂商策略)
45
+ */
46
+ interface LlmConfig {
47
+ /** Provider 名称 */
48
+ provider: string;
49
+ /** 模型名称 */
50
+ model: string;
51
+ /** API 基础 URL(可选) */
52
+ baseUrl?: string;
53
+ /** API 密钥(可选,从环境变量读取。本地 LLM 可为空) */
54
+ apiKey?: string;
55
+ /** 采样温度(0-2) */
56
+ temperature: number;
57
+ /**
58
+ * 多 Provider 映射表
59
+ *
60
+ * key 为 Provider 别名(如 "deepseek"、"openai"),value 为 Provider 配置。
61
+ * 配置后,旧扁平字段(provider/model/baseUrl/apiKey)被忽略。
62
+ * 不配置时回退到旧的单 provider 行为——完全向后兼容。
63
+ */
64
+ providers?: Record<string, ProviderConfig>;
65
+ /**
66
+ * 当前激活的 Provider 别名
67
+ *
68
+ * 必须与 providers 中的某个 key 一致。
69
+ * 不配置时默认使用 providers 的第一个 key。
70
+ */
71
+ active?: string;
72
+ /**
73
+ * 后台通道配置(多 Provider 路由预留)
74
+ *
75
+ * 不配时所有消费者复用前台(llm)配置——零破坏性,完全向后兼容。
76
+ * 配置后,归档/投影/画像等后台操作使用此通道,降低成本。
77
+ * 详见接入指南 §九
78
+ */
79
+ background?: BackgroundConfig;
80
+ }
81
+ /** 内存配置接口 */
82
+ interface MemoryConfig {
83
+ /** 数据存储目录 */
84
+ dataDir: string;
85
+ /** 最大上下文 token 数 */
86
+ maxContextTokens: number;
87
+ }
88
+ /** 安全配置接口 */
89
+ interface SecurityConfig {
90
+ /** 权限级别:owner(所有者)或 guest(访客) */
91
+ permission: 'owner' | 'guest';
92
+ /** 是否确认写入操作 */
93
+ confirmWrites: boolean;
94
+ }
95
+ /**
96
+ * Embedding 配置接口(可选,配置后启用向量语义召回)
97
+ *
98
+ * 复用 OpenAI 兼容协议的 /embeddings 端点。
99
+ * 不配置时降级为纯关键词召回(当前行为)。
100
+ */
101
+ interface EmbeddingConfig {
102
+ /** Embedding 模型名称 */
103
+ model: string;
104
+ /** API 基础 URL(可选) */
105
+ baseUrl?: string;
106
+ /** API 密钥(可选,从环境变量读取) */
107
+ apiKey?: string;
108
+ }
109
+ /** 完整配置接口 */
110
+ export interface Config {
111
+ /** LLM 配置 */
112
+ llm: LlmConfig;
113
+ /** 内存配置 */
114
+ memory: MemoryConfig;
115
+ /** 安全配置 */
116
+ security: SecurityConfig;
117
+ /** 允许的路径白名单(绝对路径) */
191
118
  allowedPaths: string[];
192
- persona?: string | undefined;
193
- embedding?: {
194
- model: string;
195
- apiKey?: string | undefined;
196
- baseUrl?: string | undefined;
197
- } | undefined;
198
- }, {
199
- persona?: string | undefined;
200
- llm?: {
201
- apiKey?: string | undefined;
202
- temperature?: number | undefined;
203
- model?: string | undefined;
204
- active?: string | undefined;
205
- provider?: string | undefined;
206
- baseUrl?: string | undefined;
207
- providers?: Record<string, {
208
- model: string;
209
- provider: string;
210
- apiKey?: string | undefined;
211
- temperature?: number | undefined;
212
- baseUrl?: string | undefined;
213
- contextWindow?: number | undefined;
214
- }> | undefined;
215
- background?: {
216
- model: string;
217
- provider: string;
218
- apiKey?: string | undefined;
219
- temperature?: number | undefined;
220
- baseUrl?: string | undefined;
221
- } | undefined;
222
- } | undefined;
223
- security?: {
224
- permission?: "owner" | "guest" | undefined;
225
- confirmWrites?: boolean | undefined;
226
- } | undefined;
227
- memory?: {
228
- maxContextTokens?: number | undefined;
229
- dataDir?: string | undefined;
230
- } | undefined;
231
- allowedPaths?: string[] | undefined;
232
- embedding?: {
233
- model: string;
234
- apiKey?: string | undefined;
235
- baseUrl?: string | undefined;
236
- } | undefined;
237
- }>;
238
- export type Config = z.infer<typeof ConfigSchema>;
119
+ /** 默认角色名(对应 personas/*.md) */
120
+ persona?: string;
121
+ /** Embedding 配置(可选) */
122
+ embedding?: EmbeddingConfig;
123
+ }
239
124
  /**
240
125
  * 加载配置
241
126
  *
242
- * 单一真理源:所有默认值由 ConfigSchema 的 .default() 声明,
243
- * 不再维护独立的 DEFAULT_CONFIG 常量(避免两处真理源打架)。
127
+ * 单一真理源:所有默认值由 DEFAULT_CONFIG 声明,
128
+ * 不再维护独立的 schema(避免两处真理源打架)。
129
+ *
130
+ * 查找顺序:显式 configPath → 项目级 .memora/config.json → 内置默认值。
131
+ * 用户级配置路径由宿主通过 configPath 显式传入。
244
132
  *
245
133
  * @param configPath 显式指定的配置文件路径
246
134
  */
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgCxB,QAAA,MAAM,YAAY;;;;;;;QASZ;;;;;;WAMG;;;;;;YA7BP,yDAAyD;;YAEzD,mEAAmE;;;;;;;;;;;;;;;;;QA6B/D;;;;;WAKG;;QAEH;;;;;;WAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4BP;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQH,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BrE"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAgCA,UAAU,cAAc;IACtB;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,UAAU,gBAAgB;IACxB,kBAAkB;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,UAAU,SAAS;IAEjB,kBAAkB;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC3C;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED,aAAa;AACb,UAAU,YAAY;IACpB,aAAa;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,aAAa;AACb,UAAU,cAAc;IACtB,iCAAiC;IACjC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,eAAe;IACf,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,UAAU,eAAe;IACvB,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,aAAa;AACb,MAAM,WAAW,MAAM;IACrB,aAAa;IACb,GAAG,EAAE,SAAS,CAAC;IACf,WAAW;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW;IACX,QAAQ,EAAE,cAAc,CAAC;IACzB,qBAAqB;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAgSD;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBrE"}