@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.
- package/dist/cjs/agent/engine.d.ts +9 -5
- package/dist/cjs/agent/engine.d.ts.map +1 -1
- package/dist/cjs/agent/engine.js +100 -25
- package/dist/cjs/agent/engine.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/store/file-tool-result-store.d.ts +22 -0
- package/dist/cjs/store/file-tool-result-store.d.ts.map +1 -1
- package/dist/cjs/store/file-tool-result-store.js +74 -24
- package/dist/cjs/store/file-tool-result-store.js.map +1 -1
- package/dist/esm/agent/engine.d.ts +9 -5
- package/dist/esm/agent/engine.d.ts.map +1 -1
- package/dist/esm/agent/engine.js +100 -25
- package/dist/esm/agent/engine.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/store/file-tool-result-store.d.ts +22 -0
- package/dist/esm/store/file-tool-result-store.d.ts.map +1 -1
- package/dist/esm/store/file-tool-result-store.js +73 -23
- package/dist/esm/store/file-tool-result-store.js.map +1 -1
- package/package.json +1 -1
package/dist/cjs/index.js.map
CHANGED
|
@@ -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
|
|
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
|
-
|
|
57
|
-
|
|
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 =
|
|
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,
|
|
120
|
-
|
|
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,
|
|
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 { /*
|
|
192
|
+
catch { /* 目录不存在时静默 */ }
|
|
143
193
|
return null;
|
|
144
194
|
}
|
|
145
195
|
listOffloads(sessionId) {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
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
|
-
|
|
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":";AAAA,+DAA+D;AAC/D,8CAA8C;AAC9C,+DAA+D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE/D,uCAAyB;AAEzB,2CAA6B;AAE7B,8CAAuD;AASvD
|
|
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
|
-
/**
|
|
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
|
-
* -
|
|
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
|
|
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":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAA4B,UAAU,EAA0C,MAAM,aAAa,CAAC;AAElJ,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAuC,MAAM,YAAY,CAAC;AAC/F,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAItD,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/agent/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/agent/engine.js
CHANGED
|
@@ -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
|
-
/**
|
|
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
|
-
* -
|
|
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
|
|
634
|
+
// ≤2 条消息同样受字符预算约束,但省去 LLM 调用。
|
|
584
635
|
let summary;
|
|
585
636
|
if (textHistory.length <= 2) {
|
|
586
|
-
|
|
637
|
+
const recentStart = latestUserTurnStart(effectiveHistory);
|
|
638
|
+
summary = composeRecentFirstSummary(textHistory.slice(0, recentStart).join('\n'), textHistory.slice(recentStart));
|
|
587
639
|
}
|
|
588
640
|
else {
|
|
589
|
-
// P0
|
|
641
|
+
// P0 优化:只有缓存覆盖的内容仍是当前历史稳定前缀时才能复用。
|
|
590
642
|
const cached = sessionId ? this.summaryCache.get(sessionId) : undefined;
|
|
591
|
-
|
|
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 =
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
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
|
-
//
|
|
602
|
-
const
|
|
603
|
-
|
|
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
|
|
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 =
|
|
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
|
-
${
|
|
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
|
|
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
|
-
|
|
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
|
// ---- 致命错误处理 ----
|