UNPKG

flux-agent

Version:

FluxAgent - 一个可灵活插拔的AI Agent系统框架,基于TypeScript开发,支持流式执行、事件系统、插件系统、知识库管理等功能 (Protected Release) (Protected Release) (Protected Release) (Protected Release) (Protected Release) (Protected Release) (Protected Release) (Protected Release) (Protected Release) (

130 lines (129 loc) 4.5 kB
import { Context } from './Context'; import { EventHub } from './EventHub'; import { Tool, LLMConfig, LLMResponse, Message } from './LLM'; import { PhasePromptFactory, PhaseType } from './Phases'; import { PluginFunction } from './Plugin'; import { AgentState } from './State'; import { ToolManager } from './ToolManager'; import { AgentStreamExecutionEngine } from './execution/AgentStreamExecutionEngine'; import { BaseTool } from '../core/tools/BaseTool'; import { RequestResponse } from './RequestHub'; import { EmbedConfig } from './Recognizer'; import { TokenUsage } from '../types/agent'; export declare const AgentLogger: { logs: string[]; listeners: Set<(message: string) => void>; log(message: string, data?: any): void; getLogs(): string[]; clear(): void; addListener(listener: (message: string) => void): void; removeListener(listener: (message: string) => void): void; }; export interface AgentConfig { llm: LLMConfig; toolcallLLM?: LLMConfig; promptFactory?: PhasePromptFactory; systemPrompt: string; tools?: BaseTool[]; embedConfig?: EmbedConfig; toolcallRecognizePrompt?: string; } export interface KnowledgeSystem { search(query: string): Promise<string>; } export interface AgentStreamCallbacks { onPhaseChange?: (fromPhase: PhaseType | undefined, toPhase: PhaseType) => void; onToolCall?: (toolName: string, args: any, phase: PhaseType) => void; onToolResult?: (toolName: string, result: any, phase: PhaseType) => void; onLLMToken?: (token: string, phase: PhaseType, id?: string) => void; onLLMPartialResponse?: (partial: string, phase: PhaseType, id?: string) => void; onError?: (error: Error, phase: PhaseType) => void; onComplete?: (finalResponse: LLMResponse, streamId?: string) => void; } export interface AgentSnapshot { state: AgentState; currentPhase: PhaseType; contextRecords: any[]; memoryMessages: any[]; phaseState?: any; tokenUsage: TokenUsage; userInputStack: string[]; timestamp: number; version: string; } export declare class Agent { private llm; private toolcallLLM; private recognizer?; private memory; context: Context; private phases; private state; private pluginManager; toolManager: ToolManager; streamExecutionEngine: AgentStreamExecutionEngine; eventHub: EventHub; private waitingForUserInput; private requestHub; private knowledgeSystem; toolcallRecognizePrompt: string; private streamCallbacks?; private currentPhase?; private sessionId?; private currentLLMStreamId?; private tokenUsage; constructor(config: AgentConfig); changeAgentState(state: AgentState): void; /** * 构建最终的系统提示词 * 将默认提示词与用户自定义提示词合并 */ private buildSystemPrompt; plugin(name: string, pluginFunction: PluginFunction): void; /** * 根据当前阶段获取应该传给 LLM 的工具集 * 所有阶段都使用新的工具接口 */ getToolsForPhase(phase: PhaseType): Tool[]; runStream(options: { input: string; callbacks: AgentStreamCallbacks; sessionId?: string; userContext?: string; images?: Array<{ url: string; expiresAt: number; }>; }): Promise<void>; private emitStreamToken; private emitStreamPartialResponse; private emitStreamPhaseChange; /** * 增强用户输入:自动附加知识库内容 */ private enhanceUserInputWithKnowledge; /** * 发出状态变更事件 - 公共方法供执行引擎使用 */ emitStateChangeEvent(state: AgentState): void; reset(): void; setWaitingForUserInput(waiting: boolean): void; genSnapshot(): AgentSnapshot; applySnapshot(snapshot: AgentSnapshot): void; sendRequest(requestId: string, payload: any): Promise<{ type: 'accept' | 'reject' | 'skip' | 'error'; payload?: any; }>; onRequest(callback: (requestId: string, payload?: any) => void): void; response(requestId: string, res: RequestResponse): void; stopToolCall(toolcallId: string): void; stop(): void; callTool(toolcallId: string, toolName: string, args: any): Promise<any>; getMemory(): Message[]; applyKnowledgeSystem(knowledgeSystem: KnowledgeSystem): void; /** * 累加 token 使用量 */ private accumulateTokenUsage; private onTokenUsage; }