synthia-ai-system
Version:
Synthia Engine AI - 集成LLM的智能构建优化建议
472 lines (465 loc) • 11.6 kB
text/typescript
/**
* 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 };