sema-core 2.0.16 → 2.1.1

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 (178) hide show
  1. package/dist/conf/config.d.ts +2 -0
  2. package/dist/conf/config.d.ts.map +1 -1
  3. package/dist/conf/config.js +4 -1
  4. package/dist/conf/config.js.map +1 -1
  5. package/dist/core/Conversation.js +4 -4
  6. package/dist/core/Conversation.js.map +1 -1
  7. package/dist/core/RunTools.d.ts.map +1 -1
  8. package/dist/core/RunTools.js +43 -8
  9. package/dist/core/RunTools.js.map +1 -1
  10. package/dist/core/SemaCore.d.ts +7 -0
  11. package/dist/core/SemaCore.d.ts.map +1 -1
  12. package/dist/core/SemaCore.js +9 -0
  13. package/dist/core/SemaCore.js.map +1 -1
  14. package/dist/core/SemaEngine.d.ts.map +1 -1
  15. package/dist/core/SemaEngine.js +22 -10
  16. package/dist/core/SemaEngine.js.map +1 -1
  17. package/dist/core/SemaSession.d.ts +3 -11
  18. package/dist/core/SemaSession.d.ts.map +1 -1
  19. package/dist/core/SemaSession.js +2 -10
  20. package/dist/core/SemaSession.js.map +1 -1
  21. package/dist/core/SessionPool.d.ts.map +1 -1
  22. package/dist/core/SessionPool.js +3 -2
  23. package/dist/core/SessionPool.js.map +1 -1
  24. package/dist/events/types.d.ts +2 -0
  25. package/dist/events/types.d.ts.map +1 -1
  26. package/dist/index.d.ts +3 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +3 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/manager/ConfManager.d.ts +9 -1
  31. package/dist/manager/ConfManager.d.ts.map +1 -1
  32. package/dist/manager/ConfManager.js +23 -6
  33. package/dist/manager/ConfManager.js.map +1 -1
  34. package/dist/manager/ModelManager.d.ts +30 -2
  35. package/dist/manager/ModelManager.d.ts.map +1 -1
  36. package/dist/manager/ModelManager.js +103 -32
  37. package/dist/manager/ModelManager.js.map +1 -1
  38. package/dist/manager/PermissionManager.d.ts.map +1 -1
  39. package/dist/manager/PermissionManager.js +50 -36
  40. package/dist/manager/PermissionManager.js.map +1 -1
  41. package/dist/manager/UsageStatsManager.d.ts +79 -0
  42. package/dist/manager/UsageStatsManager.d.ts.map +1 -0
  43. package/dist/manager/UsageStatsManager.js +402 -0
  44. package/dist/manager/UsageStatsManager.js.map +1 -0
  45. package/dist/prompt/compact.d.ts +17 -2
  46. package/dist/prompt/compact.d.ts.map +1 -1
  47. package/dist/prompt/compact.js +19 -3
  48. package/dist/prompt/compact.js.map +1 -1
  49. package/dist/prompt/inputPredict.d.ts +1 -1
  50. package/dist/prompt/inputPredict.d.ts.map +1 -1
  51. package/dist/prompt/inputPredict.js +9 -8
  52. package/dist/prompt/inputPredict.js.map +1 -1
  53. package/dist/prompt/permission.d.ts.map +1 -1
  54. package/dist/prompt/permission.js +11 -1
  55. package/dist/prompt/permission.js.map +1 -1
  56. package/dist/prompt/tools/fetchUrl.d.ts +1 -1
  57. package/dist/prompt/tools/fetchUrl.d.ts.map +1 -1
  58. package/dist/prompt/tools/fetchUrl.js +3 -0
  59. package/dist/prompt/tools/fetchUrl.js.map +1 -1
  60. package/dist/services/agents/agentsManager.d.ts.map +1 -1
  61. package/dist/services/agents/agentsManager.js +3 -2
  62. package/dist/services/agents/agentsManager.js.map +1 -1
  63. package/dist/services/api/adapt/openai.d.ts.map +1 -1
  64. package/dist/services/api/adapt/openai.js +25 -4
  65. package/dist/services/api/adapt/openai.js.map +1 -1
  66. package/dist/services/api/adapt/util.d.ts +15 -0
  67. package/dist/services/api/adapt/util.d.ts.map +1 -1
  68. package/dist/services/api/adapt/util.js +54 -2
  69. package/dist/services/api/adapt/util.js.map +1 -1
  70. package/dist/services/api/apiUtil.d.ts.map +1 -1
  71. package/dist/services/api/apiUtil.js +8 -7
  72. package/dist/services/api/apiUtil.js.map +1 -1
  73. package/dist/services/api/queryLLM.d.ts.map +1 -1
  74. package/dist/services/api/queryLLM.js +35 -16
  75. package/dist/services/api/queryLLM.js.map +1 -1
  76. package/dist/services/commands/commandsManager.d.ts.map +1 -1
  77. package/dist/services/commands/commandsManager.js +3 -2
  78. package/dist/services/commands/commandsManager.js.map +1 -1
  79. package/dist/services/commands/runCommand.d.ts.map +1 -1
  80. package/dist/services/commands/runCommand.js +4 -3
  81. package/dist/services/commands/runCommand.js.map +1 -1
  82. package/dist/services/hooks/hookTriggers.d.ts.map +1 -1
  83. package/dist/services/hooks/hookTriggers.js +3 -2
  84. package/dist/services/hooks/hookTriggers.js.map +1 -1
  85. package/dist/services/mcp/MCPClient.d.ts.map +1 -1
  86. package/dist/services/mcp/MCPClient.js +18 -8
  87. package/dist/services/mcp/MCPClient.js.map +1 -1
  88. package/dist/services/mcp/MCPManager.d.ts +8 -7
  89. package/dist/services/mcp/MCPManager.d.ts.map +1 -1
  90. package/dist/services/mcp/MCPManager.js +118 -53
  91. package/dist/services/mcp/MCPManager.js.map +1 -1
  92. package/dist/services/mcp/MCPToolAdapter.d.ts.map +1 -1
  93. package/dist/services/mcp/MCPToolAdapter.js +128 -22
  94. package/dist/services/mcp/MCPToolAdapter.js.map +1 -1
  95. package/dist/services/plugins/pluginsManager.d.ts.map +1 -1
  96. package/dist/services/plugins/pluginsManager.js +12 -11
  97. package/dist/services/plugins/pluginsManager.js.map +1 -1
  98. package/dist/tools/FetchUrl.d.ts.map +1 -1
  99. package/dist/tools/FetchUrl.js +10 -3
  100. package/dist/tools/FetchUrl.js.map +1 -1
  101. package/dist/tools/ListCrons.d.ts +1 -0
  102. package/dist/tools/ListCrons.d.ts.map +1 -1
  103. package/dist/tools/ListCrons.js +1 -0
  104. package/dist/tools/ListCrons.js.map +1 -1
  105. package/dist/tools/LoadTools.js +1 -1
  106. package/dist/tools/PeekBgJob.d.ts +2 -2
  107. package/dist/tools/PlanToAgent.d.ts.map +1 -1
  108. package/dist/tools/PlanToAgent.js +7 -4
  109. package/dist/tools/PlanToAgent.js.map +1 -1
  110. package/dist/tools/RunShell.d.ts.map +1 -1
  111. package/dist/tools/RunShell.js +4 -16
  112. package/dist/tools/RunShell.js.map +1 -1
  113. package/dist/tools/base/Tool.d.ts +1 -0
  114. package/dist/tools/base/Tool.d.ts.map +1 -1
  115. package/dist/types/index.d.ts +10 -0
  116. package/dist/types/index.d.ts.map +1 -1
  117. package/dist/types/index.js +7 -2
  118. package/dist/types/index.js.map +1 -1
  119. package/dist/types/mcp.d.ts +7 -0
  120. package/dist/types/mcp.d.ts.map +1 -1
  121. package/dist/types/model.d.ts +3 -0
  122. package/dist/types/model.d.ts.map +1 -1
  123. package/dist/types/session.d.ts +6 -2
  124. package/dist/types/session.d.ts.map +1 -1
  125. package/dist/util/compact.d.ts +11 -9
  126. package/dist/util/compact.d.ts.map +1 -1
  127. package/dist/util/compact.js +294 -65
  128. package/dist/util/compact.js.map +1 -1
  129. package/dist/util/fetchUrl.d.ts +1 -0
  130. package/dist/util/fetchUrl.d.ts.map +1 -1
  131. package/dist/util/fetchUrl.js +34 -4
  132. package/dist/util/fetchUrl.js.map +1 -1
  133. package/dist/util/i18n/de.d.ts +92 -0
  134. package/dist/util/i18n/de.d.ts.map +1 -0
  135. package/dist/util/i18n/de.js +104 -0
  136. package/dist/util/i18n/de.js.map +1 -0
  137. package/dist/util/i18n/en.d.ts +92 -0
  138. package/dist/util/i18n/en.d.ts.map +1 -0
  139. package/dist/util/i18n/en.js +104 -0
  140. package/dist/util/i18n/en.js.map +1 -0
  141. package/dist/util/i18n/fr.d.ts +92 -0
  142. package/dist/util/i18n/fr.d.ts.map +1 -0
  143. package/dist/util/i18n/fr.js +104 -0
  144. package/dist/util/i18n/fr.js.map +1 -0
  145. package/dist/util/i18n/index.d.ts +7 -0
  146. package/dist/util/i18n/index.d.ts.map +1 -0
  147. package/dist/util/i18n/index.js +36 -0
  148. package/dist/util/i18n/index.js.map +1 -0
  149. package/dist/util/i18n/it.d.ts +92 -0
  150. package/dist/util/i18n/it.d.ts.map +1 -0
  151. package/dist/util/i18n/it.js +104 -0
  152. package/dist/util/i18n/it.js.map +1 -0
  153. package/dist/util/i18n/zh.d.ts +96 -0
  154. package/dist/util/i18n/zh.d.ts.map +1 -0
  155. package/dist/util/i18n/zh.js +107 -0
  156. package/dist/util/i18n/zh.js.map +1 -0
  157. package/dist/util/i18n.d.ts +98 -0
  158. package/dist/util/i18n.d.ts.map +1 -0
  159. package/dist/util/i18n.js +228 -0
  160. package/dist/util/i18n.js.map +1 -0
  161. package/dist/util/message.d.ts.map +1 -1
  162. package/dist/util/message.js +3 -0
  163. package/dist/util/message.js.map +1 -1
  164. package/dist/util/model.d.ts.map +1 -1
  165. package/dist/util/model.js +9 -3
  166. package/dist/util/model.js.map +1 -1
  167. package/dist/util/shell.d.ts.map +1 -1
  168. package/dist/util/shell.js +6 -1
  169. package/dist/util/shell.js.map +1 -1
  170. package/dist/util/shellSafety.d.ts +14 -2
  171. package/dist/util/shellSafety.d.ts.map +1 -1
  172. package/dist/util/shellSafety.js +300 -3
  173. package/dist/util/shellSafety.js.map +1 -1
  174. package/dist/util/tokens.d.ts +10 -2
  175. package/dist/util/tokens.d.ts.map +1 -1
  176. package/dist/util/tokens.js +19 -15
  177. package/dist/util/tokens.js.map +1 -1
  178. package/package.json +3 -1
@@ -39,6 +39,13 @@ exports.__compactTestHooks = {
39
39
  * 提前触发压缩以避免接近token限制时的API调用失败
40
40
  */
41
41
  const AUTO_COMPACT_THRESHOLD_RATIO = 0.75;
42
+ /**
43
+ * 自动压缩时原样保留的最近工具轮次数(一个轮次 = assistant(tool_use) + 紧随的 tool_result user 消息)。
44
+ * 最后一条 assistant 之后的未消费批次另行无条件保留,不计入此数。
45
+ */
46
+ const COMPACT_KEEP_RECENT_TOOL_ROUNDS = 4;
47
+ // 图片块固定估算,与 microcompact 口径一致(勿按 base64 长度折算)
48
+ const IMAGE_BLOCK_TOKEN_ESTIMATE = 1500;
42
49
  function getContextLimit(sessionId) {
43
50
  try {
44
51
  return compactDependencies.getModelManager().getModel('main', sessionId)?.contextLength ?? 128_000;
@@ -98,8 +105,9 @@ function truncateMessages(messages, targetTokenLimit) {
98
105
  if (message.type === 'assistant' && 'usage' in message.message) {
99
106
  const inputTokens = getInputTokensFromUsage(message.message.usage);
100
107
  if (inputTokens >= tokensToRemove) {
101
- // 从下一条消息开始保留
102
- cutIndex = i + 1;
108
+ // 从这条 assistant 开始保留:它的 tool_use 与下一条 user 消息里的 tool_result 配对,
109
+ // 若从 i + 1 开始会留下孤儿 tool_result,API 会拒绝
110
+ cutIndex = i;
103
111
  break;
104
112
  }
105
113
  }
@@ -121,7 +129,7 @@ function truncateMessages(messages, targetTokenLimit) {
121
129
  }
122
130
  // 在开头添加截断提示消息
123
131
  if (result.length < messages.length) {
124
- const truncatedMessage = (0, message_1.buildUserMsg)(`Context truncated due to token limit. ${messages.length - result.length} earlier messages removed. Recent conversation preserved.`);
132
+ const truncatedMessage = (0, message_1.buildUserMsg)(`${compact_1.CONTEXT_TRUNCATED_NOTICE_LEAD} ${messages.length - result.length} earlier messages removed. Recent conversation preserved.`);
125
133
  result.unshift(truncatedMessage);
126
134
  }
127
135
  (0, log_1.logDebug)(`[Compact] Truncation result: kept ${result.length} of ${messages.length} messages`);
@@ -187,18 +195,29 @@ function emitCompactUsage(messagesBefore, messagesAfter, sessionId, mode, reason
187
195
  }
188
196
  }
189
197
  /**
190
- * 根据令牌使用量判断是否应触发自动压缩
191
- * 只计算输入token数,因为API调用时主要关心的是输入token限制
198
+ * 估算当前上下文占用,口径为"即将发送的请求":
199
+ * 最近有效 usage 的 input(上次请求的上下文)+ 该次 output(本次响应已进入上下文)
200
+ * + 该 assistant 之后新增消息(工具结果、新用户输入)的估算。
201
+ * 只看 input 会滞后一轮,单轮新增多个大工具结果时可能撞限。
202
+ * 没有任何有效 usage 时(如全是合成消息的历史)按全部消息估算。
203
+ * 压缩判断与 compact:micro 事件统计共用此函数,保证口径一致。
204
+ */
205
+ function estimateContextTokens(messages) {
206
+ const { inputTokens, outputTokens, index } = (0, tokens_1.countTokens)(messages);
207
+ return inputTokens + outputTokens + estimateMessagesTokens(messages.slice(index + 1));
208
+ }
209
+ /**
210
+ * 根据令牌使用量判断是否应触发自动压缩(口径见 estimateContextTokens)
192
211
  *
193
- * @param discountTokens 估算折扣:countTokens 读的是上一次 API 响应的 usage,
194
- * micro 清理的节省要到下一次响应才可见,期间用该折扣修正判断。默认 0,行为与原先一致。
212
+ * @param discountTokens 估算折扣:usage 读的是上一次 API 响应,
213
+ * micro 清理的节省要到下一次响应才可见,期间用该折扣修正判断。默认 0。
214
+ * 传入的 messages 应是清理前的历史,否则 usage 下标之后被清理的块会在估算与折扣中重复扣减。
195
215
  */
196
216
  function needsAutoCompact(messages, discountTokens = 0, sessionId) {
197
217
  if (messages.length < 3)
198
218
  return false;
199
- const inputTokenCount = (0, tokens_1.countTokens)(messages).inputTokens;
200
219
  const autoCompactThreshold = getContextLimit(sessionId) * AUTO_COMPACT_THRESHOLD_RATIO;
201
- return (inputTokenCount - discountTokens) >= autoCompactThreshold;
220
+ return (estimateContextTokens(messages) - discountTokens) >= autoCompactThreshold;
202
221
  }
203
222
  /**
204
223
  * Micro 压缩集成入口(全量摘要前的第一道防线)
@@ -215,10 +234,11 @@ function applyMicroCompact(messages, sessionId) {
215
234
  if (!result.changed) {
216
235
  return { messages, needFullCompact: true, changed: false };
217
236
  }
218
- const stillOver = needsAutoCompact(result.messages, result.estimatedSavedTokens, sessionId);
219
- // estimatedTokenAfter = 上次 API 响应的真实 usage − 估算节省,与"要不要全量摘要"的判断口径一致;
220
- // 清理前的值不重复携带(= 紧邻上一条 conversation:usage 的 promptTokens)
221
- const tokenBefore = (0, tokens_1.countTokens)(result.messages).inputTokens;
237
+ // 在清理前的 messages 上判断再减本次节省:清理后的消息里 usage 下标之后的块已是占位符,
238
+ // 若在其上估算再减全部节省,这部分会被扣两次而低估占用
239
+ const stillOver = needsAutoCompact(messages, result.estimatedSavedTokens, sessionId);
240
+ // estimatedTokenAfter = 清理前的估算占用 − 估算节省,与 stillOver 的判断口径完全一致
241
+ const tokenBefore = estimateContextTokens(messages);
222
242
  const microData = {
223
243
  clearedCount: result.clearedCount,
224
244
  estimatedSavedTokens: result.estimatedSavedTokens,
@@ -254,17 +274,28 @@ function applyMicroCompact(messages, sessionId) {
254
274
  */
255
275
  async function compactMessages(messages, abortController, sessionId, options = {}) {
256
276
  const allowTruncationFallback = options.allowTruncationFallback ?? true;
277
+ // 自动压缩路径只压历史的一段,事件口径需按整段上下文计算,由 autoCompact 自行发出
278
+ const emitUsageEvent = options.emitUsageEvent ?? true;
279
+ const emitUsage = (messagesAfter, mode, reason, error) => {
280
+ if (emitUsageEvent)
281
+ emitCompactUsage(messages, messagesAfter, sessionId, mode, reason, error);
282
+ };
257
283
  if (messages.length < 2) {
258
284
  return { kind: 'unchanged', messages };
259
285
  }
260
286
  try {
261
287
  const summaryResult = await executeAutoCompact(messages, abortController, sessionId, options.customInstructions);
288
+ // 用户中断:适配层不抛错而是返回部分内容,不能当成摘要,也不能进有损的截断兜底
289
+ if (abortController.signal.aborted) {
290
+ (0, log_1.logInfo)('[Compact] Aborted by user, keeping messages unchanged');
291
+ return { kind: 'unchanged', messages };
292
+ }
262
293
  if (summaryResult.kind === 'summary') {
263
- emitCompactUsage(messages, summaryResult.messages, sessionId, 'summary');
294
+ emitUsage(summaryResult.messages, 'summary');
264
295
  return summaryResult;
265
296
  }
266
297
  if (!allowTruncationFallback) {
267
- emitCompactUsage(messages, null, sessionId, 'failed', summaryResult.reason);
298
+ emitUsage(null, 'failed', summaryResult.reason);
268
299
  return {
269
300
  kind: 'failed',
270
301
  error: new Error(`Compact did not produce a valid summary: ${summaryResult.reason}`),
@@ -273,7 +304,7 @@ async function compactMessages(messages, abortController, sessionId, options = {
273
304
  const contextLimit = getContextLimit(sessionId);
274
305
  const targetLimit = contextLimit * 0.5; // 截断到50%容量
275
306
  const truncatedMessages = truncateMessages(messages, targetLimit);
276
- emitCompactUsage(messages, truncatedMessages, sessionId, 'truncated', summaryResult.reason);
307
+ emitUsage(truncatedMessages, 'truncated', summaryResult.reason);
277
308
  return {
278
309
  kind: 'truncated',
279
310
  messages: truncatedMessages,
@@ -281,8 +312,13 @@ async function compactMessages(messages, abortController, sessionId, options = {
281
312
  };
282
313
  }
283
314
  catch (error) {
315
+ // 用户中断(SDK 层抛出中断异常的路径):同上,直接退出不降级
316
+ if (abortController.signal.aborted) {
317
+ (0, log_1.logInfo)('[Compact] Aborted by user, keeping messages unchanged');
318
+ return { kind: 'unchanged', messages };
319
+ }
284
320
  if (!allowTruncationFallback) {
285
- emitCompactUsage(messages, null, sessionId, 'failed', 'COMPACT_ERROR', error);
321
+ emitUsage(null, 'failed', 'COMPACT_ERROR', error);
286
322
  return {
287
323
  kind: 'failed',
288
324
  error,
@@ -295,7 +331,7 @@ async function compactMessages(messages, abortController, sessionId, options = {
295
331
  const targetLimit = contextLimit * 0.5; // 截断到50%容量
296
332
  const truncatedMessages = truncateMessages(messages, targetLimit);
297
333
  (0, log_1.logError)(`Successfully applied truncation fallback, reduced from ${messages.length} to ${truncatedMessages.length} messages`);
298
- emitCompactUsage(messages, truncatedMessages, sessionId, 'truncated', 'COMPACT_ERROR', error);
334
+ emitUsage(truncatedMessages, 'truncated', 'COMPACT_ERROR', error);
299
335
  return {
300
336
  kind: 'truncated',
301
337
  messages: truncatedMessages,
@@ -305,7 +341,7 @@ async function compactMessages(messages, abortController, sessionId, options = {
305
341
  catch (truncationError) {
306
342
  // 如果连截断都失败,返回失败结果
307
343
  (0, log_1.logError)(`Truncation fallback also failed: ${truncationError}`);
308
- emitCompactUsage(messages, null, sessionId, 'failed', 'COMPACT_ERROR', truncationError);
344
+ emitUsage(null, 'failed', 'COMPACT_ERROR', truncationError);
309
345
  return {
310
346
  kind: 'failed',
311
347
  error: truncationError,
@@ -407,70 +443,262 @@ function prependBlocksToLeadingUserMsg(messages, blocks) {
407
443
  return [nextFirst, ...messages.slice(1)];
408
444
  }
409
445
  /**
410
- * 自动上下文压缩的主要入口函数
446
+ * 按文本长度估算一组消息的 token 数(口径与 microcompact 一致)。
447
+ * 用于 compact:exec 事件里被压区与新前缀的差值计算,以及 needsAutoCompact 对
448
+ * 最近 usage 之后新增消息的估算。
449
+ */
450
+ function estimateMessagesTokens(messages) {
451
+ let total = 0;
452
+ for (const msg of messages) {
453
+ const content = msg.message.content;
454
+ if (typeof content === 'string') {
455
+ total += (0, microcompact_1.estimateTokensFromText)(content);
456
+ continue;
457
+ }
458
+ if (!Array.isArray(content))
459
+ continue;
460
+ for (const block of content) {
461
+ switch (block?.type) {
462
+ case 'text':
463
+ total += (0, microcompact_1.estimateTokensFromText)(block.text ?? '');
464
+ break;
465
+ case 'thinking':
466
+ total += (0, microcompact_1.estimateTokensFromText)(block.thinking ?? '');
467
+ break;
468
+ case 'tool_use':
469
+ total += (0, microcompact_1.estimateTokensFromText)(JSON.stringify(block.input ?? {}));
470
+ break;
471
+ case 'tool_result': {
472
+ const inner = block.content;
473
+ if (typeof inner === 'string') {
474
+ total += (0, microcompact_1.estimateTokensFromText)(inner);
475
+ }
476
+ else if (Array.isArray(inner)) {
477
+ for (const part of inner) {
478
+ if (part?.type === 'text')
479
+ total += (0, microcompact_1.estimateTokensFromText)(part.text ?? '');
480
+ else if (part?.type === 'image')
481
+ total += IMAGE_BLOCK_TOKEN_ESTIMATE;
482
+ }
483
+ }
484
+ break;
485
+ }
486
+ case 'image':
487
+ total += IMAGE_BLOCK_TOKEN_ESTIMATE;
488
+ break;
489
+ }
490
+ }
491
+ }
492
+ return total;
493
+ }
494
+ /**
495
+ * 计算自动压缩的切点:messages.slice(0, cutIdx) 为被压区,其余为保留区。
411
496
  *
412
- * 该函数在每次查询前被调用,用于检查对话是否已超出容量需要压缩。
413
- * 找到最后一条真实用户消息(非 tool_result),只压缩它之前的历史,
414
- * 保留"当前对话轮次"(lastRealUserMsg + assistantMsg + toolResults)不动。
415
- * 这样可以保证:
416
- * 1. 压缩后的消息列表以用户消息结尾,LLM 调用不会失败
417
- * 2. tool_use / tool_result 的配对关系不被破坏
497
+ * 切点只落在两类位置,二者都保证 tool_use/tool_result 不被拆散,
498
+ * 也保证 skill 激活的 tool_use 与其 tool_result/全文块在同一侧(collectSkillActivations 按区域配对):
499
+ * - 某个工具轮次的 assistant 消息:保留最后一条 assistant 起的未消费尾部,
500
+ * 再往前保留 COMPACT_KEEP_RECENT_TOOL_ROUNDS 个已消费轮次,切在最老一个保留轮次的 assistant 上;
501
+ * - 最后一条真实用户消息:它落在保留窗口内或紧贴切点时(本轮很短、或最新消息就是新查询),
502
+ * 切到它,用户原话原样保留,等价于旧行为。
418
503
  *
419
- * 执行自动压缩(调用前应先通过 needsAutoCompact 判断是否需要压缩)
504
+ * 旧行为整轮豁免:agent 单轮跑几十次工具时可压区几乎为空,再触发只能对上一份摘要复摘,
505
+ * 摘要越压越大而真实上下文单调增长。
420
506
  */
421
- async function autoCompact(messages, abortController, sessionId, options = {}) {
422
- // 从后往前找最后一条真实用户消息(非 tool_result)的索引
507
+ function findCompactCut(messages) {
508
+ // 从后往前找最后一条真实用户消息(首块非 tool_result)
423
509
  let lastRealUserIdx = -1;
424
510
  for (let i = messages.length - 1; i >= 0; i--) {
425
- if (messages[i].type === 'user') {
426
- const content = messages[i].message.content;
427
- const isToolResult = Array.isArray(content) &&
428
- content.length > 0 &&
429
- content[0]?.type === 'tool_result';
430
- if (!isToolResult) {
431
- lastRealUserIdx = i;
432
- break;
511
+ if (messages[i].type !== 'user')
512
+ continue;
513
+ const content = messages[i].message.content;
514
+ const isToolResult = Array.isArray(content) &&
515
+ content.length > 0 &&
516
+ content[0]?.type === 'tool_result';
517
+ if (!isToolResult) {
518
+ lastRealUserIdx = i;
519
+ break;
520
+ }
521
+ }
522
+ if (lastRealUserIdx === -1) {
523
+ return { cutIdx: 0, lastRealUserIdx };
524
+ }
525
+ let lastAssistantIdx = -1;
526
+ for (let i = messages.length - 1; i >= 0; i--) {
527
+ if (messages[i].type === 'assistant') {
528
+ lastAssistantIdx = i;
529
+ break;
530
+ }
531
+ }
532
+ // 未消费尾部(最后一条 assistant 起)无条件保留,再往前数 N 个 assistant 轮次
533
+ let cutIdx = lastAssistantIdx;
534
+ if (lastAssistantIdx > 0) {
535
+ let rounds = 0;
536
+ for (let i = lastAssistantIdx - 1; i >= 0 && rounds < COMPACT_KEEP_RECENT_TOOL_ROUNDS; i--) {
537
+ if (messages[i].type === 'assistant') {
538
+ rounds++;
539
+ cutIdx = i;
540
+ }
541
+ }
542
+ }
543
+ // 没有 assistant,或最后一条真实用户消息落在保留窗口内/紧贴切点:切到用户消息
544
+ if (lastAssistantIdx === -1 || lastRealUserIdx >= cutIdx - 1) {
545
+ cutIdx = lastRealUserIdx;
546
+ }
547
+ return { cutIdx, lastRealUserIdx };
548
+ }
549
+ // 回注用户指令原文的上限:超长粘贴不应抵消压缩收益
550
+ const MAX_VERBATIM_INSTRUCTION_CHARS = 4000;
551
+ /**
552
+ * 系统合成的 user 文本块,不是用户原话,不得当作指令回注:
553
+ * reminder-sys 注入、压缩摘要、截断通知、中断标记
554
+ */
555
+ function isSyntheticUserText(text) {
556
+ return text.startsWith(define_1.REMINDER_SYS_OPEN) ||
557
+ text.startsWith(compact_1.COMPACT_SUMMARY_LEAD) ||
558
+ text.startsWith(compact_1.CONTEXT_TRUNCATED_NOTICE_LEAD) ||
559
+ text.trim() === message_1.REQ_INTERRUPT_MSG;
560
+ }
561
+ /**
562
+ * 提取真实用户消息的正文(跳过系统合成块与非文本块),用于压缩后原样回注。
563
+ * 被压区开头若是上一次压缩的前缀消息,其中回注过的指令块(LATEST_USER_INSTRUCTION_NOTICE 起始)
564
+ * 原样接力,保证用户指令可跨多次压缩存续;摘要块本身跳过,避免摘要被当作指令滚雪球。
565
+ */
566
+ function extractUserInstructionText(msg) {
567
+ const content = msg.message.content;
568
+ let text = '';
569
+ if (typeof content === 'string') {
570
+ text = isSyntheticUserText(content) ? '' : content.trim();
571
+ }
572
+ else if (Array.isArray(content)) {
573
+ const parts = [];
574
+ for (const block of content) {
575
+ if (block.type !== 'text')
576
+ continue;
577
+ if (block.text.startsWith(compact_1.LATEST_USER_INSTRUCTION_NOTICE)) {
578
+ // 上一次压缩回注的指令块:直接接力,不再拼接其他块
579
+ return block.text.slice(compact_1.LATEST_USER_INSTRUCTION_NOTICE.length).trim();
433
580
  }
581
+ if (isSyntheticUserText(block.text))
582
+ continue;
583
+ const trimmed = block.text.trim();
584
+ if (trimmed)
585
+ parts.push(trimmed);
586
+ }
587
+ text = parts.join('\n\n');
588
+ }
589
+ if (text.length > MAX_VERBATIM_INSTRUCTION_CHARS) {
590
+ text = `${text.slice(0, MAX_VERBATIM_INSTRUCTION_CHARS)}\n[... truncated]`;
591
+ }
592
+ return text;
593
+ }
594
+ /**
595
+ * 自动压缩路径的 compact:exec / conversation:usage 事件。
596
+ * 被压区只是整段上下文的一段,事件按整段口径计算:
597
+ * tokenBefore = 触发时的整段占用(含 system prompt 与工具定义,取自上次 API 响应的 usage),
598
+ * tokenCompact = tokenBefore − 被压区估算 + 新前缀估算。
599
+ */
600
+ function emitAutoCompactUsage(tokenBefore, messagesToCompact, compactedMessages, sessionId, mode, reason) {
601
+ try {
602
+ const removed = estimateMessagesTokens(messagesToCompact);
603
+ const added = estimateMessagesTokens(compactedMessages);
604
+ const tokenCompact = Math.max(0, tokenBefore - removed + added);
605
+ if (added >= removed) {
606
+ (0, log_1.logWarn)(`[Compact] Compacted prefix (~${added} tokens) is not smaller than the compacted range (~${removed} tokens)`);
434
607
  }
608
+ (0, log_1.logDebug)(`[Compact] Usage: before=${tokenBefore}, removed≈${removed}, added≈${added}, after≈${tokenCompact}`);
609
+ const compactExecData = {
610
+ tokenBefore,
611
+ tokenCompact,
612
+ compactRate: tokenBefore > 0 ? calculateCompactRate(tokenBefore, tokenCompact) : 0,
613
+ mode,
614
+ reason,
615
+ };
616
+ const eventBus = compactDependencies.getEventBus();
617
+ eventBus.emit('compact:exec', compactExecData, sessionId);
618
+ eventBus.emit('conversation:usage', {
619
+ usage: { useTokens: tokenCompact, maxTokens: getContextLimit(sessionId), promptTokens: tokenCompact },
620
+ }, sessionId);
435
621
  }
622
+ catch (usageError) {
623
+ (0, log_1.logError)(`Failed to emit auto compact usage: ${usageError}`);
624
+ }
625
+ }
626
+ /**
627
+ * 自动上下文压缩的主要入口函数
628
+ *
629
+ * 该函数在每次查询前被调用,用于检查对话是否已超出容量需要压缩。
630
+ * 切点由 findCompactCut 决定:保留最近几个工具轮次与未消费尾部,其余历史(含本轮更早的工具轮次)
631
+ * 交给摘要。这样可以保证:
632
+ * 1. tool_use / tool_result 的配对关系不被破坏(切点只落在轮次边界的 assistant 或真实用户消息上)
633
+ * 2. 压缩后前缀是单条 user 消息(与手动 /compact 同形),保留区无论以 user 还是 assistant 开头,
634
+ * 角色交替都合法(连续 user 由 prepareMessagesForApi 合并)
635
+ * 3. 最后一条真实用户消息被压进摘要时,原文回注,模型不丢失用户措辞
636
+ *
637
+ * 执行自动压缩(调用前应先通过 needsAutoCompact 判断是否需要压缩)
638
+ */
639
+ async function autoCompact(messages, abortController, sessionId, options = {}) {
640
+ const { cutIdx, lastRealUserIdx } = findCompactCut(messages);
436
641
  if (lastRealUserIdx === -1) {
437
642
  // 没有找到真实用户消息,跳过压缩
438
643
  return { changed: false, messages };
439
644
  }
440
- // 只压缩最后一条真实用户消息之前的历史
441
- const messagesToCompact = messages.slice(0, lastRealUserIdx);
442
- // 保留当前对话轮次(最后一条真实用户消息及之后的所有内容)
443
- const messagesToKeep = messages.slice(lastRealUserIdx);
645
+ const messagesToCompact = messages.slice(0, cutIdx);
646
+ const messagesToKeep = messages.slice(cutIdx);
444
647
  if (messagesToCompact.length < 2) {
445
648
  // 历史消息太少,不值得压缩
446
649
  return { changed: false, messages };
447
650
  }
651
+ // 最后一条真实用户消息落入被压区(长工具轮次场景):压缩后原样回注
652
+ const compactedUserMsg = lastRealUserIdx < cutIdx ? messages[lastRealUserIdx] : null;
448
653
  // 收集将被压掉的 skill 激活;保留区仍有同名激活的不补(原文还在)
449
654
  let compactedSkills = collectSkillActivations(messagesToCompact);
450
655
  if (compactedSkills.length > 0) {
451
656
  const keptNames = new Set(collectSkillActivations(messagesToKeep).map(a => a.name));
452
657
  compactedSkills = compactedSkills.filter(a => !keptNames.has(a.name));
453
658
  }
454
- const compactResult = await compactMessages(messagesToCompact, abortController, sessionId);
659
+ (0, log_1.logDebug)(`[Compact] Cut at ${cutIdx}/${messages.length} (lastRealUser=${lastRealUserIdx}, userMsgCompacted=${compactedUserMsg !== null}), ` +
660
+ `skills to re-inject: [${compactedSkills.map(a => a.name).join(', ')}]`);
661
+ // 触发时的整段上下文占用(上次 API 响应的 usage,含本次响应输出),作为事件基准
662
+ const tokensBefore = (0, tokens_1.countTokens)(messages);
663
+ const tokenBefore = tokensBefore.inputTokens + tokensBefore.outputTokens;
664
+ const compactResult = await compactMessages(messagesToCompact, abortController, sessionId, { emitUsageEvent: false });
455
665
  if (compactResult.kind === 'summary' || compactResult.kind === 'truncated') {
456
- // 截断兜底会保留部分历史:激活消息幸存的不补注,避免重复
457
- if (compactResult.kind === 'truncated' && compactedSkills.length > 0) {
666
+ // 截断兜底会保留部分历史:激活消息 / 用户消息幸存的不补注,避免重复
667
+ let userMsgSurvived = false;
668
+ if (compactResult.kind === 'truncated') {
458
669
  const survivedUuids = new Set(compactResult.messages.map(m => m.uuid));
459
670
  compactedSkills = compactedSkills.filter(a => !survivedUuids.has(a.uuid));
671
+ userMsgSurvived = compactedUserMsg !== null && survivedUuids.has(compactedUserMsg.uuid);
460
672
  }
461
- // 压缩后重新注入被压掉的 skill 原文与 skills/rules reminder(原注入随历史被摘要替换而丢失),
462
- // 前置拼进首条通知 user 消息,不新增消息以避免连续 user 消息的顺序问题
673
+ // 压缩后重新注入被压掉的 skill 原文与 skills/rules reminder(原注入随历史被摘要替换而丢失)
463
674
  const reminders = await (0, genSystemReminder_1.generatePostCompactReminders)(options.hasSkillTool ?? false, compactedSkills);
464
- const compactedMessages = reminders.length > 0
465
- ? prependBlocksToLeadingUserMsg(compactResult.messages, reminders)
466
- : compactResult.messages;
467
- // 组合结果示例(工具调用场景):
468
- // [compactNotice(user), summaryMsg(assistant), lastRealUserMsg(user), assistantMsg(assistant), toolResult(user)]
469
- // 组合结果示例(新查询场景):
470
- // [compactNotice(user), summaryMsg(assistant), newUserQuery(user)]
471
- // 两种场景均以 user 消息结尾,API 调用合法
675
+ const instruction = compactedUserMsg && !userMsgSurvived ? extractUserInstructionText(compactedUserMsg) : '';
676
+ const instructionBlocks = instruction
677
+ ? [{ type: 'text', text: `${compact_1.LATEST_USER_INSTRUCTION_NOTICE}\n\n${instruction}` }]
678
+ : [];
679
+ let compactedMessages;
680
+ if (compactResult.kind === 'summary') {
681
+ // 单条 user 前缀:[reminders..., 包装后的摘要, 用户指令原文]
682
+ compactedMessages = [(0, message_1.buildUserMsg)([
683
+ ...reminders,
684
+ { type: 'text', text: (0, compact_1.wrapCompactSummary)(compactResult.summary) },
685
+ ...instructionBlocks,
686
+ ])];
687
+ }
688
+ else {
689
+ // 截断兜底:前置拼进首条截断通知 user 消息,不新增消息
690
+ const extraBlocks = [...reminders, ...instructionBlocks];
691
+ compactedMessages = extraBlocks.length > 0
692
+ ? prependBlocksToLeadingUserMsg(compactResult.messages, extraBlocks)
693
+ : compactResult.messages;
694
+ }
695
+ // 组合结果示例(长工具轮次场景):
696
+ // [prefix(user), assistant(tool_use), toolResult(user), ..., assistant(tool_use), toolResult(user)]
697
+ // 组合结果示例(短轮次 / 新查询场景):
698
+ // [prefix(user), lastRealUserMsg(user), ...] → 连续 user 由 prepareMessagesForApi 合并
472
699
  const finalMessages = [...compactedMessages, ...messagesToKeep];
473
- (0, log_1.logDebug)(`[Compact] Final messages count: ${finalMessages.length}, kept current turn: ${messagesToKeep.length} messages`);
700
+ (0, log_1.logDebug)(`[Compact] Final messages count: ${finalMessages.length}, kept: ${messagesToKeep.length} messages`);
701
+ emitAutoCompactUsage(tokenBefore, messagesToCompact, compactedMessages, sessionId, compactResult.kind, compactResult.kind === 'truncated' ? compactResult.reason : undefined);
474
702
  return {
475
703
  changed: true,
476
704
  messages: finalMessages,
@@ -512,12 +740,13 @@ exports.NULL_TOOL = {
512
740
  async function executeAutoCompact(messages, abortController, sessionId, customInstructions) {
513
741
  // 使用 null tool 作为占位,避免模型调用任何工具
514
742
  const tools = [exports.NULL_TOOL];
515
- // 将压缩指令作为 user message 追加到要压缩的历史对话后
516
- // 无自定义指示时 buildCompressionPrompt 返回 COMPRESSION_PROMPT 原文,自动压缩路径行为不变
517
- const messagesWithPrompt = [
518
- ...(0, message_1.prepareMessagesForApi)([...messages]),
743
+ // 将压缩指令作为 user message 追加到要压缩的历史对话后,再统一规范化:
744
+ // 被压区可能以 user(tool_result) 结尾(自动压缩切在轮次边界),规范化会把连续 user 合并
745
+ // 无自定义指示时 buildCompressionPrompt 返回 COMPRESSION_PROMPT 原文
746
+ const messagesWithPrompt = (0, message_1.prepareMessagesForApi)([
747
+ ...messages,
519
748
  (0, message_1.buildUserMsg)((0, compact_1.buildCompressionPrompt)(customInstructions))
520
- ];
749
+ ]);
521
750
  const summaryResponse = await compactDependencies.queryLLM(messagesWithPrompt, [
522
751
  {
523
752
  type: 'text',
@@ -548,7 +777,8 @@ async function executeAutoCompact(messages, abortController, sessionId, customIn
548
777
  // 需要修正为压缩后消息的实际 token 数(压缩通知 + 摘要)
549
778
  const compactNoticeMessage = (0, message_1.buildUserMsg)(compact_1.COMPACT_RESUME_NOTICE);
550
779
  // 修正 usage:压缩后的实际 token 数应该是压缩通知 + 摘要内容
551
- // 估算:压缩通知约 30 tokens,摘要使用 completion_tokens
780
+ // 估算:压缩通知约 30 tokens,摘要使用 completion_tokens。
781
+ // countTokens 把 input + output 作为"该点的上下文占用",摘要只计入 input,output 置 0 避免双计
552
782
  const originalUsage = summaryResponse.message.usage;
553
783
  const estimatedNoticeTokens = 30;
554
784
  const summaryTokens = originalUsage.completion_tokens || originalUsage.output_tokens || 0;
@@ -564,15 +794,14 @@ async function executeAutoCompact(messages, abortController, sessionId, customIn
564
794
  ...originalUsage,
565
795
  // 修正 input_tokens:压缩通知 + 摘要内容
566
796
  input_tokens: correctedInputTokens,
567
- // 修正 output_tokens:摘要内容
568
- output_tokens: summaryTokens,
797
+ output_tokens: 0,
569
798
  // 如果是 OpenAI 格式,也要修正
570
799
  prompt_tokens: correctedInputTokens,
571
- completion_tokens: summaryTokens,
800
+ completion_tokens: 0,
572
801
  }
573
802
  }
574
803
  };
575
- (0, log_1.logDebug)(`[Compact] Corrected summary usage: originalInput=${originalInputTokens}, originalOutput=${originalOutputTokens}, correctedInput=${correctedInputTokens}, correctedOutput=${summaryTokens}`);
804
+ (0, log_1.logDebug)(`[Compact] Corrected summary usage: originalInput=${originalInputTokens}, originalOutput=${originalOutputTokens}, correctedInput=${correctedInputTokens}, correctedOutput=0`);
576
805
  // 构建压缩后的消息列表(只包含压缩通知和摘要,不包含新用户消息)
577
806
  const compactedMessages = [compactNoticeMessage, correctedSummaryMessage];
578
807
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"compact.js","sourceRoot":"","sources":["../../src/util/compact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compact.js","sourceRoot":"","sources":["../../src/util/compact.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export declare const FETCH_URL_MAX_MARKDOWN_LEN = 50000;
2
+ export declare const FETCH_URL_DIRECT_RETURN_LEN = 8000;
2
3
  export type FetchUrlResult = {
3
4
  content: string;
4
5
  bytes: number;
@@ -1 +1 @@
1
- {"version":3,"file":"fetchUrl.d.ts","sourceRoot":"","sources":["../../src/util/fetchUrl.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,0BAA0B,QAAS,CAAA;AAEhD,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,UAAU,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAQD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,cAAc,GAAG,cAAc,CAAC,CAsE1C;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,WAAW,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAiBjB"}
1
+ {"version":3,"file":"fetchUrl.d.ts","sourceRoot":"","sources":["../../src/util/fetchUrl.ts"],"names":[],"mappings":"AA6BA,eAAO,MAAM,0BAA0B,QAAS,CAAA;AAGhD,eAAO,MAAM,2BAA2B,OAAQ,CAAA;AAEhD,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,UAAU,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAkBD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,cAAc,GAAG,cAAc,CAAC,CAsE1C;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,WAAW,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAiBjB"}