@cicctencent/agent-core 0.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.
- package/README.md +952 -0
- package/dist/agent/engine.d.ts +113 -0
- package/dist/agent/engine.d.ts.map +1 -0
- package/dist/agent/history-manager.d.ts +78 -0
- package/dist/agent/history-manager.d.ts.map +1 -0
- package/dist/agent/llm-caller.d.ts +58 -0
- package/dist/agent/llm-caller.d.ts.map +1 -0
- package/dist/agent/tool-executor.d.ts +95 -0
- package/dist/agent/tool-executor.d.ts.map +1 -0
- package/dist/agent/types.d.ts +128 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/workflow.d.ts +74 -0
- package/dist/agent/workflow.d.ts.map +1 -0
- package/dist/context/collector.d.ts +12 -0
- package/dist/context/collector.d.ts.map +1 -0
- package/dist/context/manager.d.ts +16 -0
- package/dist/context/manager.d.ts.map +1 -0
- package/dist/context/types.d.ts +39 -0
- package/dist/context/types.d.ts.map +1 -0
- package/dist/hooks/types.d.ts +47 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/llm/anthropic-provider.d.ts +28 -0
- package/dist/llm/anthropic-provider.d.ts.map +1 -0
- package/dist/llm/factory.d.ts +19 -0
- package/dist/llm/factory.d.ts.map +1 -0
- package/dist/llm/ollama-provider.d.ts +13 -0
- package/dist/llm/ollama-provider.d.ts.map +1 -0
- package/dist/llm/openai-provider.d.ts +18 -0
- package/dist/llm/openai-provider.d.ts.map +1 -0
- package/dist/llm/provider.d.ts +7 -0
- package/dist/llm/provider.d.ts.map +1 -0
- package/dist/llm/types.d.ts +78 -0
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/mcp/base-client.d.ts +50 -0
- package/dist/mcp/base-client.d.ts.map +1 -0
- package/dist/mcp/client.d.ts +27 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/factory.d.ts +16 -0
- package/dist/mcp/factory.d.ts.map +1 -0
- package/dist/mcp/http-client.d.ts +24 -0
- package/dist/mcp/http-client.d.ts.map +1 -0
- package/dist/mcp/proxy-agent.d.ts +49 -0
- package/dist/mcp/proxy-agent.d.ts.map +1 -0
- package/dist/mcp/stdio-client.d.ts +16 -0
- package/dist/mcp/stdio-client.d.ts.map +1 -0
- package/dist/mcp/types.d.ts +60 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/memory/checkpoint.d.ts +62 -0
- package/dist/memory/checkpoint.d.ts.map +1 -0
- package/dist/memory/extractor.d.ts +59 -0
- package/dist/memory/extractor.d.ts.map +1 -0
- package/dist/memory/persona.d.ts +38 -0
- package/dist/memory/persona.d.ts.map +1 -0
- package/dist/memory/pipeline.d.ts +50 -0
- package/dist/memory/pipeline.d.ts.map +1 -0
- package/dist/memory/prompts.d.ts +9 -0
- package/dist/memory/prompts.d.ts.map +1 -0
- package/dist/memory/recall.d.ts +66 -0
- package/dist/memory/recall.d.ts.map +1 -0
- package/dist/memory/scene.d.ts +49 -0
- package/dist/memory/scene.d.ts.map +1 -0
- package/dist/memory/types.d.ts +43 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/middleware/types.d.ts +52 -0
- package/dist/middleware/types.d.ts.map +1 -0
- package/dist/sandbox/types.d.ts +59 -0
- package/dist/sandbox/types.d.ts.map +1 -0
- package/dist/security/guard.d.ts +41 -0
- package/dist/security/guard.d.ts.map +1 -0
- package/dist/security/types.d.ts +36 -0
- package/dist/security/types.d.ts.map +1 -0
- package/dist/skill/manager.d.ts +95 -0
- package/dist/skill/manager.d.ts.map +1 -0
- package/dist/skill/router.d.ts +26 -0
- package/dist/skill/router.d.ts.map +1 -0
- package/dist/skill/types.d.ts +55 -0
- package/dist/skill/types.d.ts.map +1 -0
- package/dist/tool/delegate.d.ts +34 -0
- package/dist/tool/delegate.d.ts.map +1 -0
- package/dist/tool/registry.d.ts +24 -0
- package/dist/tool/registry.d.ts.map +1 -0
- package/dist/tool/types.d.ts +101 -0
- package/dist/tool/types.d.ts.map +1 -0
- package/dist/types.d.ts +150 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils/token-counter.d.ts +22 -0
- package/dist/utils/token-counter.d.ts.map +1 -0
- package/package.json +42 -0
- package/src/agent/engine.ts +875 -0
- package/src/agent/history-manager.ts +323 -0
- package/src/agent/llm-caller.ts +383 -0
- package/src/agent/tool-executor.ts +713 -0
- package/src/agent/types.ts +136 -0
- package/src/agent/workflow.ts +339 -0
- package/src/context/collector.ts +59 -0
- package/src/context/manager.ts +40 -0
- package/src/context/types.ts +51 -0
- package/src/hooks/types.ts +77 -0
- package/src/index.ts +178 -0
- package/src/llm/anthropic-provider.ts +412 -0
- package/src/llm/factory.ts +34 -0
- package/src/llm/ollama-provider.ts +39 -0
- package/src/llm/openai-provider.ts +200 -0
- package/src/llm/provider.ts +15 -0
- package/src/llm/types.ts +91 -0
- package/src/mcp/base-client.ts +159 -0
- package/src/mcp/client.ts +81 -0
- package/src/mcp/factory.ts +45 -0
- package/src/mcp/http-client.ts +149 -0
- package/src/mcp/proxy-agent.ts +227 -0
- package/src/mcp/stdio-client.ts +104 -0
- package/src/mcp/types.ts +65 -0
- package/src/memory/checkpoint.ts +146 -0
- package/src/memory/extractor.ts +164 -0
- package/src/memory/persona.ts +106 -0
- package/src/memory/pipeline.ts +192 -0
- package/src/memory/prompts.ts +73 -0
- package/src/memory/recall.ts +217 -0
- package/src/memory/scene.ts +137 -0
- package/src/memory/types.ts +54 -0
- package/src/middleware/types.ts +62 -0
- package/src/sandbox/types.ts +185 -0
- package/src/security/guard.ts +249 -0
- package/src/security/types.ts +46 -0
- package/src/skill/manager.ts +420 -0
- package/src/skill/router.ts +158 -0
- package/src/skill/types.ts +67 -0
- package/src/tool/delegate.ts +105 -0
- package/src/tool/registry.ts +64 -0
- package/src/tool/types.ts +124 -0
- package/src/types.ts +188 -0
- package/src/utils/token-counter.ts +108 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { AgentEvent, AgentStatus, Message } from '../types.ts';
|
|
2
|
+
import type { ToolRegistry } from '../tool/registry.ts';
|
|
3
|
+
import type { AgentConfig, RunOptions } from './types.ts';
|
|
4
|
+
import type { HookEvent, HookContext, HookResult } from '../hooks/types.ts';
|
|
5
|
+
export declare class AgentEngine {
|
|
6
|
+
private config;
|
|
7
|
+
/** sessionId → AgentStatus */
|
|
8
|
+
private statusMap;
|
|
9
|
+
/** sessionId → AbortController (internal) */
|
|
10
|
+
private abortMap;
|
|
11
|
+
/** sessionId → steering messages(实时转向队列) */
|
|
12
|
+
private steeringMap;
|
|
13
|
+
/** 子模块:历史管理器 */
|
|
14
|
+
private historyManager;
|
|
15
|
+
/** 子模块:LLM 调用器 */
|
|
16
|
+
private llmCaller;
|
|
17
|
+
/** 子模块:工具执行器 */
|
|
18
|
+
private toolExecutor;
|
|
19
|
+
/** 数据获取类工具集合(用于循环检测) */
|
|
20
|
+
private dataFetchTools;
|
|
21
|
+
/** 产出型工具集合(有这些调用时不触发数据获取循环检测) */
|
|
22
|
+
private outputTools;
|
|
23
|
+
constructor(config: AgentConfig);
|
|
24
|
+
/** 获取当前 Agent 的 ToolRegistry(供 read_tool_doc 等内置工具使用) */
|
|
25
|
+
getToolRegistry(): ToolRegistry;
|
|
26
|
+
/** 动态调整最大迭代上限(用于子 Agent 场景,避免子任务消耗过多迭代) */
|
|
27
|
+
setMaxIterations(max: number): void;
|
|
28
|
+
/** 获取当前 Agent 的 SkillManager(供 load_skill 等内置工具使用,确保 scope 内操作) */
|
|
29
|
+
getSkillManager(): import('../skill/manager.ts').SkillManager | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* 注入会话历史(从外部恢复,如持久化存储)
|
|
32
|
+
* 用于跨引擎实例保持对话上下文
|
|
33
|
+
*/
|
|
34
|
+
setHistory(sessionId: string, messages: Message[]): void;
|
|
35
|
+
/**
|
|
36
|
+
* 获取会话历史副本(用于持久化保存)
|
|
37
|
+
*/
|
|
38
|
+
getHistorySnapshot(sessionId: string): Message[];
|
|
39
|
+
/**
|
|
40
|
+
* 执行 Agent 任务(流式推送事件)
|
|
41
|
+
* 上层通过 for-await-of 消费事件流
|
|
42
|
+
*/
|
|
43
|
+
run(options: RunOptions): AsyncGenerator<AgentEvent>;
|
|
44
|
+
/** 解析 Skill 路由,返回 Skill 内容、实际消息和路由命中状态 */
|
|
45
|
+
private resolveSkill;
|
|
46
|
+
/** 构建初始消息列表(system + history + user) */
|
|
47
|
+
private buildInitialMessages;
|
|
48
|
+
/** 获取工具定义列表(含预过滤 + 渐进式发现) */
|
|
49
|
+
private resolveToolDefs;
|
|
50
|
+
/** 构建 ToolContext */
|
|
51
|
+
private buildToolContext;
|
|
52
|
+
/** 汇总准备阶段,生成 LoopState */
|
|
53
|
+
private prepareRun;
|
|
54
|
+
/** 主循环:迭代调用 LLM → 执行工具 → 直到完成或达到上限 */
|
|
55
|
+
private agentLoop;
|
|
56
|
+
/**
|
|
57
|
+
* 向运行中的 Agent 注入 steering 消息
|
|
58
|
+
* 消息将在下次 LLM 调用前注入对话上下文
|
|
59
|
+
*/
|
|
60
|
+
steer(sessionId: string, message: string): boolean;
|
|
61
|
+
/** 消费当前会话的 steering 消息,注入到 messages 中 */
|
|
62
|
+
private drainSteering;
|
|
63
|
+
/**
|
|
64
|
+
* 进度叙述提醒
|
|
65
|
+
* 当 LLM 连续 2 次迭代仅发出 tool_calls 而无 content 时,注入 user 消息提醒输出进度说明。
|
|
66
|
+
* 确保用户在对话中有可见的文字输出,而不是所有内容都收在执行步骤中。
|
|
67
|
+
*/
|
|
68
|
+
private injectProgressNudge;
|
|
69
|
+
/**
|
|
70
|
+
* 迭代预算提醒
|
|
71
|
+
* 当剩余迭代不足 30% 时,注入 user 消息提醒 LLM 停止数据收集、转向完成任务。
|
|
72
|
+
* 解决 agent 在数据查询循环中耗尽迭代、永远无法进入文档生成/委托阶段的问题。
|
|
73
|
+
*/
|
|
74
|
+
private injectIterationGuard;
|
|
75
|
+
/**
|
|
76
|
+
* 数据获取循环检测 + 连续失败熔断
|
|
77
|
+
*
|
|
78
|
+
* 两类触发条件:
|
|
79
|
+
* 1. 数据获取循环:最近 3+ 条工具调用全部是数据获取类且无产出型工具
|
|
80
|
+
* 2. 连续失败熔断:最近 5+ 条工具调用中 4+ 条失败,强制停止试错、转向产出
|
|
81
|
+
*/
|
|
82
|
+
private checkDataFetchLoop;
|
|
83
|
+
/** 注入数据获取循环/连续失败熔断提示 */
|
|
84
|
+
private injectDataFetchGuard;
|
|
85
|
+
/**
|
|
86
|
+
* 任务继续提示
|
|
87
|
+
* 当 LLM 在工具调用后提前停止(无新工具调用也无明确总结)时,注入提示让其继续完成剩余任务。
|
|
88
|
+
* 典型场景:多步委托任务中,第一步数据采集完成后 LLM 未生成后续步骤的 delegate_task。
|
|
89
|
+
*/
|
|
90
|
+
private injectContinuationNudge;
|
|
91
|
+
/**
|
|
92
|
+
* 渐进式结果交付
|
|
93
|
+
* 当主 Agent 并行分发了多个 delegate_task 后,注入提示让 LLM 逐步呈现每个子任务的结果,
|
|
94
|
+
* 而不是等所有结果全部返回后才开始输出。减少用户感知等待时间。
|
|
95
|
+
*/
|
|
96
|
+
private injectProgressiveNudge;
|
|
97
|
+
/** 执行指定事件类型的所有 Hook */
|
|
98
|
+
runHooks(event: HookEvent, ctx: HookContext): Promise<HookResult[]>;
|
|
99
|
+
/** 执行中间件的 before/after 阶段 */
|
|
100
|
+
private runMiddlewarePhase;
|
|
101
|
+
/** 执行中间件的 onToolBefore/onToolAfter 阶段 */
|
|
102
|
+
runMiddlewareToolPhase(phase: 'onToolBefore' | 'onToolAfter', ctx: HookContext): Promise<HookResult[]>;
|
|
103
|
+
private emitDone;
|
|
104
|
+
/** 中断指定会话的 Agent 执行 */
|
|
105
|
+
abort(sessionId: string): void;
|
|
106
|
+
/** 查询指定会话的 Agent 状态 */
|
|
107
|
+
getStatus(sessionId: string): AgentStatus;
|
|
108
|
+
/** 销毁引擎,释放所有会话资源 */
|
|
109
|
+
destroy(): void;
|
|
110
|
+
createEvent(sessionId: string, event: Record<string, unknown>): AgentEvent;
|
|
111
|
+
private createNoopShell;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +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,EAAuD,MAAM,aAAa,CAAC;AAGzH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAe,MAAM,YAAY,CAAC;AAEvE,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA4D5E,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAA4G;IAC1H,8BAA8B;IAC9B,OAAO,CAAC,SAAS,CAAkC;IACnD,6CAA6C;IAC7C,OAAO,CAAC,QAAQ,CAAsC;IACtD,4CAA4C;IAC5C,OAAO,CAAC,WAAW,CAA+B;IAElD,gBAAgB;IAChB,OAAO,CAAC,cAAc,CAAiB;IACvC,kBAAkB;IAClB,OAAO,CAAC,SAAS,CAAY;IAC7B,gBAAgB;IAChB,OAAO,CAAC,YAAY,CAAoB;IAExC,wBAAwB;IACxB,OAAO,CAAC,cAAc,CAAc;IACpC,iCAAiC;IACjC,OAAO,CAAC,WAAW,CAAc;gBAErB,MAAM,EAAE,WAAW;IAiD/B,yDAAyD;IACzD,eAAe,IAAI,YAAY;IAI/B,2CAA2C;IAC3C,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAInC,mEAAmE;IACnE,eAAe,IAAI,OAAO,qBAAqB,EAAE,YAAY,GAAG,SAAS;IAIzE;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAIxD;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE;IAIhD;;;OAGG;IACI,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC;IAoC3D,0CAA0C;YAC5B,YAAY;IAe1B,wCAAwC;IACxC,OAAO,CAAC,oBAAoB;IAoD5B,6BAA6B;IAC7B,OAAO,CAAC,eAAe;IAyCvB,qBAAqB;IACrB,OAAO,CAAC,gBAAgB;IAmBxB,0BAA0B;YACZ,UAAU;IAyBxB,sCAAsC;YACvB,SAAS;IAgJxB;;;OAGG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IASlD,yCAAyC;IACzC,OAAO,CAAC,aAAa;IAgBrB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAuC5B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAiC1B,wBAAwB;IACxB,OAAO,CAAC,oBAAoB;IAsC5B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAuB/B;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IA2B9B,uBAAuB;IACjB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAkBzE,6BAA6B;YACf,kBAAkB;IAwBhC,yCAAyC;IACnC,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,aAAa,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAqB5G,OAAO,CAAC,QAAQ;IAkBhB,uBAAuB;IACvB,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQ9B,uBAAuB;IACvB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW;IAIzC,oBAAoB;IACpB,OAAO,IAAI,IAAI;IAYf,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;IAI1E,OAAO,CAAC,eAAe;CAOxB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { Message } from '../types.ts';
|
|
2
|
+
import type { ToolResultStore } from './types.ts';
|
|
3
|
+
/** 历史管理配置 */
|
|
4
|
+
export interface HistoryManagerConfig {
|
|
5
|
+
/** 消息历史上限(滑动窗口),默认 50 */
|
|
6
|
+
maxMessages: number;
|
|
7
|
+
/** 上下文压缩配置 */
|
|
8
|
+
contextBudget?: {
|
|
9
|
+
maxToolOutput?: number;
|
|
10
|
+
compactThreshold?: number;
|
|
11
|
+
maxContextTokens?: number;
|
|
12
|
+
};
|
|
13
|
+
/** 工具结果存储(可选) */
|
|
14
|
+
toolResultStore?: ToolResultStore;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 会话历史管理器
|
|
18
|
+
*
|
|
19
|
+
* 职责:
|
|
20
|
+
* - 维护 per-session 的消息历史(滑动窗口)
|
|
21
|
+
* - 多级智能压缩(token 感知)
|
|
22
|
+
* - Offload 大工具结果到外部存储
|
|
23
|
+
*/
|
|
24
|
+
export declare class HistoryManager {
|
|
25
|
+
private config;
|
|
26
|
+
/** sessionId → Message[](会话历史,滑动窗口) */
|
|
27
|
+
private historyMap;
|
|
28
|
+
/** sessionId → 当前 token 总数(增量维护,避免全量重算) */
|
|
29
|
+
private tokenCountMap;
|
|
30
|
+
constructor(config: HistoryManagerConfig);
|
|
31
|
+
/** 注入会话历史(从外部恢复,如持久化存储) */
|
|
32
|
+
setHistory(sessionId: string, messages: Message[]): void;
|
|
33
|
+
/** 获取会话历史副本(用于持久化保存) */
|
|
34
|
+
getHistorySnapshot(sessionId: string): Message[];
|
|
35
|
+
/** 获取会话历史副本(用于构建 LLM 请求) */
|
|
36
|
+
getHistory(sessionId: string): Message[];
|
|
37
|
+
/** 追加消息到会话历史(含自动压缩) */
|
|
38
|
+
addHistory(sessionId: string, msg: Message): void;
|
|
39
|
+
/** 清理指定会话的历史 */
|
|
40
|
+
clearHistory(sessionId: string): void;
|
|
41
|
+
/** 清理所有会话历史 */
|
|
42
|
+
clearAll(): void;
|
|
43
|
+
/** 不应被 offload 的读取类工具(避免 offload → read → offload 无限链) */
|
|
44
|
+
private static READ_THROUGH_TOOLS;
|
|
45
|
+
/**
|
|
46
|
+
* 处理工具输出:
|
|
47
|
+
* - 小结果直接返回
|
|
48
|
+
* - 大结果写入 OffloadStore,返回摘要标签(保留 100% 可溯源)
|
|
49
|
+
* - 无 OffloadStore 时回退到截断
|
|
50
|
+
*/
|
|
51
|
+
processToolOutput(output: string, callId: string, toolName?: string, sessionId?: string): string;
|
|
52
|
+
/**
|
|
53
|
+
* 压缩消息列表(公开接口,供 LLMCaller 在上下文过长时调用)
|
|
54
|
+
*
|
|
55
|
+
* 使用与 addHistory 相同的多级压缩策略,但直接作用于传入的 messages 数组。
|
|
56
|
+
* 返回压缩后的 token 估算值。
|
|
57
|
+
*/
|
|
58
|
+
compressMessages(messages: Message[], targetTokens?: number): number;
|
|
59
|
+
/** Level 1: 智能压缩(token 感知多级压缩管道) */
|
|
60
|
+
private compactHistorySmart;
|
|
61
|
+
/** 压缩阶段 1: 卸载超长工具参数 */
|
|
62
|
+
private offloadToolArguments;
|
|
63
|
+
/** 压缩阶段 2: 卸载 base64 数据块 */
|
|
64
|
+
private offloadBase64Content;
|
|
65
|
+
/** 压缩阶段 3: 非破坏性卸载大工具结果 */
|
|
66
|
+
private offloadLargeToolResults;
|
|
67
|
+
/** 压缩阶段 4: 截断大工具结果 */
|
|
68
|
+
private truncateLargeToolResults;
|
|
69
|
+
/** Level 2: 成对裁剪历史(移除最早的 assistant + 关联 tool 消息) */
|
|
70
|
+
private compactHistoryPairs;
|
|
71
|
+
/** 截断工具输出(保留首尾,中间省略) */
|
|
72
|
+
private truncateOutput;
|
|
73
|
+
/** 根据 tool_call_id 从历史中查找工具名 */
|
|
74
|
+
static findToolNameForCallId(callId: string, history: Message[]): string;
|
|
75
|
+
/** DJB2 哈希(用于生成短 nodeId) */
|
|
76
|
+
static simpleHash(str: string): number;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=history-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-manager.d.ts","sourceRoot":"","sources":["../../src/agent/history-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAY,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,YAAY,CAAC;AAGhE,aAAa;AACb,MAAM,WAAW,oBAAoB;IACnC,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc;IACd,aAAa,CAAC,EAAE;QACd,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,iBAAiB;IACjB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED;;;;;;;GAOG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,uCAAuC;IACvC,OAAO,CAAC,UAAU,CAAgC;IAClD,2CAA2C;IAC3C,OAAO,CAAC,aAAa,CAA6B;gBAEtC,MAAM,EAAE,oBAAoB;IAMxC,2BAA2B;IAC3B,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAMxD,wBAAwB;IACxB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE;IAIhD,4BAA4B;IAC5B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE;IAIxC,uBAAuB;IACvB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI;IAiCjD,gBAAgB;IAChB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKrC,eAAe;IACf,QAAQ,IAAI,IAAI;IAOhB,0DAA0D;IAC1D,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAiD;IAElF;;;;;OAKG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;IA6ChG;;;;;OAKG;IACH,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM;IAUpE,oCAAoC;IACpC,OAAO,CAAC,mBAAmB;IAqB3B,uBAAuB;IACvB,OAAO,CAAC,oBAAoB;IAuB5B,4BAA4B;IAC5B,OAAO,CAAC,oBAAoB;IAW5B,0BAA0B;IAC1B,OAAO,CAAC,uBAAuB;IA0B/B,sBAAsB;IACtB,OAAO,CAAC,wBAAwB;IAahC,oDAAoD;IACpD,OAAO,CAAC,mBAAmB;IAY3B,wBAAwB;IACxB,OAAO,CAAC,cAAc;IAYtB,gCAAgC;IAChC,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM;IAUxE,4BAA4B;IAC5B,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAOvC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { AgentEvent, Message, TokenUsage } from '../types.ts';
|
|
2
|
+
import type { LLMProvider } from '../llm/types.ts';
|
|
3
|
+
import type { ToolDefinition } from '../tool/types.ts';
|
|
4
|
+
import type { RetryPolicy } from './types.ts';
|
|
5
|
+
import type { HookEvent, HookContext, HookResult } from '../hooks/types.ts';
|
|
6
|
+
import type { HistoryManager } from './history-manager.ts';
|
|
7
|
+
/** LLM 调用配置 */
|
|
8
|
+
export interface LLMCallerConfig {
|
|
9
|
+
/** 主 LLM Provider */
|
|
10
|
+
llmProvider: LLMProvider;
|
|
11
|
+
/** 降级 LLM Provider(可选) */
|
|
12
|
+
fallbackProvider?: LLMProvider;
|
|
13
|
+
/** 重试策略 */
|
|
14
|
+
retryPolicy?: RetryPolicy;
|
|
15
|
+
/** LLM 推理超时(毫秒) */
|
|
16
|
+
llmTimeout: number;
|
|
17
|
+
/** Hook 执行器(由 Engine 注入) */
|
|
18
|
+
runHooks: (event: HookEvent, ctx: HookContext) => Promise<HookResult[]>;
|
|
19
|
+
/** 事件创建辅助(由 Engine 注入) */
|
|
20
|
+
createEvent: (sessionId: string, event: Record<string, unknown>) => AgentEvent;
|
|
21
|
+
/** 历史管理器(可选,用于上下文过长时压缩) */
|
|
22
|
+
historyManager?: HistoryManager;
|
|
23
|
+
}
|
|
24
|
+
/** 单次 LLM 调用结果 */
|
|
25
|
+
export interface LLMCallResult {
|
|
26
|
+
/** 完整的 assistant message */
|
|
27
|
+
assistant: Message;
|
|
28
|
+
/** 本次调用消耗的 token */
|
|
29
|
+
usage?: TokenUsage;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* LLM 调用管理器
|
|
33
|
+
*
|
|
34
|
+
* 职责:
|
|
35
|
+
* - 流式调用 LLM(支持 tool_calls 累积)
|
|
36
|
+
* - 重试 + 指数退避
|
|
37
|
+
* - 主 Provider → Fallback Provider 降级
|
|
38
|
+
*/
|
|
39
|
+
export declare class LLMCaller {
|
|
40
|
+
private config;
|
|
41
|
+
constructor(config: LLMCallerConfig);
|
|
42
|
+
/** 更新主 Provider(热更新场景) */
|
|
43
|
+
updateProvider(provider: LLMProvider): void;
|
|
44
|
+
/**
|
|
45
|
+
* 带重试和降级的 LLM 调用
|
|
46
|
+
* 返回 assistant message 或 null(所有尝试失败)
|
|
47
|
+
*
|
|
48
|
+
* 特殊处理:当 API 返回“输入过长”错误时,自动压缩历史并重试(最多一次)
|
|
49
|
+
*/
|
|
50
|
+
callWithRetry(sessionId: string, messages: Message[], toolDefs: ToolDefinition[], abortSignal: AbortSignal): AsyncGenerator<AgentEvent, Message | null>;
|
|
51
|
+
/** 是否为“上下文过长”错误 */
|
|
52
|
+
private isContextTooLongError;
|
|
53
|
+
/** 单次 LLM 调用(流式),带诊断信息 */
|
|
54
|
+
private callOnceWithDiag;
|
|
55
|
+
/** 单次 LLM 调用(流式),返回 assistant message 或 null(保留向后兼容) */
|
|
56
|
+
private callOnce;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=llm-caller.d.ts.map
|
|
@@ -0,0 +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,EAAY,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,eAAe;AACf,MAAM,WAAW,eAAe;IAC9B,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,4BAA4B;IAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACxE,0BAA0B;IAC1B,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,UAAU,CAAC;IAC/E,2BAA2B;IAC3B,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,kBAAkB;AAClB,MAAM,WAAW,aAAa;IAC5B,4BAA4B;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;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;;;;;OAKG;IACI,aAAa,CAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,EAAE,cAAc,EAAE,EAC1B,WAAW,EAAE,WAAW,GACvB,cAAc,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAuE7C,mBAAmB;IACnB,OAAO,CAAC,qBAAqB;IAO7B,0BAA0B;YACX,gBAAgB;IAkH/B,wDAAwD;YACzC,QAAQ;CAkHxB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { AgentEvent, Message, ToolCall, ToolCallRecord } from '../types.ts';
|
|
2
|
+
import type { ToolRegistry } from '../tool/registry.ts';
|
|
3
|
+
import type { ToolContext } from '../tool/types.ts';
|
|
4
|
+
import type { SecurityGuard } from '../security/guard.ts';
|
|
5
|
+
import type { HookEvent, HookContext, HookResult } from '../hooks/types.ts';
|
|
6
|
+
import type { Middleware } from '../middleware/types.ts';
|
|
7
|
+
import type { HistoryManager } from './history-manager.ts';
|
|
8
|
+
/** 工具执行配置 */
|
|
9
|
+
export interface ToolExecutorConfig {
|
|
10
|
+
/** Tool Registry */
|
|
11
|
+
toolRegistry: ToolRegistry;
|
|
12
|
+
/** 安全守卫(可选) */
|
|
13
|
+
securityGuard?: SecurityGuard;
|
|
14
|
+
/** 单工具执行超时(毫秒) */
|
|
15
|
+
toolTimeout: number;
|
|
16
|
+
/** Hook 执行器 */
|
|
17
|
+
runHooks: (event: HookEvent, ctx: HookContext) => Promise<HookResult[]>;
|
|
18
|
+
/** 中间件工具阶段执行器 */
|
|
19
|
+
runMiddlewareToolPhase: (phase: 'onToolBefore' | 'onToolAfter', ctx: HookContext) => Promise<HookResult[]>;
|
|
20
|
+
/** 事件创建辅助 */
|
|
21
|
+
createEvent: (sessionId: string, event: Record<string, unknown>) => AgentEvent;
|
|
22
|
+
/** 历史管理器 */
|
|
23
|
+
historyManager: HistoryManager;
|
|
24
|
+
/** 中间件列表 */
|
|
25
|
+
getMiddleware: () => Middleware[] | undefined;
|
|
26
|
+
}
|
|
27
|
+
/** 工具执行结果 */
|
|
28
|
+
export interface ToolExecResult {
|
|
29
|
+
result: string;
|
|
30
|
+
isError: boolean;
|
|
31
|
+
actualArgs: Record<string, unknown>;
|
|
32
|
+
duration: number;
|
|
33
|
+
call: ToolCall;
|
|
34
|
+
}
|
|
35
|
+
/** LoopState 接口(与 Engine 交互的最小契约) */
|
|
36
|
+
export interface ToolLoopState {
|
|
37
|
+
sessionId: string;
|
|
38
|
+
messages: Message[];
|
|
39
|
+
toolContext: ToolContext;
|
|
40
|
+
internalAbort: AbortController;
|
|
41
|
+
iteration: number;
|
|
42
|
+
toolCallRecords: ToolCallRecord[];
|
|
43
|
+
consecutiveToolFailures: Map<string, number>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 工具执行管理器
|
|
47
|
+
*
|
|
48
|
+
* 职责:
|
|
49
|
+
* - 按并发属性分组执行 tool_calls
|
|
50
|
+
* - 串行/并行执行 + 超时保护
|
|
51
|
+
* - 熔断器(连续失败自动阻断)
|
|
52
|
+
* - 安全检查(execute_command)
|
|
53
|
+
* - Hook/Middleware 生命周期集成
|
|
54
|
+
*/
|
|
55
|
+
export declare class AgentToolExecutor {
|
|
56
|
+
private config;
|
|
57
|
+
/** 连续失败熔断阈值:同一工具连续失败超过此值后自动阻断(降低以加速失败重试终止) */
|
|
58
|
+
private static readonly CIRCUIT_BREAKER_THRESHOLD;
|
|
59
|
+
constructor(config: ToolExecutorConfig);
|
|
60
|
+
/** 执行一批 tool_calls(按并发属性分组) */
|
|
61
|
+
executeToolCalls(state: ToolLoopState, toolCalls: ToolCall[]): AsyncGenerator<AgentEvent>;
|
|
62
|
+
/** 按并发属性将 tool_calls 分组 */
|
|
63
|
+
private groupByConcurrency;
|
|
64
|
+
/** 并行执行一组工具(按顺序推送事件和结果) */
|
|
65
|
+
private executeToolGroupParallel;
|
|
66
|
+
/** 串行执行单个工具调用(含安全检查 + Hooks) */
|
|
67
|
+
private executeOneToolCall;
|
|
68
|
+
/** 带超时的工具执行 */
|
|
69
|
+
private runWithTimeout;
|
|
70
|
+
private emitUnavailableToolResult;
|
|
71
|
+
/** 检查工具是否被熔断 */
|
|
72
|
+
private isCircuitBroken;
|
|
73
|
+
/** 更新工具连续失败计数 */
|
|
74
|
+
private updateFailureCount;
|
|
75
|
+
/**
|
|
76
|
+
* 从截断的 JSON 中抢救 run_script 的参数。
|
|
77
|
+
* 当 LLM 生成过长的 code 导致 JSON 被截断时,尝试提取 language 和 code 字段并修复执行。
|
|
78
|
+
* 返回 null 表示抢救失败。
|
|
79
|
+
*/
|
|
80
|
+
private rescueRunScriptArgs;
|
|
81
|
+
/**
|
|
82
|
+
* 从截断的 JSON 中抢救 delegate_task 的参数。
|
|
83
|
+
* delegate_task 的 task 字段可能很长(包含数据、指令),导致 JSON 被截断。
|
|
84
|
+
* 抢救策略:提取 agent(短字段,不会被截断)和 task(可能不完整但仍可执行)。
|
|
85
|
+
* 返回 null 表示抢救失败。
|
|
86
|
+
*/
|
|
87
|
+
private rescueDelegateTaskArgs;
|
|
88
|
+
/**
|
|
89
|
+
* 从截断的 JSON 中抢救 write_file / append_file 的参数。
|
|
90
|
+
* 当 LLM 生成过长的 content 导致 JSON 被截断时,尝试提取 path 和部分内容并写入。
|
|
91
|
+
* 返回 null 表示抢救失败。
|
|
92
|
+
*/
|
|
93
|
+
private rescueWriteFileArgs;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=tool-executor.d.ts.map
|
|
@@ -0,0 +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,EAAkB,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,aAAa;AACb,MAAM,WAAW,kBAAkB;IACjC,oBAAoB;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,eAAe;IACf,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACxE,iBAAiB;IACjB,sBAAsB,EAAE,CAAC,KAAK,EAAE,cAAc,GAAG,aAAa,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3G,aAAa;IACb,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,UAAU,CAAC;IAC/E,YAAY;IACZ,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY;IACZ,aAAa,EAAE,MAAM,UAAU,EAAE,GAAG,SAAS,CAAC;CAC/C;AAQD,aAAa;AACb,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,qCAAqC;AACrC,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,eAAe,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,uBAAuB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9C;AAED;;;;;;;;;GASG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAqB;IAEnC,8CAA8C;IAC9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAK;gBAE1C,MAAM,EAAE,kBAAkB;IAItC,+BAA+B;IACxB,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC,UAAU,CAAC;IAmBhG,2BAA2B;IAC3B,OAAO,CAAC,kBAAkB;IA0B1B,2BAA2B;YACZ,wBAAwB;IAoEvC,gCAAgC;YACjB,kBAAkB;IAwQjC,eAAe;YACD,cAAc;YA0Db,yBAAyB;IA0BxC,gBAAgB;IAChB,OAAO,CAAC,eAAe;IAIvB,iBAAiB;IACjB,OAAO,CAAC,kBAAkB;IAQ1B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IA6C3B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAoD9B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;CAyC5B"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import type { LLMProvider } from '../llm/types.ts';
|
|
2
|
+
import type { ToolRegistry } from '../tool/registry.ts';
|
|
3
|
+
import type { SkillManager } from '../skill/manager.ts';
|
|
4
|
+
import type { SkillRouter } from '../skill/router.ts';
|
|
5
|
+
import type { ContextManager } from '../context/manager.ts';
|
|
6
|
+
import type { SecurityGuard } from '../security/guard.ts';
|
|
7
|
+
import type { SessionContext } from '../types.ts';
|
|
8
|
+
import type { Hook } from '../hooks/types.ts';
|
|
9
|
+
import type { Middleware } from '../middleware/types.ts';
|
|
10
|
+
/** 上下文卸载条目(工具结果摘要 + 原文引用,用于非破坏性压缩) */
|
|
11
|
+
export interface OffloadEntry {
|
|
12
|
+
/** 唯一引用 ID,格式:{toolName}_{timestamp}_{hash} */
|
|
13
|
+
nodeId: string;
|
|
14
|
+
/** 工具名称 */
|
|
15
|
+
toolName: string;
|
|
16
|
+
/** 摘要标签内容(注入到上下文中的轻量摘要) */
|
|
17
|
+
summary: string;
|
|
18
|
+
/** 原文存储路径 */
|
|
19
|
+
filePath: string;
|
|
20
|
+
/** 创建时间(毫秒时间戳) */
|
|
21
|
+
createdAt: number;
|
|
22
|
+
/** 原文字符数 */
|
|
23
|
+
charCount: number;
|
|
24
|
+
/** 所属会话 ID */
|
|
25
|
+
sessionId: string;
|
|
26
|
+
}
|
|
27
|
+
/** 工具结果存储接口(超大结果写入文件,按需读取) */
|
|
28
|
+
export interface ToolResultStore {
|
|
29
|
+
/** 写入工具结果,返回存储路径 */
|
|
30
|
+
write(callId: string, content: string): string;
|
|
31
|
+
/** 读取工具结果 */
|
|
32
|
+
read(callId: string): string | null;
|
|
33
|
+
/** 检查是否存在 */
|
|
34
|
+
has(callId: string): boolean;
|
|
35
|
+
/** 写入上下文卸载条目(content 为原文,entry.summary 为摘要标签),返回存储路径 */
|
|
36
|
+
writeOffload(entry: Omit<OffloadEntry, 'filePath'>, content: string): string;
|
|
37
|
+
/** 读取卸载条目的原文 */
|
|
38
|
+
readOffload(nodeId: string): string | null;
|
|
39
|
+
/** 列出指定会话的所有卸载条目 */
|
|
40
|
+
listOffloads(sessionId: string): OffloadEntry[];
|
|
41
|
+
}
|
|
42
|
+
/** LLM 重试策略配置 */
|
|
43
|
+
export interface RetryPolicy {
|
|
44
|
+
/** 最大重试次数,默认 3 */
|
|
45
|
+
maxRetries?: number;
|
|
46
|
+
/** 首次重试延迟(毫秒),默认 1000 */
|
|
47
|
+
initialDelay?: number;
|
|
48
|
+
/** 最大延迟(毫秒),默认 30000 */
|
|
49
|
+
maxDelay?: number;
|
|
50
|
+
/** 退避因子(每次延迟乘以此值),默认 2 */
|
|
51
|
+
backoffFactor?: number;
|
|
52
|
+
}
|
|
53
|
+
/** AgentEngine 构造参数 */
|
|
54
|
+
export interface AgentConfig {
|
|
55
|
+
/** 单次任务最大迭代轮次,默认 15 */
|
|
56
|
+
maxIterations?: number;
|
|
57
|
+
/** 消息历史上限(滑动窗口),默认 50 */
|
|
58
|
+
maxMessages?: number;
|
|
59
|
+
/** 单工具执行超时(毫秒),默认 30000 */
|
|
60
|
+
toolTimeout?: number;
|
|
61
|
+
/** LLM 推理超时(毫秒),默认 120000 */
|
|
62
|
+
llmTimeout?: number;
|
|
63
|
+
/** Agent 系统提示词基础模板 */
|
|
64
|
+
basePrompt?: string;
|
|
65
|
+
/** LLM Provider 实例 */
|
|
66
|
+
llmProvider: LLMProvider;
|
|
67
|
+
/** Tool Registry 实例 */
|
|
68
|
+
toolRegistry: ToolRegistry;
|
|
69
|
+
/** Skill Manager 实例(可选) */
|
|
70
|
+
skillManager?: SkillManager;
|
|
71
|
+
/** Skill Router 实例(可选) */
|
|
72
|
+
skillRouter?: SkillRouter;
|
|
73
|
+
/** Context Manager 实例 */
|
|
74
|
+
contextManager: ContextManager;
|
|
75
|
+
/** Security Guard 实例(可选) */
|
|
76
|
+
securityGuard?: SecurityGuard;
|
|
77
|
+
/** 默认工具列表(静态注入) */
|
|
78
|
+
defaultTools?: string[];
|
|
79
|
+
/** 上下文压缩配置 */
|
|
80
|
+
contextBudget?: {
|
|
81
|
+
/** 单条工具输出最大字符数,默认 8000 */
|
|
82
|
+
maxToolOutput?: number;
|
|
83
|
+
/** 历史消息数达到此阈值时触发压缩,默认 maxMessages * 0.8 */
|
|
84
|
+
compactThreshold?: number;
|
|
85
|
+
/** 上下文总 token 预算,超过此值触发智能压缩,默认 100000 */
|
|
86
|
+
maxContextTokens?: number;
|
|
87
|
+
};
|
|
88
|
+
/** 全局禁止的工具名列表(从 LLM 视野中移除) */
|
|
89
|
+
deniedTools?: string[];
|
|
90
|
+
/** 生命周期钩子列表 */
|
|
91
|
+
hooks?: Hook[];
|
|
92
|
+
/** 中间件管道(与 Hook 共存,提供更结构化的 before/after 生命周期) */
|
|
93
|
+
middleware?: Middleware[];
|
|
94
|
+
/** 工具发现模式:'full' 全量加载 schema,'summary' 渐进式摘要发现,默认 'full' */
|
|
95
|
+
toolDiscovery?: 'full' | 'summary';
|
|
96
|
+
/** 工具摘要模式下描述最大长度(字符数),默认 100 */
|
|
97
|
+
toolSummaryMaxDesc?: number;
|
|
98
|
+
/** LLM 调用重试策略(模型韧性) */
|
|
99
|
+
retryPolicy?: RetryPolicy;
|
|
100
|
+
/** 降级 LLM Provider(主 Provider 重试耗尽后切换) */
|
|
101
|
+
fallbackProvider?: LLMProvider;
|
|
102
|
+
/** 工具结果存储(超大结果写入文件,按需读取) */
|
|
103
|
+
toolResultStore?: ToolResultStore;
|
|
104
|
+
/** 数据获取类工具名列表(用于循环检测,默认 ['web_fetch', 'execute_command', 'write_file', 'append_file', 'run_script', 'read_file', 'read_tool_doc']) */
|
|
105
|
+
dataFetchTools?: string[];
|
|
106
|
+
/** 产出型工具名列表(有这些工具调用时不触发数据获取循环检测,默认 ['delegate_task', 'create_presentation', 'create_document', 'create_pdf', 'show_widget', 'save_artifact']) */
|
|
107
|
+
outputTools?: string[];
|
|
108
|
+
}
|
|
109
|
+
/** AgentEngine.run() 入参 */
|
|
110
|
+
export interface RunOptions {
|
|
111
|
+
/** 会话 ID(同一会话共享上下文) */
|
|
112
|
+
sessionId: string;
|
|
113
|
+
/** 用户输入消息 */
|
|
114
|
+
message: string;
|
|
115
|
+
/** 显式指定 Skill ID(跳过路由) */
|
|
116
|
+
skillId?: string;
|
|
117
|
+
/** 额外注入的工具名称列表(动态注入) */
|
|
118
|
+
extraTools?: string[];
|
|
119
|
+
/** 会话上下文(上层传入) */
|
|
120
|
+
context?: SessionContext;
|
|
121
|
+
/** 中断信号(上层取消时使用) */
|
|
122
|
+
abortSignal?: AbortSignal;
|
|
123
|
+
/** 本次执行覆盖的 system prompt 片段(追加到 basePrompt 之后) */
|
|
124
|
+
systemPromptOverride?: string;
|
|
125
|
+
/** 扩展参数 */
|
|
126
|
+
options?: Record<string, unknown>;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export type WorkflowRole = 'researcher' | 'implementer' | 'reviewer' | 'critic' | 'risk_checker' | 'final_approver' | 'bull_researcher' | 'bear_researcher';
|
|
2
|
+
export interface WorkflowStageTemplate {
|
|
3
|
+
id: string;
|
|
4
|
+
role: WorkflowRole;
|
|
5
|
+
title: string;
|
|
6
|
+
instruction: string;
|
|
7
|
+
requiredFor: 'complex' | 'high_risk';
|
|
8
|
+
}
|
|
9
|
+
export interface WorkflowTemplate {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
description: string;
|
|
13
|
+
stages: WorkflowStageTemplate[];
|
|
14
|
+
}
|
|
15
|
+
export interface WorkflowDecisionLog {
|
|
16
|
+
task: string;
|
|
17
|
+
agentName: string;
|
|
18
|
+
role?: WorkflowRole | string;
|
|
19
|
+
stage: string;
|
|
20
|
+
recommendation: string;
|
|
21
|
+
confidence: number;
|
|
22
|
+
findings: string[];
|
|
23
|
+
risks: string[];
|
|
24
|
+
next_actions: string[];
|
|
25
|
+
}
|
|
26
|
+
export interface StructuredAgentOutput {
|
|
27
|
+
role?: WorkflowRole | string;
|
|
28
|
+
summary?: string;
|
|
29
|
+
findings: string[];
|
|
30
|
+
risks: string[];
|
|
31
|
+
recommendation: string;
|
|
32
|
+
confidence: number;
|
|
33
|
+
next_actions: string[];
|
|
34
|
+
rawContent?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface WorkflowCheckpoint {
|
|
37
|
+
id: string;
|
|
38
|
+
stage: string;
|
|
39
|
+
agentName?: string;
|
|
40
|
+
status: 'started' | 'completed' | 'failed';
|
|
41
|
+
timestamp: number;
|
|
42
|
+
summary?: string;
|
|
43
|
+
/** 阶段恢复上下文(用于节点级续跑) */
|
|
44
|
+
context?: {
|
|
45
|
+
task: string;
|
|
46
|
+
priorOutputs: string[];
|
|
47
|
+
stageIndex: number;
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/** 辩论输出结构(Bull/Bear Debate) */
|
|
51
|
+
export interface DebateOutput {
|
|
52
|
+
topic: string;
|
|
53
|
+
bull_arguments: string[];
|
|
54
|
+
bear_arguments: string[];
|
|
55
|
+
synthesis: string;
|
|
56
|
+
unresolved_points: string[];
|
|
57
|
+
confidence: number;
|
|
58
|
+
}
|
|
59
|
+
export declare const DEFAULT_COMPLEX_WORKFLOW_TEMPLATE: WorkflowTemplate;
|
|
60
|
+
export declare function getWorkflowTemplate(id?: string): WorkflowTemplate | undefined;
|
|
61
|
+
export declare function getWorkflowRoleStage(role?: WorkflowRole | string): string;
|
|
62
|
+
export declare function formatWorkflowTemplateForPrompt(template?: WorkflowTemplate): string;
|
|
63
|
+
export declare function buildWorkflowDecisionMemory(log: WorkflowDecisionLog): string;
|
|
64
|
+
export declare function buildStructuredOutputInstruction(role?: WorkflowRole | string): string;
|
|
65
|
+
export declare function wrapTaskWithWorkflowInstructions(task: string, role?: WorkflowRole | string): string;
|
|
66
|
+
export declare function parseStructuredAgentOutput(content: string, fallbackRole?: WorkflowRole | string): StructuredAgentOutput;
|
|
67
|
+
export declare function formatStructuredAgentOutput(agentName: string, output: StructuredAgentOutput, iterations?: number, toolSummary?: string[]): string;
|
|
68
|
+
export declare function buildDebateInstructions(topic: string, context?: string): {
|
|
69
|
+
bull: string;
|
|
70
|
+
bear: string;
|
|
71
|
+
};
|
|
72
|
+
export declare function formatDebateOutput(debate: DebateOutput): string;
|
|
73
|
+
export declare function parseDebateOutput(bullOutput: StructuredAgentOutput, bearOutput: StructuredAgentOutput, topic: string): DebateOutput;
|
|
74
|
+
//# sourceMappingURL=workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/agent/workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { EnvInfo, EnvCollector as IEnvCollector } from './types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* 默认本地环境采集器
|
|
4
|
+
* 采集当前机器的 OS、CPU、内存、Shell 等信息
|
|
5
|
+
* 上层可替换为远程采集实现(如 SSH 采集)
|
|
6
|
+
*/
|
|
7
|
+
export declare class LocalEnvCollector implements IEnvCollector {
|
|
8
|
+
collect(): Promise<EnvInfo>;
|
|
9
|
+
format(info: EnvInfo): string;
|
|
10
|
+
private formatBytes;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=collector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/context/collector.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,IAAI,aAAa,EAAE,MAAM,YAAY,CAAC;AAEzE;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IAC/C,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAoBjC,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAmB7B,OAAO,CAAC,WAAW;CAMpB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Message } from '../types.ts';
|
|
2
|
+
import type { BuildContextOptions } from './types.ts';
|
|
3
|
+
/**
|
|
4
|
+
* 消息构建器(纯函数式,无状态)
|
|
5
|
+
*
|
|
6
|
+
* 仅负责将上层传入的 systemPrompt + history + userMessage 组装为 LLM 请求消息列表。
|
|
7
|
+
* 不关心 prompt 内容来源(环境、终端、Skill 等),不维护历史。
|
|
8
|
+
*/
|
|
9
|
+
export declare class ContextManager {
|
|
10
|
+
/**
|
|
11
|
+
* 构建完整的 LLM 请求消息列表
|
|
12
|
+
* 组装顺序:system prompt → extra prompt → history → user message
|
|
13
|
+
*/
|
|
14
|
+
buildMessages(options: BuildContextOptions): Message[];
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/context/manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;GAKG;AACH,qBAAa,cAAc;IAEzB;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,EAAE;CAoBvD"}
|