/** * @zhin.js/ai - Context Manager * 上下文管理器,负责消息记录、历史读取和智能总结 * * 特性: * - 所有平台消息自动落表 * - 按场景(scene_id)读取历史消息 * - 智能总结,保持上下文简洁 * - 支持多平台、多场景 */ import type { ChatMessage, AIProvider } from '../types.js'; /** * 聊天消息记录模型定义 */ export declare const CHAT_MESSAGE_MODEL: { message_id: { type: "text"; default: string; }; platform: { type: "text"; nullable: boolean; }; endpoint_id: { type: "text"; nullable: boolean; }; scene_id: { type: "text"; nullable: boolean; }; scene_type: { type: "text"; nullable: boolean; }; scene_name: { type: "text"; default: string; }; sender_id: { type: "text"; nullable: boolean; }; sender_name: { type: "text"; default: string; }; sender_role: { type: "text"; default: string; }; direction: { type: "text"; nullable: boolean; }; message: { type: "text"; nullable: boolean; }; time: { type: "integer"; nullable: boolean; }; }; /** * 上下文总结模型定义 */ export declare const CONTEXT_SUMMARY_MODEL: { scene_id: { type: "text"; nullable: boolean; }; summary: { type: "text"; nullable: boolean; }; message_count: { type: "integer"; default: number; }; start_time: { type: "integer"; default: number; }; end_time: { type: "integer"; default: number; }; created_at: { type: "integer"; default: number; }; }; /** * 消息记录 */ export type ChatMessageDirection = 'inbound' | 'outbound'; export interface MessageRecord { id?: number; message_id?: string; platform: string; endpoint_id: string; scene_id: string; scene_type: 'group' | 'private' | 'channel' | string; scene_name: string; sender_id: string; sender_name: string; sender_role: string; direction: ChatMessageDirection; message: string; time: number; } /** * 上下文总结记录 */ export interface SummaryRecord { id?: number; scene_id: string; summary: string; message_count: number; start_time: number; end_time: number; created_at: number; } /** * 上下文配置 */ export interface ContextConfig { /** 是否启用上下文管理(默认 true) */ enabled?: boolean; /** 读取的最近消息数量(默认 100) */ maxRecentMessages?: number; /** 触发总结的消息数量阈值(默认 50) */ summaryThreshold?: number; /** 总结后保留的消息数量(默认 10) */ keepAfterSummary?: number; /** 上下文最大 token 估算(默认 4000) */ maxContextTokens?: number; /** 总结提示词 */ summaryPrompt?: string; } /** * 场景上下文 */ export interface SceneContext { sceneId: string; sceneType: string; sceneName: string; platform: string; /** 历史总结 */ summaries: string[]; /** 最近消息 */ recentMessages: MessageRecord[]; /** 格式化的聊天消息 */ chatMessages: ChatMessage[]; } /** * 上下文管理器 * 负责消息记录、历史读取和智能总结 */ export declare class ContextManager { private messageModel; private summaryModel; private config; private aiProvider?; constructor(messageModel: any, summaryModel: any, config?: ContextConfig); /** * 设置 AI 提供商(用于自动总结) */ setAIProvider(provider: AIProvider): void; /** * 记录消息 */ recordMessage(record: Omit): Promise; /** * 获取场景的最近消息 */ getRecentMessages(sceneId: string, limit?: number): Promise; /** * 获取场景的总结历史 */ getSummaries(sceneId: string): Promise; /** * 构建场景上下文 * 用于 AI 对话,包含历史总结和最近消息 */ buildContext(sceneId: string, platform: string): Promise; /** * 格式化为 ChatMessage 格式 */ formatToChatMessages(summaries: string[], messages: MessageRecord[]): ChatMessage[]; /** * 估算 token 数量(粗略估算) */ estimateTokens(text: string): number; /** * 检查是否需要总结 */ shouldSummarize(sceneId: string): Promise; /** * 执行总结 */ summarize(sceneId: string): Promise; /** * 保存总结 */ private saveSummary; /** * 自动检查并总结(在每次对话后调用) */ autoSummarizeIfNeeded(sceneId: string): Promise; /** * 获取场景统计信息 */ getSceneStats(sceneId: string): Promise<{ messageCount: number; summaryCount: number; firstMessageTime?: number; lastMessageTime?: number; }>; /** * 清理过期消息 */ cleanupOldMessages(maxAge?: number): Promise; /** * Default summary prompt (English) */ private getDefaultSummaryPrompt; } /** * 创建上下文管理器 */ export declare function createContextManager(messageModel: any, summaryModel: any, config?: ContextConfig): ContextManager; //# sourceMappingURL=context-manager.d.ts.map