@cicctencent/agent-core 1.0.52 → 1.0.54

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -5,14 +5,36 @@ export interface FileToolResultStoreOptions {
5
5
  /** 上下文卸载存储目录(默认 {cwd}/data/offload) */
6
6
  offloadDir: string;
7
7
  }
8
+ /** 会话沙箱内的卸载子目录名(内聚落点:<sandboxRoot>/offload/) */
9
+ export declare const SESSION_OFFLOAD_SUBDIR = "offload";
8
10
  /**
9
11
  * 基于文件系统的工具结果存储
10
12
  * 将超大工具结果写入 {storeDir}/{callId}.json
13
+ *
14
+ * 卸载(offload)落点:
15
+ * - 会话已绑定沙箱根目录(bindSessionSandbox)时写入 <sandboxRoot>/offload/,
16
+ * 使一次对话/任务执行的上下文数据与脚本产物同处一个沙箱目录;
17
+ * - 未绑定时回退全局 <offloadDir>/<sessionId>/(与绑定能力引入前一致)。
11
18
  */
12
19
  export declare class FileToolResultStore implements ToolResultStore {
13
20
  private storeDir;
14
21
  private offloadDir;
22
+ /** sessionId → 会话沙箱根目录(由应用层在创建沙箱后绑定) */
23
+ private sessionSandboxRoots;
15
24
  constructor(options: FileToolResultStoreOptions);
25
+ /**
26
+ * 绑定会话与沙箱根目录。
27
+ * 绑定后该会话的卸载原文写入 <sandboxRootDir>/offload/;
28
+ * 子 Agent 与本进程内其它使用者共用同一单例,因此自动继承同一落点。
29
+ */
30
+ bindSessionSandbox(sessionId: string, sandboxRootDir: string): void;
31
+ /** 解除会话与沙箱根目录的绑定(沙箱销毁/回收时调用) */
32
+ unbindSessionSandbox(sessionId: string): void;
33
+ /** 读取会话已绑定的沙箱根目录,未绑定返回 undefined */
34
+ getSessionSandboxRoot(sessionId: string): string | undefined;
35
+ /** 解析会话卸载目录(不存在时创建):已绑定沙箱优先,否则回退全局目录 */
36
+ private resolveSessionOffloadDir;
37
+ private readOffloadIndex;
16
38
  write(callId: string, content: string): string;
17
39
  read(callId: string): string | null;
18
40
  has(callId: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"file-tool-result-store.d.ts","sourceRoot":"","sources":["../../../src/store/file-tool-result-store.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGvE,MAAM,WAAW,0BAA0B;IACzC,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IACzD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,EAAE,0BAA0B;IAW/C,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAY9C,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAYnC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI5B;;;OAGG;IACH,IAAI,IAAI,MAAM,EAAE;IAUhB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAW/B,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAoB5E,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAa1C,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE;IAU/C,yBAAyB;IACzB,OAAO,CAAC,QAAQ,GAAE,MAA4B,GAAG,MAAM;IAkBvD,OAAO,CAAC,WAAW;CAIpB"}
1
+ {"version":3,"file":"file-tool-result-store.d.ts","sourceRoot":"","sources":["../../../src/store/file-tool-result-store.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGvE,MAAM,WAAW,0BAA0B;IACzC,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,gDAAgD;AAChD,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAIhD;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IACzD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,wCAAwC;IACxC,OAAO,CAAC,mBAAmB,CAA6B;gBAE5C,OAAO,EAAE,0BAA0B;IAS/C;;;;OAIG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IAKnE,gCAAgC;IAChC,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI7C,oCAAoC;IACpC,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI5D,wCAAwC;IACxC,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,gBAAgB;IASxB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAY9C,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAYnC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI5B;;;OAGG;IACH,IAAI,IAAI,MAAM,EAAE;IAUhB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAW/B,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAY5E,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAwB1C,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE;IAY/C,yBAAyB;IACzB,OAAO,CAAC,QAAQ,GAAE,MAA4B,GAAG,MAAM;IAkBvD,OAAO,CAAC,WAAW;CAIpB"}
@@ -36,26 +36,73 @@ var __importStar = (this && this.__importStar) || (function () {
36
36
  };
37
37
  })();
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.FileToolResultStore = void 0;
39
+ exports.FileToolResultStore = exports.SESSION_OFFLOAD_SUBDIR = void 0;
40
40
  const fs = __importStar(require("fs"));
41
41
  const path = __importStar(require("path"));
42
42
  const date_ts_1 = require("../utils/date.js");
43
+ /** 会话沙箱内的卸载子目录名(内聚落点:<sandboxRoot>/offload/) */
44
+ exports.SESSION_OFFLOAD_SUBDIR = 'offload';
45
+ /** 卸载索引文件名 */
46
+ const OFFLOAD_INDEX_FILE = '_index.json';
43
47
  /**
44
48
  * 基于文件系统的工具结果存储
45
49
  * 将超大工具结果写入 {storeDir}/{callId}.json
50
+ *
51
+ * 卸载(offload)落点:
52
+ * - 会话已绑定沙箱根目录(bindSessionSandbox)时写入 <sandboxRoot>/offload/,
53
+ * 使一次对话/任务执行的上下文数据与脚本产物同处一个沙箱目录;
54
+ * - 未绑定时回退全局 <offloadDir>/<sessionId>/(与绑定能力引入前一致)。
46
55
  */
47
56
  class FileToolResultStore {
48
57
  storeDir;
49
58
  offloadDir;
59
+ /** sessionId → 会话沙箱根目录(由应用层在创建沙箱后绑定) */
60
+ sessionSandboxRoots = new Map();
50
61
  constructor(options) {
51
62
  this.storeDir = options.storeDir;
52
63
  this.offloadDir = options.offloadDir;
53
64
  if (!fs.existsSync(this.storeDir)) {
54
65
  fs.mkdirSync(this.storeDir, { recursive: true });
55
66
  }
56
- if (!fs.existsSync(this.offloadDir)) {
57
- fs.mkdirSync(this.offloadDir, { recursive: true });
67
+ // offload 目录改为惰性创建:绑定沙箱的运行不再产生全局 offload 目录
68
+ }
69
+ /**
70
+ * 绑定会话与沙箱根目录。
71
+ * 绑定后该会话的卸载原文写入 <sandboxRootDir>/offload/;
72
+ * 子 Agent 与本进程内其它使用者共用同一单例,因此自动继承同一落点。
73
+ */
74
+ bindSessionSandbox(sessionId, sandboxRootDir) {
75
+ if (!sessionId || !sandboxRootDir)
76
+ return;
77
+ this.sessionSandboxRoots.set(sessionId, path.resolve(sandboxRootDir));
78
+ }
79
+ /** 解除会话与沙箱根目录的绑定(沙箱销毁/回收时调用) */
80
+ unbindSessionSandbox(sessionId) {
81
+ this.sessionSandboxRoots.delete(sessionId);
82
+ }
83
+ /** 读取会话已绑定的沙箱根目录,未绑定返回 undefined */
84
+ getSessionSandboxRoot(sessionId) {
85
+ return this.sessionSandboxRoots.get(sessionId);
86
+ }
87
+ /** 解析会话卸载目录(不存在时创建):已绑定沙箱优先,否则回退全局目录 */
88
+ resolveSessionOffloadDir(sessionId) {
89
+ const sandboxRoot = this.sessionSandboxRoots.get(sessionId);
90
+ const dir = sandboxRoot
91
+ ? path.join(sandboxRoot, exports.SESSION_OFFLOAD_SUBDIR)
92
+ : path.join(this.offloadDir, sessionId);
93
+ if (!fs.existsSync(dir)) {
94
+ fs.mkdirSync(dir, { recursive: true });
58
95
  }
96
+ return dir;
97
+ }
98
+ readOffloadIndex(indexPath) {
99
+ try {
100
+ if (fs.existsSync(indexPath)) {
101
+ return JSON.parse(fs.readFileSync(indexPath, 'utf-8'));
102
+ }
103
+ }
104
+ catch { /* 索引损坏时视为空 */ }
105
+ return [];
59
106
  }
60
107
  write(callId, content) {
61
108
  const filePath = this.getFilePath(callId);
@@ -110,47 +157,50 @@ class FileToolResultStore {
110
157
  return false;
111
158
  }
112
159
  writeOffload(entry, content) {
113
- const sessionDir = path.join(this.offloadDir, entry.sessionId);
114
- if (!fs.existsSync(sessionDir)) {
115
- fs.mkdirSync(sessionDir, { recursive: true });
116
- }
160
+ const sessionDir = this.resolveSessionOffloadDir(entry.sessionId);
117
161
  const filePath = path.join(sessionDir, `${entry.nodeId}.md`);
118
162
  fs.writeFileSync(filePath, content, 'utf-8');
119
- const indexPath = path.join(sessionDir, '_index.json');
120
- let index = [];
121
- try {
122
- if (fs.existsSync(indexPath)) {
123
- index = JSON.parse(fs.readFileSync(indexPath, 'utf-8'));
124
- }
125
- }
126
- catch { /* 索引损坏时重置 */ }
163
+ const indexPath = path.join(sessionDir, OFFLOAD_INDEX_FILE);
164
+ const index = this.readOffloadIndex(indexPath);
127
165
  const fullEntry = { ...entry, filePath };
128
166
  index.push(fullEntry);
129
167
  fs.writeFileSync(indexPath, JSON.stringify(index, null, 2), 'utf-8');
130
168
  return filePath;
131
169
  }
132
170
  readOffload(nodeId) {
171
+ const fileName = `${nodeId}.md`;
172
+ // 1) 优先在已绑定会话沙箱的 offload/ 目录内查找(内聚落点,含子 Agent 共享父沙箱的场景)
173
+ for (const sandboxRoot of this.sessionSandboxRoots.values()) {
174
+ const filePath = path.join(sandboxRoot, exports.SESSION_OFFLOAD_SUBDIR, fileName);
175
+ try {
176
+ if (fs.existsSync(filePath)) {
177
+ return fs.readFileSync(filePath, 'utf-8');
178
+ }
179
+ }
180
+ catch { /* 单个沙箱读取失败时继续尝试其它落点 */ }
181
+ }
182
+ // 2) 回退全局目录:未绑定沙箱的运行与历史遗留数据仍可读
133
183
  try {
134
184
  const sessions = fs.readdirSync(this.offloadDir);
135
185
  for (const sessionId of sessions) {
136
- const filePath = path.join(this.offloadDir, sessionId, `${nodeId}.md`);
186
+ const filePath = path.join(this.offloadDir, sessionId, fileName);
137
187
  if (fs.existsSync(filePath)) {
138
188
  return fs.readFileSync(filePath, 'utf-8');
139
189
  }
140
190
  }
141
191
  }
142
- catch { /* ignore */ }
192
+ catch { /* 目录不存在时静默 */ }
143
193
  return null;
144
194
  }
145
195
  listOffloads(sessionId) {
146
- const indexPath = path.join(this.offloadDir, sessionId, '_index.json');
147
- try {
148
- if (fs.existsSync(indexPath)) {
149
- return JSON.parse(fs.readFileSync(indexPath, 'utf-8'));
150
- }
196
+ // 优先沙箱内索引;未绑定沙箱(或沙箱内无索引)时回退全局目录索引
197
+ const sandboxRoot = this.sessionSandboxRoots.get(sessionId);
198
+ if (sandboxRoot) {
199
+ const sandboxIndex = this.readOffloadIndex(path.join(sandboxRoot, exports.SESSION_OFFLOAD_SUBDIR, OFFLOAD_INDEX_FILE));
200
+ if (sandboxIndex.length > 0)
201
+ return sandboxIndex;
151
202
  }
152
- catch { /* ignore */ }
153
- return [];
203
+ return this.readOffloadIndex(path.join(this.offloadDir, sessionId, OFFLOAD_INDEX_FILE));
154
204
  }
155
205
  /** 清理过期结果(默认超过 24 小时) */
156
206
  cleanup(maxAgeMs = 24 * 60 * 60 * 1000) {
@@ -1 +1 @@
1
- {"version":3,"file":"file-tool-result-store.js","sourceRoot":"","sources":["../../../src/store/file-tool-result-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-tool-result-store.js","sourceRoot":"","sources":["../../../src/store/file-tool-result-store.ts"],"names":[],"mappings":"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"}
@@ -55,8 +55,12 @@ export declare class AgentEngine {
55
55
  private llmCaller;
56
56
  /** 子模块:工具执行器 */
57
57
  private toolExecutor;
58
- /** 历史摘要缓存:sessionId → { summary, lastSummarizedCount }(LRU 限制防止内存泄漏) */
58
+ /** 历史摘要缓存:仅在 sourcePrefix 仍是当前历史稳定前缀时复用。 */
59
59
  private summaryCache;
60
+ /** sessionId → 后台摘要刷新代次,防止较旧异步任务晚完成后覆盖新缓存。 */
61
+ private summaryRefreshVersion;
62
+ /** 全局单调刷新序列,避免会话版本记录清理后与仍在运行的旧任务撞号。 */
63
+ private summaryRefreshSequence;
60
64
  /** 摘要缓存上限 */
61
65
  private static readonly SUMMARY_CACHE_MAX;
62
66
  /** 数据获取类工具集合(用于循环检测) */
@@ -156,8 +160,8 @@ export declare class AgentEngine {
156
160
  * ≤2 条消息时直接拼接,省去 LLM 调用;LLM 失败时回退到简单拼接。
157
161
  *
158
162
  * P0 优化:使用摘要缓存避免每次请求都做额外 LLM 调用。
159
- * - 缓存命中(增量 ≤ 4 条)→ 复用缓存 + 追加增量,零 LLM 调用
160
- * - 缓存未命中 → 使用快速拼接(不阻塞),异步刷新缓存供下次使用
163
+ * - 稳定前缀命中 → 复用缓存 + 最近内容优先追加增量,零同步 LLM 调用
164
+ * - 缓存未命中 → 使用最近轮次优先的快速投影(不阻塞),异步刷新缓存
161
165
  *
162
166
  * @param history 历史消息列表
163
167
  * @param currentText 当前用户消息文本(用于排除最后一条匹配的 user 消息,null 表示全部纳入摘要)
@@ -166,8 +170,8 @@ export declare class AgentEngine {
166
170
  */
167
171
  private buildHistoryMessages;
168
172
  /**
169
- * 通过轻量 LLM 调用将多轮对话历史压缩为 ≤800 字的陈述句摘要。
170
- * LLM 失败时回退到简单拼接。
173
+ * 通过轻量 LLM 调用压缩较早历史,并完整优先拼接最近轮次。
174
+ * LLM 失败时使用相同的最近优先合成器回退。
171
175
  */
172
176
  private summarizeHistory;
173
177
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/agent/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/agent/engine.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,53 @@ import { injectProgressNudge as injectProgressNudgeFn, injectIterationGuard as i
15
15
  import { steer as steerFn, drainSteering as drainSteeringFn, abortSession as abortSessionFn, abortCascade as abortCascadeFn, cleanupSessionRelations as cleanupSessionRelationsFn, } from "./session-state-manager.js";
16
16
  /** 默认系统提示词 */
17
17
  const DEFAULT_BASE_PROMPT = `You are a helpful AI assistant with access to tools. Use tools when needed to accomplish tasks. Always explain your actions clearly.`;
18
+ const HISTORY_SUMMARY_CHAR_LIMIT = 800;
19
+ const HISTORY_PREFIX_SEPARATOR = '\u001e';
20
+ const HISTORY_OMISSION_MARKER = '\n...[中间历史已省略]...\n';
21
+ /**
22
+ * 在固定字符预算内保留文本两端。历史摘要的开头通常是用户意图,尾部通常是
23
+ * 最新工具结果;仅保留任意一端都会让后续指代失去必要上下文。
24
+ */
25
+ function truncateHistoryEnds(text, limit = HISTORY_SUMMARY_CHAR_LIMIT) {
26
+ if (text.length <= limit)
27
+ return text;
28
+ if (limit <= HISTORY_OMISSION_MARKER.length)
29
+ return text.slice(-limit);
30
+ const contentBudget = limit - HISTORY_OMISSION_MARKER.length;
31
+ const headLength = Math.floor(contentBudget * 0.35);
32
+ const tailLength = contentBudget - headLength;
33
+ return text.slice(0, headLength) + HISTORY_OMISSION_MARKER + text.slice(-tailLength);
34
+ }
35
+ /**
36
+ * 合成模型可见历史:最新轮次先占预算,旧摘要只使用剩余空间。
37
+ * 最新轮次自身超限时,保留其开头意图与尾部结果。
38
+ */
39
+ function composeRecentFirstSummary(olderSummary, recentLines, limit = HISTORY_SUMMARY_CHAR_LIMIT) {
40
+ const recentText = recentLines.join('\n');
41
+ if (!recentText)
42
+ return truncateHistoryEnds(olderSummary, limit);
43
+ if (!olderSummary)
44
+ return truncateHistoryEnds(recentText, limit);
45
+ const recentSection = `[最新对话]: ${recentText}`;
46
+ if (recentSection.length >= limit) {
47
+ return truncateHistoryEnds(recentSection, limit);
48
+ }
49
+ const separator = '\n';
50
+ const olderBudget = limit - recentSection.length - separator.length;
51
+ if (olderBudget <= 0)
52
+ return recentSection;
53
+ return `${truncateHistoryEnds(olderSummary, olderBudget)}${separator}${recentSection}`;
54
+ }
55
+ function historyPrefix(lines, count = lines.length) {
56
+ return lines.slice(0, count).join(HISTORY_PREFIX_SEPARATOR);
57
+ }
58
+ function latestUserTurnStart(history) {
59
+ for (let i = history.length - 1; i >= 0; i--) {
60
+ if (history[i].role === 'user')
61
+ return i;
62
+ }
63
+ return Math.max(0, history.length - 1);
64
+ }
18
65
  /** 进度叙述规则(追加到 system prompt,引导 LLM 在工具调用间输出可见文本)— 可通过 AgentConfig.progressNarrationRules 覆盖 */
19
66
  const DEFAULT_PROGRESS_NARRATION_RULES = `
20
67
 
@@ -94,8 +141,12 @@ export class AgentEngine {
94
141
  llmCaller;
95
142
  /** 子模块:工具执行器 */
96
143
  toolExecutor;
97
- /** 历史摘要缓存:sessionId → { summary, lastSummarizedCount }(LRU 限制防止内存泄漏) */
144
+ /** 历史摘要缓存:仅在 sourcePrefix 仍是当前历史稳定前缀时复用。 */
98
145
  summaryCache = new Map();
146
+ /** sessionId → 后台摘要刷新代次,防止较旧异步任务晚完成后覆盖新缓存。 */
147
+ summaryRefreshVersion = new Map();
148
+ /** 全局单调刷新序列,避免会话版本记录清理后与仍在运行的旧任务撞号。 */
149
+ summaryRefreshSequence = 0;
99
150
  /** 摘要缓存上限 */
100
151
  static SUMMARY_CACHE_MAX = 100;
101
152
  /** 数据获取类工具集合(用于循环检测) */
@@ -491,8 +542,8 @@ export class AgentEngine {
491
542
  * ≤2 条消息时直接拼接,省去 LLM 调用;LLM 失败时回退到简单拼接。
492
543
  *
493
544
  * P0 优化:使用摘要缓存避免每次请求都做额外 LLM 调用。
494
- * - 缓存命中(增量 ≤ 4 条)→ 复用缓存 + 追加增量,零 LLM 调用
495
- * - 缓存未命中 → 使用快速拼接(不阻塞),异步刷新缓存供下次使用
545
+ * - 稳定前缀命中 → 复用缓存 + 最近内容优先追加增量,零同步 LLM 调用
546
+ * - 缓存未命中 → 使用最近轮次优先的快速投影(不阻塞),异步刷新缓存
496
547
  *
497
548
  * @param history 历史消息列表
498
549
  * @param currentText 当前用户消息文本(用于排除最后一条匹配的 user 消息,null 表示全部纳入摘要)
@@ -580,27 +631,30 @@ export class AgentEngine {
580
631
  });
581
632
  if (textHistory.length === 0)
582
633
  return [];
583
- // ≤2 条消息直接拼接,省去 LLM 调用
634
+ // ≤2 条消息同样受字符预算约束,但省去 LLM 调用。
584
635
  let summary;
585
636
  if (textHistory.length <= 2) {
586
- summary = textHistory.join('\n');
637
+ const recentStart = latestUserTurnStart(effectiveHistory);
638
+ summary = composeRecentFirstSummary(textHistory.slice(0, recentStart).join('\n'), textHistory.slice(recentStart));
587
639
  }
588
640
  else {
589
- // P0 优化:优先使用缓存的摘要,避免每次请求都做额外 LLM 调用
641
+ // P0 优化:只有缓存覆盖的内容仍是当前历史稳定前缀时才能复用。
590
642
  const cached = sessionId ? this.summaryCache.get(sessionId) : undefined;
591
- if (cached && (textHistory.length - cached.lastSummarizedCount) <= 4) {
592
- // 缓存命中:复用上次摘要 + 追加增量消息
643
+ const cachePrefixMatches = cached
644
+ && textHistory.length >= cached.lastSummarizedCount
645
+ && historyPrefix(textHistory, cached.lastSummarizedCount) === cached.sourcePrefix;
646
+ if (cached && cachePrefixMatches) {
593
647
  const delta = textHistory.slice(cached.lastSummarizedCount);
594
- summary = delta.length > 0
595
- ? `${cached.summary}\n[最新对话]: ${delta.join('\n')}`
596
- : cached.summary;
597
- if (summary.length > 800)
598
- summary = summary.slice(0, 800) + '...';
648
+ summary = composeRecentFirstSummary(cached.summary, delta);
649
+ if (delta.length > 0 && sessionId) {
650
+ this.refreshSummaryCache(sessionId, textHistory).catch(() => { });
651
+ }
599
652
  }
600
653
  else {
601
- // 无缓存或增量过大:使用快速拼接(不阻塞主 LLM 调用)
602
- const fallback = textHistory.join('\n');
603
- summary = fallback.length > 800 ? fallback.slice(0, 800) + '...' : fallback;
654
+ // 无缓存或稳定前缀失效:当前请求直接生成最近轮次优先投影。
655
+ const recentStart = latestUserTurnStart(effectiveHistory);
656
+ const olderSummary = textHistory.slice(0, recentStart).join('\n');
657
+ summary = composeRecentFirstSummary(olderSummary, textHistory.slice(recentStart));
604
658
  // 异步刷新摘要缓存(不阻塞当前请求,下次请求可命中缓存)
605
659
  if (sessionId) {
606
660
  this.refreshSummaryCache(sessionId, textHistory).catch(() => { });
@@ -642,13 +696,25 @@ export class AgentEngine {
642
696
  ];
643
697
  }
644
698
  /**
645
- * 通过轻量 LLM 调用将多轮对话历史压缩为 ≤800 字的陈述句摘要。
646
- * LLM 失败时回退到简单拼接。
699
+ * 通过轻量 LLM 调用压缩较早历史,并完整优先拼接最近轮次。
700
+ * LLM 失败时使用相同的最近优先合成器回退。
647
701
  */
648
702
  async summarizeHistory(textHistory) {
703
+ const recentStart = (() => {
704
+ for (let i = textHistory.length - 1; i >= 0; i--) {
705
+ if (textHistory[i].startsWith('用户: '))
706
+ return i;
707
+ }
708
+ return Math.max(0, textHistory.length - 1);
709
+ })();
710
+ const olderLines = textHistory.slice(0, recentStart);
711
+ const recentLines = textHistory.slice(recentStart);
712
+ if (olderLines.length === 0) {
713
+ return composeRecentFirstSummary('', recentLines);
714
+ }
649
715
  try {
650
716
  const provider = this.config.llmProvider;
651
- const prompt = `请将以下对话历史压缩为不超过800字的陈述句摘要。必须保留:
717
+ const prompt = `请将以下较早对话历史压缩为简洁的陈述句摘要。必须保留:
652
718
  1. 用户的核心请求和意图
653
719
  2. 助手调用了哪些工具(工具名+关键参数,如收件人邮箱、邮件主题等)
654
720
  3. 工具调用的结果(成功/失败)
@@ -656,9 +722,9 @@ export class AgentEngine {
656
722
  5. **artifact URL**(格式如 /api/work/artifacts/...),这是后续发送邮件等操作的关键引用
657
723
  6. **call_id 标记**(格式如 [call_id: "call_xxx"]),这是后续 read_tool_result 检索工具结果的关键引用,必须原样保留
658
724
 
659
- 不要添加任何评价或建议,只做客观压缩:
725
+ 不要添加任何评价或建议,只做客观压缩;最近对话会由系统另行完整优先拼接:
660
726
 
661
- ${textHistory.join('\n')}`;
727
+ ${olderLines.join('\n')}`;
662
728
  const response = await provider.chat({
663
729
  messages: [
664
730
  { role: 'system', content: '你是一个对话摘要助手。将对话历史压缩为简洁的陈述句摘要,不超过800字。务必保留工具调用名称和关键参数(如邮箱地址、邮件主题等),以及 [call_id: "call_xxx"] 标记,因为这些是后续操作的重要上下文。' },
@@ -670,15 +736,13 @@ ${textHistory.join('\n')}`;
670
736
  const rawContent = response.choices?.[0]?.message?.content;
671
737
  const summary = typeof rawContent === 'string' ? rawContent.trim() : '';
672
738
  if (summary && summary.length > 0) {
673
- return summary.length > 800 ? summary.slice(0, 800) + '...' : summary;
739
+ return composeRecentFirstSummary(summary, recentLines);
674
740
  }
675
741
  }
676
742
  catch (e) {
677
743
  logEvent({ event: 'engine.summarize_failed', level: 'warn', data: { error: e?.message || String(e) } });
678
744
  }
679
- // 回退:简单拼接,截断到 800 字
680
- const fallback = textHistory.join('\n');
681
- return fallback.length > 800 ? fallback.slice(0, 800) + '...' : fallback;
745
+ return composeRecentFirstSummary(olderLines.join('\n'), recentLines);
682
746
  }
683
747
  /**
684
748
  * 异步刷新历史摘要缓存(fire-and-forget,不阻塞主流程)
@@ -687,8 +751,12 @@ ${textHistory.join('\n')}`;
687
751
  * 如果 LLM 调用失败,不影响主流程(已有快速拼接兜底)。
688
752
  */
689
753
  async refreshSummaryCache(sessionId, textHistory) {
754
+ const refreshVersion = ++this.summaryRefreshSequence;
755
+ this.summaryRefreshVersion.set(sessionId, refreshVersion);
690
756
  try {
691
757
  const summary = await this.summarizeHistory(textHistory);
758
+ if (this.summaryRefreshVersion.get(sessionId) !== refreshVersion)
759
+ return;
692
760
  // P2 #11: LRU 淘汰 — 超过上限时移除最旧的条目
693
761
  if (this.summaryCache.size >= AgentEngine.SUMMARY_CACHE_MAX) {
694
762
  const oldestKey = this.summaryCache.keys().next().value;
@@ -698,11 +766,17 @@ ${textHistory.join('\n')}`;
698
766
  this.summaryCache.set(sessionId, {
699
767
  summary,
700
768
  lastSummarizedCount: textHistory.length,
769
+ sourcePrefix: historyPrefix(textHistory),
701
770
  });
702
771
  }
703
772
  catch {
704
773
  // LLM 摘要失败时静默忽略,下次请求仍使用快速拼接
705
774
  }
775
+ finally {
776
+ if (this.summaryRefreshVersion.get(sessionId) === refreshVersion) {
777
+ this.summaryRefreshVersion.delete(sessionId);
778
+ }
779
+ }
706
780
  }
707
781
  // ---- 工具定义 ----
708
782
  /** 获取工具定义列表(含预过滤 + 渐进式发现) */
@@ -1470,6 +1544,7 @@ ${textHistory.join('\n')}`;
1470
1544
  this.childSessionMap.clear();
1471
1545
  this.parentSessionMap.clear();
1472
1546
  this.summaryCache.clear();
1547
+ this.summaryRefreshVersion.clear();
1473
1548
  this.historyManager.clearAll();
1474
1549
  }
1475
1550
  // ---- 致命错误处理 ----