这是一个基于抽象语法树(AST)和大型语言模型(LLM)的JavaScript/TypeScript代码变量重命名工具,旨在提高代码的可读性和可维护性。
- 使用AST(抽象语法树)分析JavaScript/TypeScript代码
- 自动识别变量、函数和类名
- 使用大语言模型(LLM)为短变量名和意义不明确的函数名提供更有语义的命名建议
- 支持本地模型(使用node-llama-cpp),无需依赖云API
- 支持多种语言模型类型,可扩展
- 保持语法正确性和作用域完整性
- 智能识别有意义的变量名,避免不必要的重命名
- 实时进度显示
npm install ast-ai-renameimport { optimizeCode, ModelType } from 'ast-ai-rename';
// 待优化的代码
const code = `
function f(x, y) {
let a = x + y;
return a * 2;
}
`;
// 配置选项
const options = {
modelType: ModelType.LOCAL,
modelConfig: {
modelPath: '/path/to/your/model.gguf', // 本地模型路径
useGPU: true // 是否使用GPU加速
},
contextWindowSize: 3000,
verbose: true
};
// 优化代码
const optimizedCode = await optimizeCode(code, options);
console.log(optimizedCode);
// 输出可能是:
// function calculateSum(firstNumber, secondNumber) {
// let sum = firstNumber + secondNumber;
// return sum * 2;
// }optimizeCode函数接受以下选项:
modelType: 模型类型,可选ModelType.LOCAL或ModelType.OPENAImodelConfig: 模型配置- 对于本地模型:
{ modelPath: string, useGPU?: boolean }
- 对于本地模型:
contextWindowSize: 上下文窗口大小,决定了分析每个变量时考虑的代码范围verbose: 是否输出详细日志onProgress: 进度回调函数,接收一个0-1之间的数值表示进度
该工具也提供命令行接口:
npx ast-rename optimize path/to/file.js --model=local --model-path=/path/to/model.ggufsrc/: 源代码目录ast/: AST相关处理代码visitAllIdentifiers.ts: 遍历AST并应用重命名的核心逻辑
models/: 语言模型相关代码modelFactory.ts: 模型工厂,负责创建不同类型的模型实例localModel.ts: 本地LLM模型实现
utils/: 工具函数和类型定义fileProcessor.ts: 文件处理逻辑preprocessor.ts: 代码预处理types.ts: 类型定义logger.ts: 日志工具
index.ts: 主入口文件,导出公共APIexample.ts: 使用示例
- Node.js >= 20.0.0
- 核心依赖:
- @babel/core: 用于AST解析和转换
- node-llama-cpp: 用于本地LLM推理
对于本地模型,推荐使用以下模型:
- Phi-3-mini-4k-instruct: 适合代码分析的轻量级模型
- CodeLlama: 专门针对代码优化的模型
- AST解析使用Babel,支持TypeScript和React JSX
- 本地模型使用node-llama-cpp调用,确保已安装该库并正确配置
- 智能检测已经语义明确的变量名,避免不必要的重命名
MIT