# 错误修复:web_search 工具查询验证错误
**修复时间**:2025-12-05
**错误级别**:High
## 问题详情
### 错误信息
```json
[
{
"code": "too_small",
"minimum": 1,
"type": "string",
"inclusive": true,
"exact": false,
"message": "String must contain at least 1 character(s)",
"path": ["query"]
}
]
```
### 错误类型
- 类型:API/输入验证
- 状态码:400
## 解决方案
### 根本原因
web_search 工具的 `query` 参数验证逻辑不完善,存在以下问题:
1. 只检查字符串长度,没有处理空字符串
2. 没有处理仅包含空格字符的情况
3. 没有处理制表符、换行符等空白字符
### 修改文件
- `src/tools/web-search.ts`:增强查询参数验证逻辑
- `src/server.ts`:更新 API schema 描述
### 代码变更
```typescript
// 修改前
query: z.string().min(1).describe('搜索查询'),
// 修改后
query: z.string()
.min(1, '搜索查询不能为空')
.transform(val => val.trim())
.refine(val => val.length > 0, '搜索查询不能只包含空格字符')
.describe('搜索查询'),
```
## 验证结果
- [x] 代码检查通过
- [x] 单元测试通过(6个测试用例全部通过)
- [x] 类型检查通过
- [x] 空字符串验证正确
- [x] 仅空格字符验证正确
- [x] 正常查询处理正确
- [x] 自动清理前后空格
### 测试覆盖
1. ✅ 空字符串 `""` → 正确拒绝
2. ✅ 仅空格 `" "` → 正确拒绝
3. ✅ 制表符换行 `"\t\n"` → 正确拒绝
4. ✅ 带空格的查询 `" query "` → 正确清理并接受
5. ✅ 正常查询 `"valid query"` → 正确接受
6. ✅ 中文查询 `"治安管理条例"` → 正确接受
## 影响评估
修复增强了输入验证的健壮性,提升了用户体验:
- **用户体验**:自动清理前后空格,避免因空格导致的验证失败
- **错误提示**:提供更清晰的错误信息
- **数据质量**:确保查询参数包含有效内容
- **向后兼容**:不影响正常的查询功能