# Creeper 批量单文件保存 - 集成测试文档
## 测试目的
验证 Creeper 批量保存功能重构后的正确性,确保:
1. 所有爬取内容保存到单个文件
2. 文件名基于查询关键词生成
3. 文件格式包含必要的元数据
4. 特殊字符处理正确
5. 向后兼容性问题已解决
## 手动测试步骤
### 1. 基本功能测试
```bash
# 启动 MCP Inspector
npm run test:inspector
# 在 Inspector 中执行
{
"tool": "web_search",
"input": {
"query": "TypeScript 基础",
"max_results": 3,
"save_to_file": true
}
}
```
**预期结果**:
- 生成文件:`temp/YYYY-MM-DD/TypeScript-基础.md`
- 文件包含所有 3 个页面的内容
- 文件头部包含查询信息和元数据
### 2. 文件名处理测试
```json
{
"tool": "web_search",
"input": {
"query": "Vue/React<>比较",
"max_results": 2,
"save_to_file": true
}
}
```
**预期结果**:
- 文件名:`Vue-React比较.md`(特殊字符被处理)
- 文件内容保留原始查询字符串
### 3. 大量内容测试
```json
{
"tool": "web_search",
"input": {
"query": "JavaScript",
"max_results": 10,
"save_to_file": true
}
}
```
**预期结果**:
- 所有 10 个页面内容保存到单个文件
- 文件大小合理(考虑内存使用)
### 4. 不保存文件测试
```json
{
"tool": "web_search",
"input": {
"query": "测试查询",
"max_results": 2,
"save_to_file": false
}
}
```
**预期结果**:
- 返回搜索结果
- 不创建任何文件
## 验证点
### 文件结构验证
1. **文件命名**:
- [ ] 使用查询关键词作为文件名
- [ ] 特殊字符正确处理(<>:"/\|?* → -)
- [ ] 长度限制(100字符)
- [ ] 自动添加 .md 扩展名
2. **目录结构**:
- [ ] 按日期组织(temp/YYYY-MM-DD/)
- [ ] 目录自动创建
3. **文件内容**:
- [ ] 包含标题:`{查询关键词} 搜索结果`
- [ ] 包含元数据:查询关键词、爬取时间、包含页面数
- [ ] 每个页面有编号分隔符
- [ ] 每个页面包含:来源URL、标题、爬取时间、内容
### 功能验证
1. **保存逻辑**:
- [ ] 只有 save_to_file=true 时才保存
- [ ] 必须有查询关键词才保存
- [ ] 只有成功爬取的内容才保存
2. **错误处理**:
- [ ] 无查询关键词时不保存
- [ ] 空结果时不保存文件
- [ ] 文件系统错误有适当日志
3. **性能考虑**:
- [ ] 内存使用合理
- [ ] 文件 I/O 异步执行
- [ ] 不阻塞搜索结果返回
## 回归测试
确保原有功能未受影响:
1. **搜索功能**:
- [ ] SearXNG 搜索正常
- [ ] 结果过滤正常
- [ ] 爬取功能正常
2. **总结功能**:
- [ ] LLM 总结正常
- [ ] 内容长度检查正常
## 已知问题
1. **破坏性变更**:
- 原有的 `saveContent` 方法已移除
- 现有依赖该方法的外部代码需要更新
2. **文件大小**:
- 大量内容可能导致单个文件过大
- 需要考虑添加文件大小限制
3. **并发安全**:
- 同时执行多个查询可能创建相同文件名的文件
- 需要考虑添加时间戳或唯一标识符
## 测试清理
测试完成后清理生成的文件:
```bash
# 清理测试文件
rm -rf temp/test/
rm -rf temp/$(date +%Y-%m-%d)/TypeScript-基础.md
rm -rf temp/$(date +%Y-%m-%d)/Vue-React比较.md
```