UNPKG

synthia-ai-optimizer

Version:

Synthia Engine AI Optimizer - 集成LLM的智能构建优化建议

472 lines (465 loc) 11.6 kB
/** * AI优化器类型定义 */ interface AIOptimizerConfig { /** OpenAI API配置 */ openai: { apiKey: string; baseURL?: string; model?: string; maxTokens?: number; temperature?: number; }; /** 分析配置 */ analysis: { /** 是否启用代码分析 */ enableCodeAnalysis: boolean; /** 是否启用依赖分析 */ enableDependencyAnalysis: boolean; /** 是否启用性能分析 */ enablePerformanceAnalysis: boolean; /** 分析深度 */ depth: 'shallow' | 'medium' | 'deep'; }; /** 优化配置 */ optimization: { /** 是否自动应用优化 */ autoApply: boolean; /** 优化级别 */ level: 'conservative' | 'moderate' | 'aggressive'; /** 是否生成备份 */ createBackup: boolean; /** 最大优化建议数量 */ maxSuggestions: number; }; /** 缓存配置 */ cache: { /** 是否启用缓存 */ enabled: boolean; /** 缓存目录 */ directory: string; /** 缓存过期时间 */ ttl: number; }; } interface CodeAnalysisResult { /** 文件路径 */ filePath: string; /** 文件大小 */ fileSize: number; /** 代码行数 */ linesOfCode: number; /** 复杂度 */ complexity: number; /** 依赖关系 */ dependencies: string[]; /** 问题列表 */ issues: CodeIssue[]; /** 优化建议 */ suggestions: OptimizationSuggestion[]; } interface CodeIssue { /** 问题类型 */ type: 'performance' | 'maintainability' | 'security' | 'best-practice'; /** 严重程度 */ severity: 'low' | 'medium' | 'high' | 'critical'; /** 问题描述 */ message: string; /** 行号 */ line?: number; /** 列号 */ column?: number; /** 修复建议 */ fix?: string; } interface OptimizationSuggestion { /** 建议ID */ id: string; /** 建议标题 */ title: string; /** 建议描述 */ description: string; /** 影响范围 */ impact: 'low' | 'medium' | 'high'; /** 实施难度 */ difficulty: 'easy' | 'medium' | 'hard'; /** 预计节省 */ estimatedSavings: { bundleSize?: number; buildTime?: number; runtimePerformance?: number; }; /** 实施步骤 */ steps: string[]; /** 相关文件 */ affectedFiles: string[]; /** 风险等级 */ risk: 'low' | 'medium' | 'high'; /** 是否自动应用 */ autoApplicable: boolean; } interface ProjectAnalysisResult { /** 项目路径 */ projectPath: string; /** 分析时间 */ timestamp: number; /** 项目统计 */ stats: { totalFiles: number; totalLines: number; totalSize: number; dependencies: number; buildTime: number; bundleSize: number; }; /** 代码分析结果 */ codeAnalysis: CodeAnalysisResult[]; /** 优化建议 */ suggestions: OptimizationSuggestion[]; /** 健康评分 */ healthScore: number; /** 优先级建议 */ prioritySuggestions: OptimizationSuggestion[]; } interface LLMResponse { /** 响应内容 */ content: string; /** 使用的模型 */ model: string; /** 消耗的token数量 */ tokens: { prompt: number; completion: number; total: number; }; /** 响应时间 */ responseTime: number; /** 是否成功 */ success: boolean; /** 错误信息 */ error?: string; } interface OptimizationContext { /** 项目类型 */ projectType: 'react' | 'vue' | 'angular' | 'vanilla' | 'node'; /** 构建工具 */ buildTool: 'vite' | 'webpack' | 'rollup' | 'esbuild'; /** 包管理器 */ packageManager: 'npm' | 'yarn' | 'pnpm'; /** 目标环境 */ target: 'browser' | 'node' | 'universal'; /** 性能要求 */ performance: { bundleSize: number; buildTime: number; runtimePerformance: number; }; /** 项目约束 */ constraints: { browserSupport: string[]; nodeVersion: string; memoryLimit: number; timeLimit: number; }; } interface AIPrompt { /** 提示类型 */ type: 'analysis' | 'optimization' | 'explanation' | 'code-review'; /** 提示内容 */ content: string; /** 上下文信息 */ context: OptimizationContext; /** 输入数据 */ input: { code?: string; config?: any; stats?: any; issues?: CodeIssue[]; }; /** 期望输出格式 */ expectedFormat: 'json' | 'markdown' | 'text'; } interface OptimizationResult { /** 优化ID */ id: string; /** 优化类型 */ type: 'code' | 'config' | 'dependency' | 'build'; /** 优化前状态 */ before: { value: any; metrics: Record<string, number>; }; /** 优化后状态 */ after: { value: any; metrics: Record<string, number>; }; /** 改进程度 */ improvement: { percentage: number; absolute: number; unit: string; }; /** 实施状态 */ status: 'pending' | 'applied' | 'failed' | 'reverted'; /** 实施时间 */ appliedAt?: number; /** 错误信息 */ error?: string; } declare class LLMClient { private client; private config; private spinner; constructor(config: AIOptimizerConfig); /** * 发送提示到LLM */ sendPrompt(prompt: AIPrompt): Promise<LLMResponse>; /** * 分析代码 */ analyzeCode(code: string, filePath: string, context: any): Promise<LLMResponse>; /** * 生成优化建议 */ generateOptimizationSuggestions(analysisResult: any, context: any): Promise<LLMResponse>; /** * 解释优化建议 */ explainOptimization(suggestion: any, context: any): Promise<LLMResponse>; /** * 代码审查 */ reviewCode(code: string, filePath: string, context: any): Promise<LLMResponse>; /** * 构建消息 */ private buildMessages; /** * 获取系统消息 */ private getSystemMessage; /** * 构建用户消息 */ private buildUserMessage; /** * 构建代码分析提示 */ private buildCodeAnalysisPrompt; /** * 构建优化提示 */ private buildOptimizationPrompt; /** * 构建解释提示 */ private buildExplanationPrompt; /** * 构建代码审查提示 */ private buildCodeReviewPrompt; /** * 获取文件类型 */ private getFileType; } declare class CodeAnalyzer { private config; private llmClient; private spinner; constructor(config: AIOptimizerConfig); /** * 分析项目代码 */ analyzeProject(projectPath: string, context: OptimizationContext): Promise<CodeAnalysisResult[]>; /** * 分析单个文件 */ analyzeFile(filePath: string, context: OptimizationContext): Promise<CodeAnalysisResult>; /** * 获取项目文件 */ private getProjectFiles; /** * 执行基础分析 */ private performBasicAnalysis; /** * 计算代码复杂度 */ private calculateComplexity; /** * 提取依赖关系 */ private extractDependencies; /** * 检测基础问题 */ private detectBasicIssues; /** * 生成基础建议 */ private generateBasicSuggestions; /** * 提取函数内容 */ private extractFunctionContent; /** * 解析AI响应 */ private parseAIResponse; } declare class SuggestionGenerator { private config; private llmClient; private spinner; constructor(config: AIOptimizerConfig); /** * 生成优化建议 */ generateSuggestions(analysisResult: ProjectAnalysisResult, context: OptimizationContext): Promise<OptimizationSuggestion[]>; /** * 生成基础建议 */ private generateBasicSuggestions; /** * 生成AI建议 */ private generateAISuggestions; /** * 解析AI建议 */ private parseAISuggestions; /** * 去重建议 */ private deduplicateSuggestions; /** * 优先级排序 */ private prioritizeSuggestions; /** * 计算优先级分数 */ private calculatePriorityScore; /** * 分析代码质量 */ private analyzeCodeQuality; /** * 获取受影响的文件 */ private getAffectedFiles; } declare class OptimizationApplier { private config; private spinner; private appliedOptimizations; constructor(config: AIOptimizerConfig); /** * 应用优化建议 */ applyOptimization(suggestion: OptimizationSuggestion, projectPath: string): Promise<OptimizationResult>; /** * 批量应用优化建议 */ applyOptimizations(suggestions: OptimizationSuggestion[], projectPath: string): Promise<OptimizationResult[]>; /** * 执行优化 */ private executeOptimization; /** * 应用包大小优化 */ private applyBundleSizeOptimization; /** * 应用构建时间优化 */ private applyBuildTimeOptimization; /** * 应用依赖优化 */ private applyDependencyOptimization; /** * 应用代码质量优化 */ private applyCodeQualityOptimization; /** * 应用通用优化 */ private applyGenericOptimization; /** * 优化包配置 */ private optimizeBundleConfig; /** * 优化构建时间配置 */ private optimizeBuildTimeConfig; /** * 优化代码质量 */ private optimizeCodeQuality; /** * 捕获状态 */ private captureState; /** * 计算改进程度 */ private calculateImprovement; /** * 获取优化类型 */ private getOptimizationType; /** * 创建备份 */ private createBackup; /** * 回滚优化 */ private rollbackOptimization; } /** * AI优化器主类 * 集成LLM的智能构建优化建议系统 */ declare class AIOptimizer { private readonly config; private codeAnalyzer; private suggestionGenerator; private optimizationApplier; constructor(config: AIOptimizerConfig); /** * 分析项目并生成优化建议 */ analyzeProject(projectPath: string, context: OptimizationContext): Promise<ProjectAnalysisResult>; /** * 应用优化建议 */ applyOptimizations(suggestions: OptimizationSuggestion[], projectPath: string): Promise<OptimizationResult[]>; /** * 生成优化建议 */ generateSuggestions(analysisResult: ProjectAnalysisResult, context: OptimizationContext): Promise<OptimizationSuggestion[]>; /** * 计算项目统计信息 */ private calculateProjectStats; /** * 计算健康评分 */ private calculateHealthScore; } /** * 创建AI优化器实例 */ declare function createAIOptimizer(config: AIOptimizerConfig): AIOptimizer; /** * 默认配置 */ declare const DEFAULT_AI_OPTIMIZER_CONFIG: AIOptimizerConfig; export { AIOptimizer, type AIOptimizerConfig, type AIPrompt, type CodeAnalysisResult, CodeAnalyzer, type CodeIssue, DEFAULT_AI_OPTIMIZER_CONFIG, LLMClient, type LLMResponse, OptimizationApplier, type OptimizationContext, type OptimizationResult, type OptimizationSuggestion, type ProjectAnalysisResult, SuggestionGenerator, createAIOptimizer };