# 缓存迁移总结

## 问题发现

在检查缓存时发现了一个孤立的缓存目录：

**位置：** `/Users/semsevens/Desktop/workspace/daily/1113/how_1121_v2/script/data_processing/cache/`

**大小：** 105M（包含 26,931 个文件）

### 原因分析

这个孤立缓存目录的产生原因：

1. **相对路径问题**：早期版本的 `lib/text_embedding.py` 和 `lib/semantic_similarity.py` 使用相对路径 `cache/text_embedding/` 作为默认缓存目录
2. **工作目录依赖**：当从 `script/data_processing/` 目录运行脚本时，缓存会在当前工作目录下创建
3. **结果**：在 `script/data_processing/cache/` 下生成了大量缓存文件

## 已执行的迁移操作

### 1. 迁移孤立缓存到统一位置

```bash
# 合并 text_embedding 缓存（26,931 个文件）
rsync -av script/data_processing/cache/text_embedding/ ~/cache/text_embedding/

# 合并 semantic_similarity 缓存
cp -R script/data_processing/cache/semantic_similarity/* ~/cache/semantic_similarity/

# 删除孤立缓存目录
rm -rf script/data_processing/cache/
```

### 2. 验证无其他孤立缓存

```bash
find /Users/semsevens/Desktop/workspace/daily/1113/how_1121_v2 -type d -name "cache"
# 结果：无输出，确认项目中已无其他孤立缓存目录
```

## 最终缓存状态

### 统一缓存位置：`~/cache`

```
~/cache/
├── text_embedding/          # 105M (26,981 files) - 向量相似度缓存
├── semantic_similarity/     # 122M (31,307 files) - 语义相似度缓存
├── data/                    # 1.5M - 数据缓存
│   ├── search/              # 搜索结果缓存
│   ├── detail/              # 详情数据缓存
│   └── tools_list/          # 工具列表缓存
└── xhs_blogger/            # 516K - 博主数据缓存
```

### 总缓存大小

- **text_embedding**: 105M
- **semantic_similarity**: 122M
- **data**: 1.5M
- **xhs_blogger**: 516K
- **总计**: ~229M

## 预防措施

### 1. 环境变量配置

已在 `~/.zshrc` 中设置：

```bash
export CACHE_ROOT=~/cache
```

这确保了所有新的缓存都会统一存储在 `~/cache/` 目录下。

### 2. 代码改进

- `lib/config.py` 提供统一的缓存路径管理
- 所有模块使用 `get_cache_dir()` 获取缓存路径
- 优先级：环境变量 > 代码设置 > 默认值

### 3. 运行脚本的最佳实践

**推荐做法**：
```bash
# 从项目根目录运行
cd /Users/semsevens/Desktop/workspace/daily/1113/how_1121_v2
python script/data_processing/your_script.py
```

**避免做法**：
```bash
# 不要从 script/data_processing/ 目录运行
cd script/data_processing
python your_script.py  # 可能在当前目录创建缓存
```

## 验证步骤

如果想验证缓存配置是否正确：

```python
from lib.config import get_cache_root, get_cache_dir

# 检查缓存根目录
print(f"缓存根目录: {get_cache_root()}")
# 应输出: /Users/semsevens/cache

# 检查具体模块的缓存目录
print(f"text_embedding 缓存: {get_cache_dir('text_embedding')}")
# 应输出: /Users/semsevens/cache/text_embedding

print(f"semantic_similarity 缓存: {get_cache_dir('semantic_similarity')}")
# 应输出: /Users/semsevens/cache/semantic_similarity
```

## 清理建议

定期检查缓存大小：

```bash
# 查看缓存大小
du -sh ~/cache/*/

# 如果需要清理旧缓存
rm -rf ~/cache/text_embedding/*
rm -rf ~/cache/semantic_similarity/*
```

## 总结

✅ **已完成：**
- 发现并迁移了 105M 的孤立缓存
- 统一所有缓存到 `~/cache/`
- 验证项目中无其他孤立缓存
- 确认环境变量配置正确

✅ **已预防：**
- 通过环境变量避免相对路径问题
- 通过 `lib/config.py` 统一管理缓存路径
- 文档说明最佳实践

🎯 **结果：**
所有缓存现在都统一存储在 `~/cache/` 目录下，不会再出现孤立缓存的问题。
