# 错误修复:web_search 工具未触发 LLM 处理
**修复时间**:2025-12-04
**错误级别**:High
## 问题详情
### 错误信息
```
web_search 没有经过llm处理啊
```
### 错误类型
- 类型:功能缺失
- 影响:违背了项目核心设计目标(通过 LLM 总结内容解决 token 超限问题)
## 解决方案
### 根本原因
LLM 处理的触发条件过于严格:
- 原始条件:只有内容长度 > 50000 字符才触发 LLM 总结
- 实际情况:大多数搜索结果只有几千字符,远低于阈值
- 结果:web_search 工具几乎从不进行 LLM 处理,直接返回原始搜索结果
### 修改文件
- `src/tools/web-search.ts`:优化 LLM 处理判断逻辑
### 代码变更
```typescript
// 修改前
if (totalContentLength <= maxContentLength) {
return formatSearchResults(searchResponse.results, searchResponse.answer);
}
// 修改后
const shouldSummarize =
totalContentLength > maxContentLength ||
searchResponse.results.length > 1 ||
(searchResponse.results.length === 1 && totalContentLength > 1000);
if (shouldSummarize) {
// 详细记录触发原因
let reason: string;
if (totalContentLength > maxContentLength) {
reason = 'content too long';
} else if (searchResponse.results.length > 1) {
reason = 'multiple results';
} else {
reason = 'single long result';
}
// ... LLM 处理逻辑
}
```
## 验证结果
### 测试场景
- 搜索查询:`"artificial intelligence latest developments"`
- 搜索结果:1个结果,1617字符
- 原始逻辑:1617 < 50000,不触发 LLM
- 修复后逻辑:1617 > 1000,触发 LLM
### 测试日志
```
[2025-12-04T07:32:26.150Z] [INFO] Search results received {"resultCount":1,"totalContentLength":1617}
[2025-12-04T07:32:26.150Z] [INFO] Using LLM summarization {"reason":"single long result","resultCount":1,"totalContentLength":1617}
[2025-12-04T07:32:26.150Z] [INFO] Starting LLM summarization {"contentLength":1642,"model":"deepseek-ai/DeepSeek-V3.2-Exp"}
```
### 结果验证
- [x] LLM 处理逻辑成功触发
- [x] 条件判断正确(1617 > 1000)
- [x] 日志记录详细触发原因
- [x] CHANGELOG.md 已更新
- [x] 代码已提交
## 关键改进
1. **降低触发阈值**:单个结果从 50000 字符降至 1000 字符
2. **增加触发场景**:多个结果或单个长结果都会触发
3. **详细日志**:记录触发原因便于调试
4. **保持兼容性**:保留原有的大内容阈值判断逻辑
## 注意事项
测试中发现 LLM API 返回 404 错误,但这属于 API 配置问题,不影响 LLM 处理逻辑的成功修复。