# Ollama Console Remover
使用Ollama（deepseek-coder:6.7b）智能去除JavaScript文件中的console语句的脚本工具。
## 功能特点
- 🤖 使用Ollama AI模型智能识别和移除console语句
- 🔒 保持代码结构和功能完整性
- 🚀 支持批量处理整个目录
- 📦 适用于已压缩的JS文件
- 🔄 提供本地备用方案（当Ollama不可用时）
- 📊 显示处理前后的文件大小对比
## 前置要求
### 1. 安装Ollama
```bash
# macOS
brew install ollama
# Linux (Ubuntu/Debian)
curl -fsSL https://ollama.com/install.sh | sh
# Windows
# 从 https://ollama.com/ 下载安装包
```
### 2. 启动Ollama服务
```bash
ollama serve
```
### 3. 下载deepseek-coder模型
```bash
ollama pull deepseek-coder:6.7b
```
### 4. 验证安装
```bash
curl http://localhost:11434/api/tags
```
## 使用方法
### 快速开始
1. **优化处理dist目录（推荐）**
```bash
node scripts/ollama/optimize-dist.js
```
这将自动处理`dist`目录中的所有JS文件，并输出到`dist-optimized`目录。

2. **测试Ollama连接**
```bash
node scripts/ollama/test-ollama.js
```
### 高级用法
1. **处理指定目录**
```bash
# 处理单个目录，输出到 新目录
node scripts/ollama/ollama-console-remover.js ./input-dir ./output-dir

# 使用本地备用方法（不使用Ollama）
node scripts/ollama/ollama-console-remover.js --local ./input-dir

# 预览模式（不实际修改文件）
node scripts/ollama/ollama-console-remover.js --dry-run ./input-dir

# 使用优化版本处理器（推荐）
node scripts/ollama/optimized-processor.js ./input-dir
```
2. **命令行参数**
```
Usage: node ollama-console-remover.js [options] <input-directory> [output-directory]
Arguments:
  input-directory    包含要处理的JS文件的目录
  output-directory   保存处理后文件的目录（默认：输入目录 + '-cleaned'）
Options:
  --local, -l         使用本地备用方法，不使用Ollama
  --dry-run, -d       预览模式 - 不保存文件，只显示会做什么
  --help, -h          显示帮助信息
```
## 工具说明

### 🚀 优化版本（推荐）

#### optimize-dist.js
**便捷脚本，专门用于处理项目的dist目录：**
- ✅ 自动检测dist目录
- 🚀 并行处理（4个Worker线程）
- 📋 智能缓存和增量处理
- 📊 详细的性能统计

#### optimized-processor.js
**核心优化处理器：**
- 🎯 Worker线程多文件并发处理
- 📋 智能缓存（基于文件哈希）
- ⏭️ 增量处理（只处理修改过的文件）
- 🤖 自动Ollama检测和本地备用

### 📋 基础版本

#### ollama-console-remover.js
**主要工具文件，包含核心功能：**
- `removeConsoleWithOllama()` - 使用Ollama API处理代码
- `checkOllamaHealth()` - 检查Ollama服务状态
- `processJsFiles()` - 递归处理目录中的所有JS文件

#### process-dist.js
**基础dist处理器：**
- 自动检测dist目录
- 显示预览信息
- 提供详细的文件大小对比

### 🧪 测试工具

#### test-ollama.js
**测试脚本，用于验证Ollama配置：**
- 测试Ollama连接
- 演示console语句移除效果
- 保存测试结果

#### performance-test.js
**性能对比测试：**
- 对比不同处理方法的性能
- 测试正则、状态机、Ollama三种方法
- 生成详细的性能报告

#### simple-parallel-test.js
**并行处理测试：**
- 验证Worker线程功能
- 测试并发处理效果
- 展示性能提升

#### demo-parallel.js
**并行处理演示：**
- 创建演示文件
- 展示实际并行处理效果
- 统计性能数据
## 示例
### 输入代码（已压缩）：
```javascript
function testFunction(){console.log("debug info");const data={name:"test",value:123};console.error("error occurred");return data;}console.warn("warning message");
```
### Ollama处理后：
```javascript
function testFunction(){const data={name:"test",value:123};return data;}
```
### 处理结果：
- 移除了所有console语句
- 保持了代码功能完整性
- 减少了文件大小
## 注意事项
1. **Ollama服务状态**
   - 确保Ollama服务在运行（`ollama serve`）
   - 检查模型是否已下载（`ollama list`）
2. **文件备份**
   - 建议在处理前备份原始文件
   - 脚本不会修改原始文件，只会创建新的清洁版本
3. **性能考虑**
   - Ollama处理每个文件需要几秒钟时间
   - 对于大量文件，处理可能需要较长时间
   - 可以使用`--dry-run`预览处理范围
4. **备用方案**
   - 当Ollama不可用时，会自动切换到本地备用方法
   - 本地方法使用正则表达式，可能不如AI精确
   - 使用`--local`参数可强制使用本地方法
## 故障排除
### Ollama连接问题
```bash
# 检查Ollama是否运行
curl http://localhost:11434/api/tags
# 重启Ollama服务
ollama serve
# 检查模型是否已下载
ollama list
```
### 模型相关问题
```bash
# 重新下载模型
ollama pull deepseek-coder:6.7b
# 删除并重新下载
ollama rm deepseek-coder:6.7b
ollama pull deepseek-coder:6.7b
```
## 性能优化建议
1. **批量处理**：使用脚本处理整个目录而不是单个文件
2. **并行处理**：可以考虑修改脚本支持并发处理多个文件
3. **缓存结果**：对于重复文件可以添加缓存机制
4. **增量处理**：只处理修改过的文件
## 许可证
## 🚀 性能优化版本

### 优化功能
- **🎯 并行处理**：使用Worker线程多文件并发处理
- **📋 智能缓存**：避免重复处理相同文件
- **⏭️  增量处理**：只处理修改过的文件
- **📊 性能统计**：详细的处理时间和大小对比

### 使用优化版本

1. **优化dist目录**
```bash
node scripts/ollama/optimize-dist.js
```

2. **优化任意目录**
```bash
node scripts/ollama/optimized-processor.js ./dist
```

3. **性能对比测试**
```bash
node scripts/ollama/performance-test.js
```

4. **并行处理测试**
```bash
node scripts/ollama/simple-parallel-test.js
```

### 优化版本选项
```bash
# 预览模式
node scripts/ollama/optimize-dist.js --dry-run

# 使用本地方法（更快但不如AI准确）
node scripts/ollama/optimize-dist.js --local

# 单线程处理
node scripts/ollama/optimize-dist.js --single

# 清除缓存重新处理
node scripts/ollama/optimize-dist.js --clear-cache

# 并行处理演示
node scripts/ollama/demo-parallel.js
```

### 性能对比

| 方法 | 速度 | 准确性 | 适用场景 |
|------|------|--------|----------|
| Regex | ⚡ 超快 | ⚠️ 可能误判 | 简单项目 |
| State Machine | 🚀 快 | ✅ 较准确 | 大多数项目 |
| Ollama AI | 🐢 慢 | 🎯 最准确 | 生产环境 |
| 优化并行 | 🚀🚀 超快 | 🎯 最准确 | 大型项目 |

### 缓存机制
- 缓存位置：`./scripts/ollama/.cache/`
- 基于文件内容哈希
- 自动清理过期缓存
- 支持手动清除

### 并行处理特性
- **🎯 Worker线程**：使用Node.js Worker Threads实现多文件并发
- **⚡ 4个并发Worker**：最多同时处理4个文件
- **🔄 自动激活**：当文件数 > 3时自动启用并行处理
- **🛡️ 错误恢复**：Worker失败时自动回退到单线程
- **📊 性能提升**：特别是使用Ollama AI时效果显著

## 性能优化建议

1. **批量处理**：使用脚本处理整个目录而不是单个文件
2. **并行处理**：可以考虑修改脚本支持并发处理多个文件
3. **缓存结果**：对于重复文件可以添加缓存机制
4. **增量处理**：只处理修改过的文件

## 故障排除

## 📚 更多文档

- **⚡ 快速开始指南**: [QUICK-START.md](./ollama/QUICK-START.md)
- **🧪 测试工具**: 查看 `scripts/ollama/` 目录下的测试脚本
- **📖 性能报告**: 运行测试后生成 `performance-report.json`

## 📁 目录结构

```
scripts/
├── README-OLLAMA.md              # 📖 主文档
└── ollama/                       # 🤖 Ollama工具目录
    ├── optimize-dist.js            # 🚀 优化dist处理器
    ├── optimized-processor.js      # ⚙️ 核心优化引擎
    ├── ollama-console-remover.js   # 🤖 基础Ollama处理器
    ├── process-dist.js             # 📋 基础dist处理器
    ├── test-ollama.js             # 🧪 Ollama连接测试
    ├── performance-test.js         # 📊 性能对比测试
    ├── simple-parallel-test.js     # 🎯 并行处理测试
    ├── demo-parallel.js           # 🚀 并行处理演示
    ├── QUICK-START.md            # ⚡ 快速开始指南
    └── .cache/                  # 📋 缓存目录（自动创建）
```

MIT License