@zooique/memora 1.0.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/README.md +4 -4
  2. package/dist/agent/agent.d.ts +66 -99
  3. package/dist/agent/agent.d.ts.map +1 -1
  4. package/dist/agent/agent.js +263 -208
  5. package/dist/agent/agent.js.map +1 -1
  6. package/dist/agent/assembler.d.ts +3 -3
  7. package/dist/agent/assembler.d.ts.map +1 -1
  8. package/dist/agent/assembler.js +10 -9
  9. package/dist/agent/assembler.js.map +1 -1
  10. package/dist/agent/builtinToolHandlers.d.ts +1 -1
  11. package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
  12. package/dist/agent/builtinToolHandlers.js +5 -4
  13. package/dist/agent/builtinToolHandlers.js.map +1 -1
  14. package/dist/agent/loop.d.ts +79 -1
  15. package/dist/agent/loop.d.ts.map +1 -1
  16. package/dist/agent/loop.js +315 -189
  17. package/dist/agent/loop.js.map +1 -1
  18. package/dist/agent/managers/chatLockManager.d.ts +116 -0
  19. package/dist/agent/managers/chatLockManager.d.ts.map +1 -0
  20. package/dist/agent/managers/chatLockManager.js +191 -0
  21. package/dist/agent/managers/chatLockManager.js.map +1 -0
  22. package/dist/agent/managers/insightExtractor.d.ts +31 -3
  23. package/dist/agent/managers/insightExtractor.d.ts.map +1 -1
  24. package/dist/agent/managers/insightExtractor.js +122 -51
  25. package/dist/agent/managers/insightExtractor.js.map +1 -1
  26. package/dist/agent/managers/memoryAdvisor.d.ts +102 -2
  27. package/dist/agent/managers/memoryAdvisor.d.ts.map +1 -1
  28. package/dist/agent/managers/memoryAdvisor.js +262 -4
  29. package/dist/agent/managers/memoryAdvisor.js.map +1 -1
  30. package/dist/agent/managers/memoryDecayScheduler.d.ts +85 -0
  31. package/dist/agent/managers/memoryDecayScheduler.d.ts.map +1 -1
  32. package/dist/agent/managers/memoryDecayScheduler.js +215 -0
  33. package/dist/agent/managers/memoryDecayScheduler.js.map +1 -1
  34. package/dist/agent/managers/memoryInspector.d.ts +222 -14
  35. package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
  36. package/dist/agent/managers/memoryInspector.js +436 -10
  37. package/dist/agent/managers/memoryInspector.js.map +1 -1
  38. package/dist/agent/managers/relationBuilder.d.ts +4 -4
  39. package/dist/agent/managers/relationBuilder.d.ts.map +1 -1
  40. package/dist/agent/managers/relationBuilder.js +3 -2
  41. package/dist/agent/managers/relationBuilder.js.map +1 -1
  42. package/dist/agent/managers/sessionArchiver.d.ts +6 -0
  43. package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
  44. package/dist/agent/managers/sessionArchiver.js +68 -8
  45. package/dist/agent/managers/sessionArchiver.js.map +1 -1
  46. package/dist/agent/managers/sessionManager.d.ts.map +1 -1
  47. package/dist/agent/managers/sessionManager.js +9 -17
  48. package/dist/agent/managers/sessionManager.js.map +1 -1
  49. package/dist/agent/managers/textPolishManager.d.ts +62 -0
  50. package/dist/agent/managers/textPolishManager.d.ts.map +1 -0
  51. package/dist/agent/managers/textPolishManager.js +99 -0
  52. package/dist/agent/managers/textPolishManager.js.map +1 -0
  53. package/dist/agent/personaMatcher.d.ts +29 -0
  54. package/dist/agent/personaMatcher.d.ts.map +1 -0
  55. package/dist/agent/personaMatcher.js +60 -0
  56. package/dist/agent/personaMatcher.js.map +1 -0
  57. package/dist/agent/toolExecutor.d.ts +2 -2
  58. package/dist/agent/toolExecutor.d.ts.map +1 -1
  59. package/dist/agent/toolExecutor.js +2 -1
  60. package/dist/agent/toolExecutor.js.map +1 -1
  61. package/dist/agent/tracer.d.ts +31 -0
  62. package/dist/agent/tracer.d.ts.map +1 -1
  63. package/dist/agent/tracer.js +31 -0
  64. package/dist/agent/tracer.js.map +1 -1
  65. package/dist/agent/types.d.ts +124 -0
  66. package/dist/agent/types.d.ts.map +1 -1
  67. package/dist/agent/types.js +38 -0
  68. package/dist/agent/types.js.map +1 -1
  69. package/dist/config/loader.d.ts +4 -4
  70. package/dist/config/loader.js +23 -1
  71. package/dist/config/loader.js.map +1 -1
  72. package/dist/eval/evalRunner.d.ts +94 -0
  73. package/dist/eval/evalRunner.d.ts.map +1 -0
  74. package/dist/eval/evalRunner.js +141 -0
  75. package/dist/eval/evalRunner.js.map +1 -0
  76. package/dist/eval/evalTypes.d.ts +21 -0
  77. package/dist/eval/evalTypes.d.ts.map +1 -1
  78. package/dist/eval/evalTypes.js +15 -0
  79. package/dist/eval/evalTypes.js.map +1 -1
  80. package/dist/eval/scenarios.d.ts +33 -0
  81. package/dist/eval/scenarios.d.ts.map +1 -0
  82. package/dist/eval/scenarios.js +109 -0
  83. package/dist/eval/scenarios.js.map +1 -0
  84. package/dist/index.d.ts +41 -7
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +36 -5
  87. package/dist/index.js.map +1 -1
  88. package/dist/llm/abortSignal.d.ts +27 -0
  89. package/dist/llm/abortSignal.d.ts.map +1 -0
  90. package/dist/llm/abortSignal.js +44 -0
  91. package/dist/llm/abortSignal.js.map +1 -0
  92. package/dist/llm/embedding.d.ts +1 -12
  93. package/dist/llm/embedding.d.ts.map +1 -1
  94. package/dist/llm/embedding.js +5 -17
  95. package/dist/llm/embedding.js.map +1 -1
  96. package/dist/llm/openaiCompatible.d.ts.map +1 -1
  97. package/dist/llm/openaiCompatible.js +15 -25
  98. package/dist/llm/openaiCompatible.js.map +1 -1
  99. package/dist/memory/inMemoryStorage.d.ts.map +1 -1
  100. package/dist/memory/inMemoryStorage.js +7 -6
  101. package/dist/memory/inMemoryStorage.js.map +1 -1
  102. package/dist/memory/lockManager.d.ts.map +1 -1
  103. package/dist/memory/lockManager.js +4 -12
  104. package/dist/memory/lockManager.js.map +1 -1
  105. package/dist/memory/projectManager.d.ts +6 -6
  106. package/dist/memory/projectManager.d.ts.map +1 -1
  107. package/dist/memory/projectManager.js +12 -12
  108. package/dist/memory/projectManager.js.map +1 -1
  109. package/dist/memory/projectRegistry.d.ts.map +1 -1
  110. package/dist/memory/projectRegistry.js +4 -12
  111. package/dist/memory/projectRegistry.js.map +1 -1
  112. package/dist/memory/recall.js +2 -2
  113. package/dist/memory/recall.js.map +1 -1
  114. package/dist/memory/sourceValidation.d.ts +6 -0
  115. package/dist/memory/sourceValidation.d.ts.map +1 -1
  116. package/dist/memory/sourceValidation.js +3 -1
  117. package/dist/memory/sourceValidation.js.map +1 -1
  118. package/dist/memory/vectorStore.d.ts +16 -2
  119. package/dist/memory/vectorStore.d.ts.map +1 -1
  120. package/dist/memory/vectorStore.js.map +1 -1
  121. package/dist/persona/personaManager.d.ts +30 -4
  122. package/dist/persona/personaManager.d.ts.map +1 -1
  123. package/dist/persona/personaManager.js +47 -14
  124. package/dist/persona/personaManager.js.map +1 -1
  125. package/dist/skill/skillManager.d.ts.map +1 -1
  126. package/dist/skill/skillManager.js +2 -1
  127. package/dist/skill/skillManager.js.map +1 -1
  128. package/dist/utils/array.d.ts +24 -0
  129. package/dist/utils/array.d.ts.map +1 -0
  130. package/dist/utils/array.js +24 -0
  131. package/dist/utils/array.js.map +1 -0
  132. package/dist/utils/errors.d.ts +10 -8
  133. package/dist/utils/errors.d.ts.map +1 -1
  134. package/dist/utils/errors.js +12 -9
  135. package/dist/utils/errors.js.map +1 -1
  136. package/dist/utils/eventEmitter.d.ts +7 -0
  137. package/dist/utils/eventEmitter.d.ts.map +1 -1
  138. package/dist/utils/eventEmitter.js.map +1 -1
  139. package/dist/utils/objects.d.ts +17 -0
  140. package/dist/utils/objects.d.ts.map +1 -0
  141. package/dist/utils/objects.js +19 -0
  142. package/dist/utils/objects.js.map +1 -0
  143. package/dist/utils/segmenter.d.ts +11 -0
  144. package/dist/utils/segmenter.d.ts.map +1 -1
  145. package/dist/utils/segmenter.js +13 -0
  146. package/dist/utils/segmenter.js.map +1 -1
  147. package/dist/utils/strings.d.ts +22 -1
  148. package/dist/utils/strings.d.ts.map +1 -1
  149. package/dist/utils/strings.js +29 -1
  150. package/dist/utils/strings.js.map +1 -1
  151. package/dist/utils/time.d.ts +18 -3
  152. package/dist/utils/time.d.ts.map +1 -1
  153. package/dist/utils/time.js +24 -8
  154. package/dist/utils/time.js.map +1 -1
  155. package/dist/utils/toError.d.ts +8 -4
  156. package/dist/utils/toError.d.ts.map +1 -1
  157. package/dist/utils/toError.js +25 -5
  158. package/dist/utils/toError.js.map +1 -1
  159. package/package.json +11 -1
  160. package/dist/agent/managers/memoryMutator.d.ts +0 -92
  161. package/dist/agent/managers/memoryMutator.d.ts.map +0 -1
  162. package/dist/agent/managers/memoryMutator.js +0 -94
  163. package/dist/agent/managers/memoryMutator.js.map +0 -1
@@ -81,7 +81,13 @@ export class AgentLoop {
81
81
  });
82
82
  }
83
83
  /**
84
- * 处理一轮用户输入
84
+ * 处理一轮用户输入(编排方法)
85
+ *
86
+ * 拆分为 4 个子方法:
87
+ * - handleRecallAndInputGuard:召回注入 + 输入护栏
88
+ * - handleIteration:单次迭代编排(abort 检查 + LLM 调用 + 分支路由)
89
+ * - handleToolCalls:工具调用分支 + Reflection
90
+ * - handleTextResponse:纯文本结束 + 输出护栏
85
91
  *
86
92
  * @param userInput - 用户原始输入
87
93
  * @param recalledMemories - 记忆召回结果(Agent.memory.search() 产出),
@@ -95,168 +101,20 @@ export class AgentLoop {
95
101
  inputLength: userInput.length,
96
102
  });
97
103
  try {
98
- // 注入记忆召回结果(agent上下文组装协议 §1:Agent 记忆召回结果层)
99
- const recallSpan = this.tracer.startSpan(TRACE_SPANS.RECALL, {
100
- recallCount: recalledMemories?.length ?? 0,
101
- });
102
- // 将召回记忆以 system 消息注入(优先级高、不污染 user 输入)
103
- // 替代旧方案:嵌入 user 消息+反指令→模型易混淆
104
- if (recalledMemories?.length) {
105
- this.injectRecallAsSystem(recalledMemories);
106
- }
107
- // 补充 span 属性:让宿主监控面板能按命中/未命中过滤
108
- recallSpan.setAttribute('hit', recalledMemories !== undefined && recalledMemories.length > 0);
109
- recallSpan.end();
110
- // 召回命中率统计:每轮对话算一次召回,结果非空算命中
111
- this.metricRecallTotalCount++;
112
- if (recalledMemories && recalledMemories.length > 0) {
113
- this.metricRecallHitCount++;
114
- }
115
- // 有记忆召回时,通知上层(用于 UI 展示"召回透明度"——记忆名称 + 相似度)
116
- // 暴露 id/name/score/source 摘要,不泄露完整 content
117
- if (recalledMemories?.length) {
118
- yield {
119
- type: 'recall',
120
- memories: recalledMemories.map((m) => ({
121
- id: m.id,
122
- name: m.name,
123
- score: m.score,
124
- source: m.source,
125
- })),
126
- };
127
- }
128
- // 输入护栏检查:在用户输入注入上下文之前,检查是否命中护栏规则
129
- // 护栏自身异常时降级为"放行 + 记日志",不阻断用户对话
130
- const inputGuardResult = runGuardrails(this.guardrailRules, userInput, this.ui);
131
- if (inputGuardResult.blocked) {
132
- // P3: try/finally 确保 done 一定送达,即使 text yield 异常
133
- // guardrailBlocked: true 让 eval 框架和宿主 UI 通过结构化字段判断护栏触发
134
- try {
135
- yield {
136
- type: 'text',
137
- content: inputGuardResult.message ?? 'Input blocked by guardrail',
138
- guardrailBlocked: true,
139
- };
140
- }
141
- finally {
142
- yield { type: 'done' };
143
- }
104
+ // 1. 召回注入 + 输入护栏(返回 true 表示已 block 并 yield done,应 return)
105
+ if (yield* this.handleRecallAndInputGuard(userInput, recalledMemories))
144
106
  return;
145
- }
146
- if (inputGuardResult.warning) {
147
- // warn 级别只通知,不阻断
148
- yield {
149
- type: 'text',
150
- content: `${this.ui.guardrailWarningPrefix} ${inputGuardResult.warning}`,
151
- };
152
- }
153
- // 安全规范 §6:用户输入用 <user_input> 标签包裹,增强 LLM 对注入攻击的免疫力
107
+ // 2. 用户消息 push(安全规范 §6:用 <user_input> 标签包裹,增强 LLM 对注入攻击的免疫力)
154
108
  this.messages.push({ role: 'user', content: `<user_input>${userInput}</user_input>` });
109
+ // 3. 迭代循环
155
110
  let iteration = 0;
156
111
  while (iteration < this.maxIterations) {
157
112
  iteration++;
158
- logger.debug({ iteration, messageCount: this.messages.length }, 'Agent Loop 迭代');
159
- // 每次迭代前检查是否已被取消
160
- if (signal?.aborted) {
161
- yield { type: 'aborted', reason: this.ui.abortedByUser };
113
+ const result = yield* this.handleIteration(iteration, signal);
114
+ if (result === 'aborted' || result === 'done')
162
115
  return;
163
- }
164
- // 调用 LLM(带重试 + 截断保护)
165
- const chatOpts = this.buildChatOptions();
166
- // 上下文摘要:如果启用且首次截断,生成摘要
167
- let contextSummary;
168
- if (this.enableContextSummary &&
169
- this.contextManager.shouldTruncate(this.messages)) {
170
- // 摘要缓存管理已移至 ContextManager.getOrCreateSummary
171
- // 传入 signal,让摘要生成可被用户取消中断(避免 generator 挂起)
172
- contextSummary = await this.contextManager.getOrCreateSummary(this.messages, signal);
173
- }
174
- const safeMessages = this.contextManager.truncateMessages(this.messages, contextSummary);
175
- // 截断后同步替换工作记忆,防止 messages 数组无限增长
176
- // 持久化由 MessageHistory 负责,工作记忆只需保留当前上下文窗口内的消息
177
- if (safeMessages !== this.messages) {
178
- this.messages = [...safeMessages];
179
- }
180
- const llmResult = yield* this.callLlmWithRetry(safeMessages, chatOpts, signal, iteration);
181
- if (llmResult.aborted) {
182
- // LLM 调用中断时仍保留已生成的部分文本到上下文消息列表
183
- // 让下一轮 LLM 能看到中断响应(追加 interrupted 标记让 LLM 识别非完整回复)
184
- // 注意:工具调用中断(execResult.aborted)不在此处理,因 executeToolCalls
185
- // 已 push assistant(含 toolCalls),追加文本标记会破坏工具调用结构
186
- if (llmResult.fullContent.trim()) {
187
- this.messages.push({
188
- role: 'assistant',
189
- content: llmResult.fullContent + this.ui.interrupted,
190
- });
191
- }
192
- yield { type: 'aborted', reason: this.ui.abortedByUser };
193
- return;
194
- }
195
- // 工具调用分支
196
- if (llmResult.toolCalls && llmResult.toolCalls.length > 0) {
197
- const execResult = yield* this.executeToolCalls(llmResult.toolCalls, llmResult.fullContent, signal);
198
- if (execResult.aborted) {
199
- yield { type: 'aborted', reason: this.ui.abortedByUser };
200
- return;
201
- }
202
- // Reflection(反思/自修正):检查是否有可重试的错误
203
- // 如果工具结果中有 retryable 错误,在 LLM 上下文中追加反思提示
204
- // 帮助 LLM 聚焦于修正而非放弃
205
- const hasRetryableError = this.messages
206
- .slice(-llmResult.toolCalls.length) // 只看本轮工具结果
207
- .some((m) => m.role === 'tool' && this.isRetryableToolError(m.content));
208
- if (hasRetryableError) {
209
- // 反思次数限制:通过前缀匹配统计已推送的 REFLECTION_HINT 消息
210
- // (实际推送的 content 带有后缀说明,需用 startsWith 而非严格相等)
211
- const reflectionHint = this.messages.filter((m) => m.role === 'system' && m.content.startsWith('[REFLECTION_HINT]')).length;
212
- if (reflectionHint < this.maxReflectionRetries) {
213
- this.messages.push({
214
- role: 'system',
215
- content: `[REFLECTION_HINT] 上次工具调用失败,错误可重试。请分析错误原因,修正参数后重新调用工具。剩余反思次数:${this.maxReflectionRetries - reflectionHint}`,
216
- });
217
- }
218
- }
219
- // 继续循环:把工具结果回填给 LLM
220
- continue;
221
- }
222
- // 纯文本结束
223
- if (llmResult.fullContent) {
224
- this.messages.push({ role: 'assistant', content: llmResult.fullContent });
225
- }
226
- else {
227
- // LLM 返回空响应(既无文本也无工具调用)的兜底处理
228
- // 正常 LLM 不会返回空响应,但某些 provider 异常/边界情况下可能发生
229
- logger.warn({ iteration }, 'LLM 返回空响应(无文本、无工具调用),使用兜底提示');
230
- const fallbackText = '(模型未返回有效内容,请重试或换一种方式提问)';
231
- this.messages.push({ role: 'assistant', content: fallbackText });
232
- yield { type: 'text', content: fallbackText };
233
- }
234
- // 输出护栏检查:在响应返回给用户之前,检查是否命中护栏规则
235
- const outputGuardResult = runGuardrails(this.guardrailRules, llmResult.fullContent, this.ui);
236
- if (outputGuardResult.blocked) {
237
- // P3: try/finally 确保 done 一定送达,即使 text yield 异常
238
- // guardrailBlocked: true 让 eval 框架和宿主 UI 通过结构化字段判断护栏触发
239
- try {
240
- yield {
241
- type: 'text',
242
- content: outputGuardResult.message ?? 'Output blocked by guardrail',
243
- guardrailBlocked: true,
244
- };
245
- }
246
- finally {
247
- yield { type: 'done' };
248
- }
249
- return;
250
- }
251
- if (outputGuardResult.warning) {
252
- yield {
253
- type: 'text',
254
- content: `${this.ui.guardrailWarningPrefix} ${outputGuardResult.warning}`,
255
- };
256
- }
257
- yield { type: 'done' };
258
- return;
259
116
  }
117
+ // 4. 最大迭代兜底
260
118
  logger.warn({ iterations: iteration }, '达到最大迭代次数');
261
119
  yield { type: 'text', content: this.ui.maxIterationsReached };
262
120
  yield { type: 'done' };
@@ -265,6 +123,232 @@ export class AgentLoop {
265
123
  responseSpan.end();
266
124
  }
267
125
  }
126
+ /**
127
+ * 召回注入 + 输入护栏(processUserInput 子方法 1/4)
128
+ *
129
+ * 职责:
130
+ * - 注入记忆召回结果(system 消息,优先级高、不污染 user 输入)
131
+ * - 召回命中率统计(metricRecallTotalCount / metricRecallHitCount)
132
+ * - 通知上层 UI 召回透明度(yield recall chunk)
133
+ * - 输入护栏检查(block 时 yield text + done,warn 时 yield text)
134
+ *
135
+ * @yields recall / text(guardrail block/warn)/ done(block 时)
136
+ * @returns true 表示输入被 block 已 yield done,调用方应 return;false 表示继续
137
+ */
138
+ async *handleRecallAndInputGuard(userInput, recalledMemories) {
139
+ // 注入记忆召回结果(agent上下文组装协议 §1:Agent 记忆召回结果层)
140
+ const recallSpan = this.tracer.startSpan(TRACE_SPANS.RECALL, {
141
+ recallCount: recalledMemories?.length ?? 0,
142
+ });
143
+ // 将召回记忆以 system 消息注入(优先级高、不污染 user 输入)
144
+ if (recalledMemories?.length) {
145
+ this.injectRecallAsSystem(recalledMemories);
146
+ }
147
+ // 补充 span 属性:让宿主监控面板能按命中/未命中过滤
148
+ recallSpan.setAttribute('hit', recalledMemories !== undefined && recalledMemories.length > 0);
149
+ recallSpan.end();
150
+ // 召回命中率统计:每轮对话算一次召回,结果非空算命中
151
+ this.metricRecallTotalCount++;
152
+ if (recalledMemories && recalledMemories.length > 0) {
153
+ this.metricRecallHitCount++;
154
+ }
155
+ // 有记忆召回时,通知上层(用于 UI 展示"召回透明度"——记忆名称 + 相似度)
156
+ // 暴露 id/name/score/source 摘要,不泄露完整 content
157
+ if (recalledMemories?.length) {
158
+ yield {
159
+ type: 'recall',
160
+ memories: recalledMemories.map((m) => ({
161
+ id: m.id,
162
+ name: m.name,
163
+ score: m.score,
164
+ source: m.source,
165
+ })),
166
+ };
167
+ }
168
+ // 输入护栏检查:在用户输入注入上下文之前,检查是否命中护栏规则
169
+ // 护栏自身异常时降级为"放行 + 记日志",不阻断用户对话
170
+ const inputGuardSpan = this.tracer.startSpan(TRACE_SPANS.GUARDRAIL_INPUT, {
171
+ ruleCount: this.guardrailRules.length,
172
+ });
173
+ const inputGuardResult = runGuardrails(this.guardrailRules, userInput, this.ui);
174
+ inputGuardSpan.setAttribute('blocked', inputGuardResult.blocked);
175
+ inputGuardSpan.setAttribute('warned', !!inputGuardResult.warning);
176
+ inputGuardSpan.end();
177
+ if (inputGuardResult.blocked) {
178
+ // P3: try/finally 确保 done 一定送达,即使 text yield 异常
179
+ // guardrailBlocked: true 让 eval 框架和宿主 UI 通过结构化字段判断护栏触发
180
+ try {
181
+ yield {
182
+ type: 'text',
183
+ content: inputGuardResult.message ?? 'Input blocked by guardrail',
184
+ guardrailBlocked: true,
185
+ };
186
+ }
187
+ finally {
188
+ yield { type: 'done' };
189
+ }
190
+ return true;
191
+ }
192
+ if (inputGuardResult.warning) {
193
+ // warn 级别只通知,不阻断
194
+ yield {
195
+ type: 'text',
196
+ content: `${this.ui.guardrailWarningPrefix} ${inputGuardResult.warning}`,
197
+ };
198
+ }
199
+ return false;
200
+ }
201
+ /**
202
+ * 单次迭代编排(processUserInput 子方法 2/4)
203
+ *
204
+ * 职责:
205
+ * - abort 检查
206
+ * - 上下文摘要 + 截断
207
+ * - LLM 调用(callLlmWithRetry)
208
+ * - LLM 中断处理
209
+ * - 分支路由:工具调用 → handleToolCalls;纯文本 → handleTextResponse
210
+ *
211
+ * @yields text / aborted / done(由子方法委托)
212
+ * @returns 'aborted' | 'done' | 'continue'(continue 表示继续下一轮迭代)
213
+ */
214
+ async *handleIteration(iteration, signal) {
215
+ logger.debug({ iteration, messageCount: this.messages.length }, 'Agent Loop 迭代');
216
+ // 每次迭代前检查是否已被取消
217
+ if (signal?.aborted) {
218
+ yield { type: 'aborted', reason: this.ui.abortedByUser };
219
+ return 'aborted';
220
+ }
221
+ // 调用 LLM(带重试 + 截断保护)
222
+ const chatOpts = this.buildChatOptions();
223
+ // 上下文摘要:如果启用且首次截断,生成摘要
224
+ let contextSummary;
225
+ if (this.enableContextSummary &&
226
+ this.contextManager.shouldTruncate(this.messages)) {
227
+ // 摘要缓存管理已移至 ContextManager.getOrCreateSummary
228
+ // 传入 signal,让摘要生成可被用户取消中断(避免 generator 挂起)
229
+ contextSummary = await this.contextManager.getOrCreateSummary(this.messages, signal);
230
+ }
231
+ const safeMessages = this.contextManager.truncateMessages(this.messages, contextSummary);
232
+ // 截断后同步替换工作记忆,防止 messages 数组无限增长
233
+ // 持久化由 MessageHistory 负责,工作记忆只需保留当前上下文窗口内的消息
234
+ if (safeMessages !== this.messages) {
235
+ this.messages = [...safeMessages];
236
+ }
237
+ const llmResult = yield* this.callLlmWithRetry(safeMessages, chatOpts, signal, iteration);
238
+ if (llmResult.aborted) {
239
+ // LLM 调用中断时仍保留已生成的部分文本到上下文消息列表
240
+ // 让下一轮 LLM 能看到中断响应(追加 interrupted 标记让 LLM 识别非完整回复)
241
+ // 注意:工具调用中断(execResult.aborted)不在此处理,因 executeToolCalls
242
+ // 已 push assistant(含 toolCalls),追加文本标记会破坏工具调用结构
243
+ if (llmResult.fullContent.trim()) {
244
+ this.messages.push({
245
+ role: 'assistant',
246
+ content: llmResult.fullContent + this.ui.interrupted,
247
+ });
248
+ }
249
+ yield { type: 'aborted', reason: this.ui.abortedByUser };
250
+ return 'aborted';
251
+ }
252
+ // 工具调用分支
253
+ if (llmResult.toolCalls && llmResult.toolCalls.length > 0) {
254
+ return yield* this.handleToolCalls(llmResult, signal);
255
+ }
256
+ // 纯文本结束分支
257
+ return yield* this.handleTextResponse(llmResult);
258
+ }
259
+ /**
260
+ * 工具调用分支 + Reflection(processUserInput 子方法 3/4)
261
+ *
262
+ * 职责:
263
+ * - executeToolCalls 执行工具调用
264
+ * - abort 检查(工具执行中断)
265
+ * - Reflection:检查可重试错误,追加反思提示
266
+ *
267
+ * @yields aborted(工具执行中断时)
268
+ * @returns 'aborted' | 'continue'(continue 表示工具结果已回填,继续下一轮 LLM 调用)
269
+ */
270
+ async *handleToolCalls(llmResult, signal) {
271
+ const execResult = yield* this.executeToolCalls(llmResult.toolCalls, llmResult.fullContent, signal);
272
+ if (execResult.aborted) {
273
+ yield { type: 'aborted', reason: this.ui.abortedByUser };
274
+ return 'aborted';
275
+ }
276
+ // Reflection(反思/自修正):检查是否有可重试的错误
277
+ // 如果工具结果中有 retryable 错误,在 LLM 上下文中追加反思提示
278
+ // 帮助 LLM 聚焦于修正而非放弃
279
+ const hasRetryableError = this.messages
280
+ .slice(-llmResult.toolCalls.length) // 只看本轮工具结果
281
+ .some((m) => m.role === 'tool' && this.isRetryableToolError(m.content));
282
+ if (hasRetryableError) {
283
+ // 反思次数限制:通过前缀匹配统计已推送的 REFLECTION_HINT 消息
284
+ // (实际推送的 content 带有后缀说明,需用 startsWith 而非严格相等)
285
+ const reflectionHint = this.messages.filter((m) => m.role === 'system' && m.content.startsWith('[REFLECTION_HINT]')).length;
286
+ if (reflectionHint < this.maxReflectionRetries) {
287
+ this.messages.push({
288
+ role: 'system',
289
+ content: `[REFLECTION_HINT] 上次工具调用失败,错误可重试。请分析错误原因,修正参数后重新调用工具。剩余反思次数:${this.maxReflectionRetries - reflectionHint}`,
290
+ });
291
+ }
292
+ }
293
+ // 继续循环:把工具结果回填给 LLM
294
+ return 'continue';
295
+ }
296
+ /**
297
+ * 纯文本结束 + 输出护栏(processUserInput 子方法 4/4)
298
+ *
299
+ * 职责:
300
+ * - push assistant 消息(含空响应兜底)
301
+ * - 输出护栏检查(block 时 yield text + done,warn 时 yield text)
302
+ * - yield done 结束本轮对话
303
+ *
304
+ * @yields text(空响应兜底 / guardrail block/warn)/ done
305
+ * @returns 'done'(调用方收到后 return)
306
+ */
307
+ async *handleTextResponse(llmResult) {
308
+ // 纯文本结束
309
+ if (llmResult.fullContent) {
310
+ this.messages.push({ role: 'assistant', content: llmResult.fullContent });
311
+ }
312
+ else {
313
+ // LLM 返回空响应(既无文本也无工具调用)的兜底处理
314
+ // 正常 LLM 不会返回空响应,但某些 provider 异常/边界情况下可能发生
315
+ logger.warn('LLM 返回空响应(无文本、无工具调用),使用兜底提示');
316
+ const fallbackText = '(模型未返回有效内容,请重试或换一种方式提问)';
317
+ this.messages.push({ role: 'assistant', content: fallbackText });
318
+ yield { type: 'text', content: fallbackText };
319
+ }
320
+ // 输出护栏检查:在响应返回给用户之前,检查是否命中护栏规则
321
+ const outputGuardSpan = this.tracer.startSpan(TRACE_SPANS.GUARDRAIL_OUTPUT, {
322
+ ruleCount: this.guardrailRules.length,
323
+ });
324
+ const outputGuardResult = runGuardrails(this.guardrailRules, llmResult.fullContent, this.ui);
325
+ outputGuardSpan.setAttribute('blocked', outputGuardResult.blocked);
326
+ outputGuardSpan.setAttribute('warned', !!outputGuardResult.warning);
327
+ outputGuardSpan.end();
328
+ if (outputGuardResult.blocked) {
329
+ // P3: try/finally 确保 done 一定送达,即使 text yield 异常
330
+ // guardrailBlocked: true 让 eval 框架和宿主 UI 通过结构化字段判断护栏触发
331
+ try {
332
+ yield {
333
+ type: 'text',
334
+ content: outputGuardResult.message ?? 'Output blocked by guardrail',
335
+ guardrailBlocked: true,
336
+ };
337
+ }
338
+ finally {
339
+ yield { type: 'done' };
340
+ }
341
+ return 'done';
342
+ }
343
+ if (outputGuardResult.warning) {
344
+ yield {
345
+ type: 'text',
346
+ content: `${this.ui.guardrailWarningPrefix} ${outputGuardResult.warning}`,
347
+ };
348
+ }
349
+ yield { type: 'done' };
350
+ return 'done';
351
+ }
268
352
  /**
269
353
  * 调用 LLM(带指数退避重试)
270
354
  *
@@ -418,43 +502,33 @@ export class AgentLoop {
418
502
  content: fullContent,
419
503
  toolCalls,
420
504
  });
421
- // 执行工具
505
+ // 执行工具(E-803 并行优化:独立 tool_call 并发执行,事件按原始顺序 yield)
506
+ // 设计:方案 B(保持顺序的并发)
507
+ // - 并发发起所有工具执行(Promise.all,真并发,总耗时 ≈ 最慢的工具)
508
+ // - 批量 yield tool_start(UI 按 toolCallId 创建所有工具卡片)
509
+ // - 按原始顺序 push messages + yield tool_result(保证 Reflection slice(-N) 正确)
510
+ // - messages 顺序确定 → Reflection 的 slice(-toolCalls.length) 仍取到本轮完整结果
511
+ // - 宿主 UI 按 toolCallId 配对 tool_start/tool_result,不依赖严格交替顺序
512
+ // 执行前检查取消(批量,避免 abort 后还发起工具)
513
+ if (signal?.aborted) {
514
+ return { aborted: true };
515
+ }
516
+ // 1. 批量 yield tool_start + 并发发起所有工具执行
517
+ const toolPromises = [];
422
518
  for (const tc of toolCalls) {
423
- // 工具执行前检查取消
424
- if (signal?.aborted) {
425
- return { aborted: true };
426
- }
427
519
  // 工具调用统计:每次工具执行 +1
428
520
  this.metricToolCallCount++;
429
521
  yield { type: 'tool_start', toolCallId: tc.id, name: tc.function.name, args: tc.function.arguments };
430
- // 工具执行 Span
431
- const toolSpan = this.tracer.startSpan(TRACE_SPANS.TOOL_EXEC, {
432
- toolName: tc.function.name,
433
- });
434
- // 工具执行可能因文件不存在、路径越界等原因失败
435
- // 捕获异常并转为结构化错误结果字符串,回传给 LLM 让其自行调整策略
436
- // 避免错误直接传播到 agent.chat() 导致整个对话中断
437
- // 错误结果包含 [ERR:TOOL:code] 前缀,供 Reflection 逻辑解析
438
- let result;
439
- try {
440
- // 工具执行包裹 signal 中断,避免 abort 无法中断卡住的 generator
441
- // 原 await toolExecutor 不响应 signal,工具卡住时 generator 挂起、_chatBusy 泄漏
442
- result = await this.raceToolWithSignal(tc.function.name, tc.function.arguments, signal);
443
- }
444
- catch (err) {
445
- const e = toError(err);
446
- toolSpan.recordException(e);
447
- if (err instanceof MemoraError) {
448
- const code = err.errorCode ?? 'UNKNOWN';
449
- result = `[ERR:TOOL:${code}] 错误:${err.title}${err.detail ? ` — ${err.detail}` : ''}`;
450
- logger.warn({ tool: tc.function.name, errorCode: code, title: err.title }, '工具执行失败,错误已回传给 LLM');
451
- }
452
- else {
453
- result = `[ERR:TOOL:UNKNOWN] 错误:工具执行异常 — ${e.message}`;
454
- logger.error({ tool: tc.function.name, err }, '工具执行异常');
455
- }
456
- }
457
- toolSpan.end();
522
+ // 并发发起工具执行(不 await,收集 Promise 由 Promise.all 统一等待)
523
+ toolPromises.push(this.executeOneTool(tc, signal));
524
+ }
525
+ // 2. 等待全部工具完成(真并发,总耗时 ≈ 最慢的工具而非所有工具之和)
526
+ const results = await Promise.all(toolPromises);
527
+ // 3. 按原始顺序 push messages + yield tool_result
528
+ // 顺序确定保证:Reflection 的 slice(-toolCalls.length) 能取到本轮完整结果
529
+ for (let i = 0; i < toolCalls.length; i++) {
530
+ const tc = toolCalls[i];
531
+ const result = results[i];
458
532
  this.messages.push({
459
533
  role: 'tool',
460
534
  content: result,
@@ -525,6 +599,58 @@ export class AgentLoop {
525
599
  abortPromise,
526
600
  ]);
527
601
  }
602
+ /**
603
+ * 执行单个工具(E-803 抽取:为并行化提供独立执行单元)
604
+ *
605
+ * 职责:
606
+ * - startSpan / endSpan(工具执行 Span,并发时 span 时间重叠,可观测性改进)
607
+ * - raceToolWithSignal 竞争包裹(兼容 signal 中断,每个工具独立 race)
608
+ * - 异常捕获并转为结构化错误字符串([ERR:TOOL:code] 前缀,供 Reflection 解析)
609
+ *
610
+ * 不含职责(由 executeToolCalls 主循环控制,保证顺序确定):
611
+ * - yield tool_start / tool_result(事件顺序由主循环批量 yield 保证)
612
+ * - messages.push(消息顺序由主循环按原始顺序 push,确保 Reflection slice 正确)
613
+ * - metricToolCallCount / metricToolFailureCount(统计由主循环控制)
614
+ *
615
+ * 并发安全:本方法无共享状态,多个 executeOneTool 可同时执行。
616
+ * toolExecutor 内部无状态(纯分发 + 参数校验),天然支持并发调用。
617
+ *
618
+ * @param tc 单个工具调用描述(id + function.name + function.arguments)
619
+ * @param signal 可选的 AbortSignal
620
+ * @returns 工具结果字符串(成功)或 [ERR:TOOL:code] 错误字符串(失败)
621
+ */
622
+ async executeOneTool(tc, signal) {
623
+ // 工具执行 Span(并发时多个 span 时间重叠,tracer 可观测并发度)
624
+ const toolSpan = this.tracer.startSpan(TRACE_SPANS.TOOL_EXEC, {
625
+ toolName: tc.function.name,
626
+ });
627
+ try {
628
+ // 工具执行包裹 signal 中断,避免 abort 无法中断卡住的 generator
629
+ // raceToolWithSignal 天然兼容并发:每个调用独立 race,{ once: true } 监听器无副作用
630
+ return await this.raceToolWithSignal(tc.function.name, tc.function.arguments, signal);
631
+ }
632
+ catch (err) {
633
+ // 工具执行可能因文件不存在、路径越界等原因失败
634
+ // 捕获异常并转为结构化错误结果字符串,回传给 LLM 让其自行调整策略
635
+ // 避免错误直接传播到 agent.chat() 导致整个对话中断
636
+ const e = toError(err);
637
+ toolSpan.recordException(e);
638
+ if (err instanceof MemoraError) {
639
+ const code = err.errorCode ?? 'UNKNOWN';
640
+ const result = `[ERR:TOOL:${code}] 错误:${err.title}${err.detail ? ` — ${err.detail}` : ''}`;
641
+ logger.warn({ tool: tc.function.name, errorCode: code, title: err.title }, '工具执行失败,错误已回传给 LLM');
642
+ return result;
643
+ }
644
+ else {
645
+ const result = `[ERR:TOOL:UNKNOWN] 错误:工具执行异常 — ${e.message}`;
646
+ logger.error({ tool: tc.function.name, err }, '工具执行异常');
647
+ return result;
648
+ }
649
+ }
650
+ finally {
651
+ toolSpan.end();
652
+ }
653
+ }
528
654
  /**
529
655
  * 构建 system prompt(注入人格 + 规则 + 领域 + 工具描述)
530
656
  */
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"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"}