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
TypeScript
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;
}