@cicctencent/agent-core 1.0.35 → 1.0.38
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 +19 -0
- package/dist/cjs/agent/engine.d.ts.map +1 -1
- package/dist/cjs/agent/engine.js +87 -2
- package/dist/cjs/agent/engine.js.map +1 -1
- package/dist/cjs/agent/llm-caller.d.ts +22 -5
- package/dist/cjs/agent/llm-caller.d.ts.map +1 -1
- package/dist/cjs/agent/llm-caller.js +113 -27
- package/dist/cjs/agent/llm-caller.js.map +1 -1
- package/dist/cjs/agent/tool-executor.d.ts +24 -0
- package/dist/cjs/agent/tool-executor.d.ts.map +1 -1
- package/dist/cjs/agent/tool-executor.js +98 -8
- package/dist/cjs/agent/tool-executor.js.map +1 -1
- package/dist/cjs/agent/types.d.ts +5 -1
- package/dist/cjs/agent/types.d.ts.map +1 -1
- package/dist/cjs/agent/types.js.map +1 -1
- package/dist/cjs/index.d.ts +6 -2
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +17 -11
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/llm/anthropic-provider.d.ts +5 -0
- package/dist/cjs/llm/anthropic-provider.d.ts.map +1 -1
- package/dist/cjs/llm/anthropic-provider.js +25 -1
- package/dist/cjs/llm/anthropic-provider.js.map +1 -1
- package/dist/cjs/llm/ollama-provider.d.ts +8 -1
- package/dist/cjs/llm/ollama-provider.d.ts.map +1 -1
- package/dist/cjs/llm/ollama-provider.js +19 -0
- package/dist/cjs/llm/ollama-provider.js.map +1 -1
- package/dist/cjs/llm/openai-provider.d.ts.map +1 -1
- package/dist/cjs/llm/openai-provider.js +24 -0
- package/dist/cjs/llm/openai-provider.js.map +1 -1
- package/dist/cjs/llm/types.d.ts +40 -0
- package/dist/cjs/llm/types.d.ts.map +1 -1
- package/dist/cjs/llm/types.js +83 -0
- package/dist/cjs/llm/types.js.map +1 -1
- package/dist/cjs/pool/engine-pool.d.ts +4 -4
- package/dist/cjs/pool/engine-pool.d.ts.map +1 -1
- package/dist/cjs/pool/engine-pool.js +21 -50
- package/dist/cjs/pool/engine-pool.js.map +1 -1
- package/dist/cjs/runtime/run-registry-interface.d.ts +6 -0
- package/dist/cjs/runtime/run-registry-interface.d.ts.map +1 -1
- package/dist/cjs/runtime/run-registry.d.ts +8 -0
- package/dist/cjs/runtime/run-registry.d.ts.map +1 -1
- package/dist/cjs/runtime/run-registry.js +25 -0
- package/dist/cjs/runtime/run-registry.js.map +1 -1
- package/dist/cjs/security/guard.d.ts +12 -1
- package/dist/cjs/security/guard.d.ts.map +1 -1
- package/dist/cjs/security/guard.js +42 -10
- package/dist/cjs/security/guard.js.map +1 -1
- package/dist/cjs/security/types.d.ts +11 -0
- package/dist/cjs/security/types.d.ts.map +1 -1
- package/dist/cjs/types.d.ts +15 -1
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/utils/event-adapter.d.ts.map +1 -1
- package/dist/cjs/utils/event-adapter.js +6 -0
- package/dist/cjs/utils/event-adapter.js.map +1 -1
- package/dist/cjs/utils/ttl-lru-cache.d.ts +49 -0
- package/dist/cjs/utils/ttl-lru-cache.d.ts.map +1 -0
- package/dist/cjs/utils/ttl-lru-cache.js +108 -0
- package/dist/cjs/utils/ttl-lru-cache.js.map +1 -0
- package/dist/esm/agent/engine.d.ts +19 -0
- package/dist/esm/agent/engine.d.ts.map +1 -1
- package/dist/esm/agent/engine.js +87 -2
- package/dist/esm/agent/engine.js.map +1 -1
- package/dist/esm/agent/llm-caller.d.ts +22 -5
- package/dist/esm/agent/llm-caller.d.ts.map +1 -1
- package/dist/esm/agent/llm-caller.js +113 -27
- package/dist/esm/agent/llm-caller.js.map +1 -1
- package/dist/esm/agent/tool-executor.d.ts +24 -0
- package/dist/esm/agent/tool-executor.d.ts.map +1 -1
- package/dist/esm/agent/tool-executor.js +98 -8
- package/dist/esm/agent/tool-executor.js.map +1 -1
- package/dist/esm/agent/types.d.ts +5 -1
- package/dist/esm/agent/types.d.ts.map +1 -1
- package/dist/esm/agent/types.js.map +1 -1
- package/dist/esm/index.d.ts +6 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/llm/anthropic-provider.d.ts +5 -0
- package/dist/esm/llm/anthropic-provider.d.ts.map +1 -1
- package/dist/esm/llm/anthropic-provider.js +25 -1
- package/dist/esm/llm/anthropic-provider.js.map +1 -1
- package/dist/esm/llm/ollama-provider.d.ts +8 -1
- package/dist/esm/llm/ollama-provider.d.ts.map +1 -1
- package/dist/esm/llm/ollama-provider.js +19 -0
- package/dist/esm/llm/ollama-provider.js.map +1 -1
- package/dist/esm/llm/openai-provider.d.ts.map +1 -1
- package/dist/esm/llm/openai-provider.js +24 -0
- package/dist/esm/llm/openai-provider.js.map +1 -1
- package/dist/esm/llm/types.d.ts +40 -0
- package/dist/esm/llm/types.d.ts.map +1 -1
- package/dist/esm/llm/types.js +80 -0
- package/dist/esm/llm/types.js.map +1 -1
- package/dist/esm/pool/engine-pool.d.ts +4 -4
- package/dist/esm/pool/engine-pool.d.ts.map +1 -1
- package/dist/esm/pool/engine-pool.js +21 -50
- package/dist/esm/pool/engine-pool.js.map +1 -1
- package/dist/esm/runtime/run-registry-interface.d.ts +6 -0
- package/dist/esm/runtime/run-registry-interface.d.ts.map +1 -1
- package/dist/esm/runtime/run-registry.d.ts +8 -0
- package/dist/esm/runtime/run-registry.d.ts.map +1 -1
- package/dist/esm/runtime/run-registry.js +25 -0
- package/dist/esm/runtime/run-registry.js.map +1 -1
- package/dist/esm/security/guard.d.ts +12 -1
- package/dist/esm/security/guard.d.ts.map +1 -1
- package/dist/esm/security/guard.js +42 -10
- package/dist/esm/security/guard.js.map +1 -1
- package/dist/esm/security/types.d.ts +11 -0
- package/dist/esm/security/types.d.ts.map +1 -1
- package/dist/esm/types.d.ts +15 -1
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/utils/event-adapter.d.ts.map +1 -1
- package/dist/esm/utils/event-adapter.js +6 -0
- package/dist/esm/utils/event-adapter.js.map +1 -1
- package/dist/esm/utils/ttl-lru-cache.d.ts +49 -0
- package/dist/esm/utils/ttl-lru-cache.d.ts.map +1 -0
- package/dist/esm/utils/ttl-lru-cache.js +104 -0
- package/dist/esm/utils/ttl-lru-cache.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AgentEvent, Message, TokenUsage } from '../types.js';
|
|
2
|
-
import type { LLMProvider } from '../llm/types.js';
|
|
1
|
+
import type { AgentEvent, Message, ToolCall, TokenUsage } from '../types.js';
|
|
2
|
+
import type { LLMProvider, ResponseFormat } from '../llm/types.js';
|
|
3
3
|
import type { ToolDefinition } from '../tool/types.js';
|
|
4
4
|
import type { RetryPolicy, EngineContext } from './types.js';
|
|
5
5
|
import type { HistoryManager } from './history-manager.js';
|
|
@@ -29,6 +29,19 @@ export interface LLMCallObservability {
|
|
|
29
29
|
/** 实际生效的模型(降级到 fallback 时记录 fallback 模型名) */
|
|
30
30
|
fallbackModel?: string;
|
|
31
31
|
}
|
|
32
|
+
/** 流式 LLM 调用回调(流式工具早分发) */
|
|
33
|
+
export interface LLMStreamCallbacks {
|
|
34
|
+
/**
|
|
35
|
+
* 单个 tool_call 的参数聚合完成(后续 tool_call index 出现,或流结束)时立即上报。
|
|
36
|
+
* 消费方可借此提前启动工具执行,使执行时间与剩余内容生成时间重叠。
|
|
37
|
+
*/
|
|
38
|
+
onToolCallReady?: (call: ToolCall) => void;
|
|
39
|
+
/**
|
|
40
|
+
* 新的 LLM 调用尝试即将开始(重试 / TPM 退避 / fallback)。
|
|
41
|
+
* 上一次尝试产生的早分发状态应作废:早分发缓存须清空,避免跨尝试复用过期结果。
|
|
42
|
+
*/
|
|
43
|
+
onToolCallReset?: () => void;
|
|
44
|
+
}
|
|
32
45
|
/** 单次 LLM 调用结果 */
|
|
33
46
|
export interface LLMCallResult {
|
|
34
47
|
/** 完整的 assistant message */
|
|
@@ -54,9 +67,13 @@ export declare class LLMCaller {
|
|
|
54
67
|
/** 是否为不可重试错误(4xx 类确定性错误) */
|
|
55
68
|
private isNonRetryableError;
|
|
56
69
|
/**
|
|
57
|
-
*
|
|
70
|
+
* 错误分类:将错误分类为不同类型,用于决定重试策略和用户提示。
|
|
71
|
+
*
|
|
72
|
+
* 分类优先级:
|
|
73
|
+
* 1. 结构化字段优先 —— 若 err 携带 `kind` 或 `retryable`,直接依此判定,跨供应商一致;
|
|
74
|
+
* 2. 文本兜底 —— 无结构化字段时回落到错误文本解析(保持旧行为兼容)。
|
|
58
75
|
*
|
|
59
|
-
*
|
|
76
|
+
* 分类优先级(文本兜底):context_too_long > rate_limit_tpm > non_retryable > timeout > server_error > network_error > retryable
|
|
60
77
|
*/
|
|
61
78
|
private classifyError;
|
|
62
79
|
/**
|
|
@@ -76,7 +93,7 @@ export declare class LLMCaller {
|
|
|
76
93
|
* 特殊处理:当 API 返回"输入过长"错误时,自动压缩历史并重试(最多一次)
|
|
77
94
|
* 遇到不可重试错误(4xx 配额/认证等)时立即放弃,不浪费重试次数
|
|
78
95
|
*/
|
|
79
|
-
callWithRetry(sessionId: string, messages: Message[], toolDefs: ToolDefinition[], abortSignal: AbortSignal): AsyncGenerator<AgentEvent, {
|
|
96
|
+
callWithRetry(sessionId: string, messages: Message[], toolDefs: ToolDefinition[], abortSignal: AbortSignal, callbacks?: LLMStreamCallbacks, responseFormat?: ResponseFormat): AsyncGenerator<AgentEvent, {
|
|
80
97
|
assistant: Message | null;
|
|
81
98
|
usage?: TokenUsage;
|
|
82
99
|
observability?: LLMCallObservability;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-caller.d.ts","sourceRoot":"","sources":["../../../src/agent/llm-caller.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"llm-caller.d.ts","sourceRoot":"","sources":["../../../src/agent/llm-caller.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAgB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK3D,eAAe;AACf,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACpD,qBAAqB;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,0BAA0B;IAC1B,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,WAAW;IACX,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,mBAAmB;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,uDAAuD;IACvD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,oDAAoD;AACpD,MAAM,WAAW,oBAAoB;IACnC,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,2BAA2B;AAC3B,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC3C;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,kBAAkB;AAClB,MAAM,WAAW,aAAa;IAC5B,4BAA4B;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,uDAAuD;IACvD,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC;AAED;;;;;;;GAOG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,eAAe;IAInC,0BAA0B;IAC1B,cAAc,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAI3C,4BAA4B;IAC5B,OAAO,CAAC,mBAAmB;IAI3B;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IA4FrB;;;;;;;;OAQG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;;;;;OAMG;IACI,aAAa,CAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,EAAE,cAAc,EAAE,EAC1B,WAAW,EAAE,WAAW,EACxB,SAAS,CAAC,EAAE,kBAAkB,EAC9B,cAAc,CAAC,EAAE,cAAc,GAC9B,cAAc,CAAC,UAAU,EAAE;QAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,UAAU,CAAC;QAAC,aAAa,CAAC,EAAE,oBAAoB,CAAA;KAAE,CAAC;IA+LtH,mBAAmB;IACnB,OAAO,CAAC,qBAAqB;IAO7B;;;;;;;;;OASG;YACY,UAAU;IA0CzB,0BAA0B;YACX,gBAAgB;CAuYhC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// ============================================================
|
|
2
2
|
// LLMCaller — LLM 调用 + 重试 + 降级
|
|
3
3
|
// ============================================================
|
|
4
|
+
import { normalizeLLMError } from "../llm/types.js";
|
|
4
5
|
import { StreamingDSMLParser } from "../utils/dsml-parser.js";
|
|
5
6
|
import { rateLimitManager } from "./rate-limit-manager.js";
|
|
6
7
|
import { countMessageTokens, estimateTokens } from "../utils/token-counter.js";
|
|
@@ -23,15 +24,58 @@ export class LLMCaller {
|
|
|
23
24
|
}
|
|
24
25
|
/** 是否为不可重试错误(4xx 类确定性错误) */
|
|
25
26
|
isNonRetryableError(err) {
|
|
26
|
-
return this.classifyError(err
|
|
27
|
+
return this.classifyError(err) === 'non_retryable';
|
|
27
28
|
}
|
|
28
29
|
/**
|
|
29
|
-
*
|
|
30
|
+
* 错误分类:将错误分类为不同类型,用于决定重试策略和用户提示。
|
|
30
31
|
*
|
|
31
|
-
* 分类优先级:
|
|
32
|
+
* 分类优先级:
|
|
33
|
+
* 1. 结构化字段优先 —— 若 err 携带 `kind` 或 `retryable`,直接依此判定,跨供应商一致;
|
|
34
|
+
* 2. 文本兜底 —— 无结构化字段时回落到错误文本解析(保持旧行为兼容)。
|
|
35
|
+
*
|
|
36
|
+
* 分类优先级(文本兜底):context_too_long > rate_limit_tpm > non_retryable > timeout > server_error > network_error > retryable
|
|
32
37
|
*/
|
|
33
|
-
classifyError(
|
|
34
|
-
|
|
38
|
+
classifyError(err) {
|
|
39
|
+
// —— 结构化优先 ——
|
|
40
|
+
if (err && typeof err === 'object') {
|
|
41
|
+
// 显式 retryable 优先(最权威)
|
|
42
|
+
if (err.retryable === false)
|
|
43
|
+
return 'non_retryable';
|
|
44
|
+
if (err.retryable === true) {
|
|
45
|
+
if (err.kind === 'context_length')
|
|
46
|
+
return 'context_too_long';
|
|
47
|
+
return 'retryable';
|
|
48
|
+
}
|
|
49
|
+
switch (err.kind) {
|
|
50
|
+
case 'auth':
|
|
51
|
+
case 'quota':
|
|
52
|
+
return 'non_retryable';
|
|
53
|
+
case 'rate_limit_tpm':
|
|
54
|
+
case 'rate_limit_rpm':
|
|
55
|
+
return 'rate_limit_tpm';
|
|
56
|
+
case 'context_length':
|
|
57
|
+
return 'context_too_long';
|
|
58
|
+
case 'timeout':
|
|
59
|
+
return 'timeout';
|
|
60
|
+
case 'server_error':
|
|
61
|
+
return 'server_error';
|
|
62
|
+
case 'network_error':
|
|
63
|
+
return 'network_error';
|
|
64
|
+
}
|
|
65
|
+
// 有 HTTP status 时也可结构化判定
|
|
66
|
+
const st = err.status ?? err.statusCode ?? (typeof err.response?.status === 'number' ? err.response.status : undefined);
|
|
67
|
+
if (st !== undefined) {
|
|
68
|
+
if (st === 429)
|
|
69
|
+
return 'rate_limit_tpm';
|
|
70
|
+
if (st === 401 || st === 403)
|
|
71
|
+
return 'non_retryable';
|
|
72
|
+
if (st >= 500)
|
|
73
|
+
return 'server_error';
|
|
74
|
+
if (st >= 400)
|
|
75
|
+
return 'non_retryable';
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const msg = ((err?.message || err || '') + '').toLowerCase();
|
|
35
79
|
// 上下文过长(可恢复:压缩后重试)
|
|
36
80
|
if (msg.includes('too long') || msg.includes('input length') ||
|
|
37
81
|
msg.includes('context length') || msg.includes('too many tokens') ||
|
|
@@ -88,7 +132,15 @@ export class LLMCaller {
|
|
|
88
132
|
* 典型错误消息:"rate limit exceeded on dimension: tpm"
|
|
89
133
|
*/
|
|
90
134
|
isTPMRateLimitError(err) {
|
|
91
|
-
|
|
135
|
+
// 结构化优先
|
|
136
|
+
if (err && typeof err === 'object') {
|
|
137
|
+
if (err.kind === 'rate_limit_tpm' || err.kind === 'rate_limit_rpm')
|
|
138
|
+
return true;
|
|
139
|
+
const st = err.status ?? err.statusCode ?? (typeof err.response?.status === 'number' ? err.response.status : undefined);
|
|
140
|
+
if (st === 429)
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
const msg = ((err?.message || err || '') + '').toLowerCase();
|
|
92
144
|
return /\b429\b/.test(msg) && /\btpm\b/.test(msg);
|
|
93
145
|
}
|
|
94
146
|
/**
|
|
@@ -98,7 +150,7 @@ export class LLMCaller {
|
|
|
98
150
|
* 特殊处理:当 API 返回"输入过长"错误时,自动压缩历史并重试(最多一次)
|
|
99
151
|
* 遇到不可重试错误(4xx 配额/认证等)时立即放弃,不浪费重试次数
|
|
100
152
|
*/
|
|
101
|
-
async *callWithRetry(sessionId, messages, toolDefs, abortSignal) {
|
|
153
|
+
async *callWithRetry(sessionId, messages, toolDefs, abortSignal, callbacks, responseFormat) {
|
|
102
154
|
const policy = this.config.retryPolicy;
|
|
103
155
|
const maxRetries = policy?.maxRetries ?? 1;
|
|
104
156
|
const initialDelay = policy?.initialDelay ?? 1000;
|
|
@@ -131,7 +183,7 @@ export class LLMCaller {
|
|
|
131
183
|
};
|
|
132
184
|
// 尝试主 Provider
|
|
133
185
|
callCount++;
|
|
134
|
-
const { result: firstResult, contextTooLong, emptyResponse, usage: firstUsage, error: firstError, firstTokenAt: firstTokenAt0 } = yield* this.callOnceWithDiag(sessionId, messages, toolDefs, abortSignal, this.config.llmProvider, false);
|
|
186
|
+
const { result: firstResult, contextTooLong, emptyResponse, usage: firstUsage, error: firstError, firstTokenAt: firstTokenAt0 } = yield* this.callOnceWithDiag(sessionId, messages, toolDefs, abortSignal, this.config.llmProvider, false, callbacks, responseFormat);
|
|
135
187
|
if (firstResult !== null) {
|
|
136
188
|
successFirstTokenAt = firstTokenAt0;
|
|
137
189
|
successUsage = firstUsage;
|
|
@@ -140,8 +192,8 @@ export class LLMCaller {
|
|
|
140
192
|
lastError = firstError;
|
|
141
193
|
// TPM 速率限制专用重试:TPM 是按分钟计的时间窗口限制,等待窗口重置后可恢复,
|
|
142
194
|
// 不同于配额耗尽。在常规重试/降级之前先尝试 TPM 退避重试。
|
|
143
|
-
if (this.isTPMRateLimitError(
|
|
144
|
-
const tpm = yield* this.retryOnTPM(sessionId, messages, toolDefs, abortSignal, this.config.llmProvider, false, firstError);
|
|
195
|
+
if (this.isTPMRateLimitError(firstError) && !abortSignal.aborted) {
|
|
196
|
+
const tpm = yield* this.retryOnTPM(sessionId, messages, toolDefs, abortSignal, this.config.llmProvider, false, firstError, callbacks, responseFormat);
|
|
145
197
|
callCount += tpm.attempts;
|
|
146
198
|
if (tpm.result !== null) {
|
|
147
199
|
successFirstTokenAt = tpm.firstTokenAt;
|
|
@@ -151,9 +203,9 @@ export class LLMCaller {
|
|
|
151
203
|
lastError = tpm.error || lastError;
|
|
152
204
|
}
|
|
153
205
|
// 不可重试错误:立即放弃,不重试
|
|
154
|
-
const nonRetryable = this.isNonRetryableError(
|
|
206
|
+
const nonRetryable = this.isNonRetryableError(firstError) || emptyResponse;
|
|
155
207
|
// 上下文过长:压缩后重试(仅一次)
|
|
156
|
-
if (contextTooLong && this.config.historyManager) {
|
|
208
|
+
if (contextTooLong && this.config.historyManager && !abortSignal.aborted) {
|
|
157
209
|
const tokensAfter = this.config.historyManager.compressMessages(messages);
|
|
158
210
|
console.log(`[LLMCaller] Context too long, compressed to ~${tokensAfter} tokens, retrying...`);
|
|
159
211
|
yield this.config.createEvent(sessionId, {
|
|
@@ -161,7 +213,7 @@ export class LLMCaller {
|
|
|
161
213
|
content: `🔄 Context too long, compressed history and retrying...`,
|
|
162
214
|
});
|
|
163
215
|
callCount++;
|
|
164
|
-
const { result, usage: retryUsage, error: retryError, firstTokenAt: rft } = yield* this.callOnceWithDiag(sessionId, messages, toolDefs, abortSignal, this.config.llmProvider, false);
|
|
216
|
+
const { result, usage: retryUsage, error: retryError, firstTokenAt: rft } = yield* this.callOnceWithDiag(sessionId, messages, toolDefs, abortSignal, this.config.llmProvider, false, callbacks, responseFormat);
|
|
165
217
|
if (result !== null) {
|
|
166
218
|
successFirstTokenAt = rft;
|
|
167
219
|
successUsage = retryUsage;
|
|
@@ -189,7 +241,7 @@ export class LLMCaller {
|
|
|
189
241
|
if (abortSignal.aborted)
|
|
190
242
|
return { assistant: null };
|
|
191
243
|
callCount++;
|
|
192
|
-
const { result, usage: retryUsage, emptyResponse: retryEmpty, error: retryError, firstTokenAt: rft2 } = yield* this.callOnceWithDiag(sessionId, messages, toolDefs, abortSignal, this.config.llmProvider, false);
|
|
244
|
+
const { result, usage: retryUsage, emptyResponse: retryEmpty, error: retryError, firstTokenAt: rft2 } = yield* this.callOnceWithDiag(sessionId, messages, toolDefs, abortSignal, this.config.llmProvider, false, callbacks, responseFormat);
|
|
193
245
|
if (result !== null) {
|
|
194
246
|
successFirstTokenAt = rft2;
|
|
195
247
|
successUsage = retryUsage;
|
|
@@ -197,7 +249,7 @@ export class LLMCaller {
|
|
|
197
249
|
}
|
|
198
250
|
lastError = retryError || lastError;
|
|
199
251
|
// 重试后再次检查是否不可重试(含空响应)
|
|
200
|
-
if (this.isNonRetryableError(
|
|
252
|
+
if (this.isNonRetryableError(retryError) || retryEmpty)
|
|
201
253
|
break;
|
|
202
254
|
}
|
|
203
255
|
}
|
|
@@ -239,7 +291,7 @@ export class LLMCaller {
|
|
|
239
291
|
provider: fallbackName,
|
|
240
292
|
});
|
|
241
293
|
callCount++;
|
|
242
|
-
const { result, usage: fallbackUsage, emptyResponse: fallbackEmpty, error: fallbackError, firstTokenAt: fft } = yield* this.callOnceWithDiag(sessionId, messages, toolDefs, abortSignal, this.config.fallbackProvider, true);
|
|
294
|
+
const { result, usage: fallbackUsage, emptyResponse: fallbackEmpty, error: fallbackError, firstTokenAt: fft } = yield* this.callOnceWithDiag(sessionId, messages, toolDefs, abortSignal, this.config.fallbackProvider, true, callbacks, responseFormat);
|
|
243
295
|
if (result !== null) {
|
|
244
296
|
successFirstTokenAt = fft;
|
|
245
297
|
successUsage = fallbackUsage;
|
|
@@ -252,8 +304,8 @@ export class LLMCaller {
|
|
|
252
304
|
}
|
|
253
305
|
// TPM 速率限制:fallback 也可能受 TPM 限制(主备常共享同一配额),
|
|
254
306
|
// 等待速率窗口重置后重试
|
|
255
|
-
if (this.isTPMRateLimitError(
|
|
256
|
-
const tpm = yield* this.retryOnTPM(sessionId, messages, toolDefs, abortSignal, this.config.fallbackProvider, true, fallbackError);
|
|
307
|
+
if (this.isTPMRateLimitError(fallbackError) && !abortSignal.aborted) {
|
|
308
|
+
const tpm = yield* this.retryOnTPM(sessionId, messages, toolDefs, abortSignal, this.config.fallbackProvider, true, fallbackError, callbacks, responseFormat);
|
|
257
309
|
if (tpm.result !== null)
|
|
258
310
|
return { assistant: tpm.result, usage: tpm.usage };
|
|
259
311
|
if (!(fallbackEmpty && lastError)) {
|
|
@@ -263,17 +315,20 @@ export class LLMCaller {
|
|
|
263
315
|
}
|
|
264
316
|
}
|
|
265
317
|
// 所有尝试失败 — 将原始错误信息传递给前端,由前端决定展示方式
|
|
266
|
-
|
|
318
|
+
// lastError 为 normalizeLLMError 结果(对象),统一提取原始文本报文,
|
|
319
|
+
// 确保服务商返回 code/重置时间等原文被透传,而非展示 [object Object]。
|
|
320
|
+
const lastErrorMsg = normalizeLLMError(lastError).message;
|
|
321
|
+
const errorType = this.classifyError(lastErrorMsg);
|
|
267
322
|
const userFacingErrors = {
|
|
268
323
|
'timeout': 'LLM 响应超时,可能是网络问题或服务繁忙,请稍后重试',
|
|
269
324
|
'network_error': '网络连接异常,请检查网络后重试',
|
|
270
325
|
'server_error': 'AI 服务端暂时不可用,请稍后重试',
|
|
271
326
|
'rate_limit_tpm': '请求频率超限,请等待 1 分钟后重试',
|
|
272
|
-
'non_retryable':
|
|
327
|
+
'non_retryable': lastErrorMsg || '请求被拒绝(认证/配额问题)',
|
|
273
328
|
'context_too_long': '对话上下文过长,请开启新对话或清理历史',
|
|
274
|
-
'retryable':
|
|
329
|
+
'retryable': lastErrorMsg || 'AI 服务调用失败,请稍后重试',
|
|
275
330
|
};
|
|
276
|
-
const errorMsg = userFacingErrors[errorType] ||
|
|
331
|
+
const errorMsg = userFacingErrors[errorType] || lastErrorMsg || 'All LLM providers failed after retries';
|
|
277
332
|
console.warn(`[LLMCaller] All providers exhausted. Error type: ${errorType}, message: ${errorMsg}`);
|
|
278
333
|
await this.config.runHooks('on_error', { sessionId, iteration: 0, error: errorMsg, recoverable: false });
|
|
279
334
|
yield this.config.createEvent(sessionId, { type: 'error', error: errorMsg, recoverable: false, errorType });
|
|
@@ -296,7 +351,7 @@ export class LLMCaller {
|
|
|
296
351
|
* 策略:每次固定等待 60s(覆盖完整 TPM 窗口),重试 2 次。
|
|
297
352
|
* 当错误不再是 TPM 类型时提前跳出(可能是其他错误或已成功)。
|
|
298
353
|
*/
|
|
299
|
-
async *retryOnTPM(sessionId, messages, toolDefs, abortSignal, provider, isFallback, initialError) {
|
|
354
|
+
async *retryOnTPM(sessionId, messages, toolDefs, abortSignal, provider, isFallback, initialError, callbacks, responseFormat) {
|
|
300
355
|
const tpmRetries = 2;
|
|
301
356
|
/** 固定 60s,覆盖完整 TPM 窗口周期 */
|
|
302
357
|
const tpmDelay = 60_000;
|
|
@@ -319,19 +374,19 @@ export class LLMCaller {
|
|
|
319
374
|
if (abortSignal.aborted)
|
|
320
375
|
return { result: null, usage: lastUsage, error: lastError, attempts };
|
|
321
376
|
attempts++;
|
|
322
|
-
const { result, usage, error, firstTokenAt } = yield* this.callOnceWithDiag(sessionId, messages, toolDefs, abortSignal, provider, isFallback);
|
|
377
|
+
const { result, usage, error, firstTokenAt } = yield* this.callOnceWithDiag(sessionId, messages, toolDefs, abortSignal, provider, isFallback, callbacks, responseFormat);
|
|
323
378
|
if (result !== null)
|
|
324
379
|
return { result, usage, error: null, firstTokenAt, attempts };
|
|
325
380
|
lastError = error || lastError;
|
|
326
381
|
lastUsage = usage;
|
|
327
382
|
// 不再是 TPM 错误,跳出 TPM 专用重试(交由后续降级逻辑处理)
|
|
328
|
-
if (!this.isTPMRateLimitError(
|
|
383
|
+
if (!this.isTPMRateLimitError(error))
|
|
329
384
|
break;
|
|
330
385
|
}
|
|
331
386
|
return { result: null, usage: lastUsage, error: lastError, firstTokenAt: undefined, attempts };
|
|
332
387
|
}
|
|
333
388
|
/** 单次 LLM 调用(流式),带诊断信息 */
|
|
334
|
-
async *callOnceWithDiag(sessionId, messages, toolDefs, abortSignal, provider, isFallback) {
|
|
389
|
+
async *callOnceWithDiag(sessionId, messages, toolDefs, abortSignal, provider, isFallback, callbacks, responseFormat) {
|
|
335
390
|
let chunkUsage;
|
|
336
391
|
/** 调试模式下累积本次请求的网络诊断信息,待流式结束后统一以 debug 事件抛出 */
|
|
337
392
|
const debugEvents = [];
|
|
@@ -340,6 +395,10 @@ export class LLMCaller {
|
|
|
340
395
|
let onExternalAbort = null;
|
|
341
396
|
/** 首内容 chunk 到达时间(用于计算 TTFT);声明在 try 外,供 catch 返回 */
|
|
342
397
|
let firstTokenAt;
|
|
398
|
+
// 流式工具早分发:已上报完毕的 tool_call index(本次尝试内)
|
|
399
|
+
const reportedToolCallIdx = new Set();
|
|
400
|
+
// 新的调用尝试开始:通知消费方作废上一次尝试的早分发状态
|
|
401
|
+
callbacks?.onToolCallReset?.();
|
|
343
402
|
try {
|
|
344
403
|
// 估算请求 token 规模(诊断用:定位 TPM 429 是否因请求体过大)
|
|
345
404
|
const modelInfo = provider.getModel();
|
|
@@ -419,6 +478,7 @@ export class LLMCaller {
|
|
|
419
478
|
messages,
|
|
420
479
|
tools: toolDefs.length > 0 ? toolDefs : undefined,
|
|
421
480
|
toolChoice: toolDefs.length > 0 ? 'auto' : undefined,
|
|
481
|
+
responseFormat,
|
|
422
482
|
abortSignal: streamAbort.signal,
|
|
423
483
|
debug: debugEnabled,
|
|
424
484
|
onDebug,
|
|
@@ -430,6 +490,25 @@ export class LLMCaller {
|
|
|
430
490
|
let role = 'assistant';
|
|
431
491
|
let toolStreamingLastEmit = 0;
|
|
432
492
|
let finishReason;
|
|
493
|
+
/** 流式工具早分发:上报参数聚合完成的 tool_calls(upToIdx 限定只上报 index 更小的条目;省略则上报全部未上报项) */
|
|
494
|
+
const reportReadyToolCalls = (upToIdx) => {
|
|
495
|
+
if (!callbacks?.onToolCallReady)
|
|
496
|
+
return;
|
|
497
|
+
for (const [idx, entry] of toolCallsMap) {
|
|
498
|
+
if (reportedToolCallIdx.has(idx))
|
|
499
|
+
continue;
|
|
500
|
+
if (upToIdx !== undefined && idx >= upToIdx)
|
|
501
|
+
continue;
|
|
502
|
+
if (entry.id && entry.name) {
|
|
503
|
+
reportedToolCallIdx.add(idx);
|
|
504
|
+
callbacks.onToolCallReady({
|
|
505
|
+
id: entry.id,
|
|
506
|
+
type: 'function',
|
|
507
|
+
function: { name: entry.name, arguments: entry.args },
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
};
|
|
433
512
|
// DSML 流式解析器(用于处理 DeepSeek 模型的 DSML 格式工具调用)。
|
|
434
513
|
// 解析器内部已处理「部分 DSML 标记前缀」的暂留,因此所有 content chunk
|
|
435
514
|
// 统一走 process(),由解析器决定哪些是文本增量、哪些暂留等待后续 chunk。
|
|
@@ -501,6 +580,8 @@ export class LLMCaller {
|
|
|
501
580
|
for (const tc of delta.tool_calls) {
|
|
502
581
|
const idx = tc.index ?? 0;
|
|
503
582
|
if (!toolCallsMap.has(idx)) {
|
|
583
|
+
// 新 tool_call index 出现:更小 index 的条目参数已聚合完成,立即上报(早分发)
|
|
584
|
+
reportReadyToolCalls(idx);
|
|
504
585
|
toolCallsMap.set(idx, { id: '', name: '', args: '' });
|
|
505
586
|
}
|
|
506
587
|
const entry = toolCallsMap.get(idx);
|
|
@@ -552,6 +633,8 @@ export class LLMCaller {
|
|
|
552
633
|
const fullContent = contentParts.join('') || null;
|
|
553
634
|
const fullReasoning = reasoningParts.join('') || null;
|
|
554
635
|
const toolCalls = [];
|
|
636
|
+
// 流结束:上报剩余未上报的 tool_calls(最后一个 index 的完成信号即流结束)
|
|
637
|
+
reportReadyToolCalls();
|
|
555
638
|
const sortedEntries = Array.from(toolCallsMap.entries()).sort((a, b) => a[0] - b[0]);
|
|
556
639
|
for (const [, entry] of sortedEntries) {
|
|
557
640
|
if (entry.id && entry.name) {
|
|
@@ -661,7 +744,10 @@ export class LLMCaller {
|
|
|
661
744
|
for (const info of debugEvents) {
|
|
662
745
|
yield this.config.createEvent(sessionId, { type: 'debug', debug: info });
|
|
663
746
|
}
|
|
664
|
-
|
|
747
|
+
// 归一化为结构化错误:优先基于 HTTP status/code/type 推断 kind,
|
|
748
|
+
// 使上层 classifyError 跨供应商一致决策,无需依赖文本正则。
|
|
749
|
+
const structuredErr = normalizeLLMError(err, { status: errStatus, code: errCode, type: errType });
|
|
750
|
+
return { result: null, contextTooLong, usage: chunkUsage, error: structuredErr, firstTokenAt };
|
|
665
751
|
}
|
|
666
752
|
}
|
|
667
753
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-caller.js","sourceRoot":"","sources":["../../../src/agent/llm-caller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"llm-caller.js","sourceRoot":"","sources":["../../../src/agent/llm-caller.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,8 @@ export interface ToolExecutorConfig extends EngineContext {
|
|
|
24
24
|
historyManager: HistoryManager;
|
|
25
25
|
/** 中间件列表 */
|
|
26
26
|
getMiddleware: () => Middleware[] | undefined;
|
|
27
|
+
/** 是否存在 before_tool hook / onToolBefore 拦截器(存在时禁用流式工具早分发,防止 block/modify 语义被绕过) */
|
|
28
|
+
hasBeforeToolInterceptors?: () => boolean;
|
|
27
29
|
}
|
|
28
30
|
/** 工具执行结果 */
|
|
29
31
|
export interface ToolExecResult {
|
|
@@ -46,6 +48,11 @@ export interface ToolLoopState {
|
|
|
46
48
|
* 与 deniedTools(构造时固定)不同,这是动态的:当 iterationGuard / dataFetchGuard
|
|
47
49
|
* 触发后,数据获取类工具被加入此集合,阻止 LLM 幻觉调用已被禁用的工具。 */
|
|
48
50
|
blockedTools?: Set<string>;
|
|
51
|
+
/** 流式工具早分发:已就绪工具调用的预执行结果缓存(callId -> 执行结果)。
|
|
52
|
+
* 由 engine 在每次 LLM 调用前新建/重置;executeOneToolCall 命中缓存时跳过实际执行。 */
|
|
53
|
+
earlyToolResults?: Map<string, ToolExecResult>;
|
|
54
|
+
/** 流式工具早分发:进行中的预执行 Promise(流结束后 await 收尾) */
|
|
55
|
+
earlyExecutions?: Promise<void>[];
|
|
49
56
|
}
|
|
50
57
|
/**
|
|
51
58
|
* 工具执行管理器
|
|
@@ -64,6 +71,23 @@ export declare class AgentToolExecutor {
|
|
|
64
71
|
/** 被禁工具集合(构造时编译,O(1) 查找) */
|
|
65
72
|
private deniedToolsSet;
|
|
66
73
|
constructor(config: ToolExecutorConfig);
|
|
74
|
+
/**
|
|
75
|
+
* 流式工具早分发:LLM 仍在生成后续内容时,立即预执行已聚合完成的工具调用。
|
|
76
|
+
*
|
|
77
|
+
* 安全约束(任一命中则不早分发,交由流结束后的正常路径处理):
|
|
78
|
+
* - 工具未注册 / 被禁(deniedTools / blockedTools)/ 熔断中
|
|
79
|
+
* - execute_command(securityGuard 可能改写参数)
|
|
80
|
+
* - delegate_task(子代理路径复杂,含限流槽位)
|
|
81
|
+
* - 非并发工具(必须保持分组串行语义)
|
|
82
|
+
* - 参数 JSON 解析失败(可能流截断,需走截断抢救路径)
|
|
83
|
+
* - 存在 before_tool hook / onToolBefore middleware(可能 block 或 modify 参数)
|
|
84
|
+
*
|
|
85
|
+
* 预执行结果写入 state.earlyToolResults;executeOneToolCall 命中缓存时
|
|
86
|
+
* 跳过实际执行(事件发射、历史写入、records、after hooks 均保持原时序不变)。
|
|
87
|
+
*/
|
|
88
|
+
startEarlyExecution(state: ToolLoopState, call: ToolCall): void;
|
|
89
|
+
/** 等待全部早分发预执行收尾(engine 在 LLM 流结束后调用;abort 场景同样先收尾再退出) */
|
|
90
|
+
awaitEarlyExecutions(state: ToolLoopState): Promise<void>;
|
|
67
91
|
/** 执行一批 tool_calls(按并发属性分组) */
|
|
68
92
|
executeToolCalls(state: ToolLoopState, toolCalls: ToolCall[]): AsyncGenerator<AgentEvent>;
|
|
69
93
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../../src/agent/tool-executor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../../src/agent/tool-executor.ts"],"names":[],"mappings":"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"}
|