任务 ID: task-search-test01 | 文件: session.md | 最后修改: 2026-02-24 12:45:07
session.md — task-search-test01 (search.py 综合测试)
📋 测试方案 — Ai.Rev 设计
设计时间: 2026-02-24
一、已知不可用/受限来源(Ai.Dev 无需排查,直接标记预期结果)
| Searcher |
原因 |
预期评级 |
brave |
需 BRAVE_SEARCH_API_KEY |
❌ 缺 Key |
newsapi |
需 NEWS_API_KEY |
❌ 缺 Key |
fred |
需 FRED_API_KEY |
❌ 缺 Key |
courtlistener |
403,需注册账号/API Key |
❌ 缺 Key |
tmdb |
需 TMDB_API_KEY |
❌ 缺 Key |
reddit |
403 network security block |
❌ 被封 |
gdelt |
连接超时,服务不可达 |
❌ 超时 |
jina |
403 Forbidden,需授权 |
❌ 被封 |
uspto |
旧端点 404,PatentsView 无响应 |
❌ 不可用 |
flk |
API 返回 SPA HTML,需 JS 渲染 |
❌ SPA |
baidubaike |
搜索页为 React SPA,需 JS 渲染 |
❌ SPA |
searxng |
依赖本地实例 localhost:4000 |
❓ 视部署 |
shopping(全类别) |
TODO 未实现 |
❌ TODO |
dataset 中 kaggle |
TODO 未实现 |
❌ TODO |
二、命令格式
cd /root/.openclaw/workspace
python3 scripts/search.py --category <category> --engine <engine> --query "<query>" --limit 5 --format text
或用 JSON 格式(便于解析):
python3 scripts/search.py -c <category> -e <engine> -q "<query>" -n 5 -f json 2>&1 | head -30
超时控制(避免等待 > 15 秒):
timeout 15 python3 scripts/search.py -c <category> -e <engine> -q "<query>" -n 3 2>&1
三、分类测试方案(30-38 项)
评级定义:
- ✅ 可用:返回至少 1 条有意义结果(有标题/摘要/URL)
- ⚠️ 降级:有返回但质量差(结果空、字段缺失、乱码、内容不相关)
- ❌ 不可用:报错、空结果、超时、被封
1. web 类(4项)
| # |
Engine |
查询词 |
判断标准 |
| W1 |
bing |
Python async programming |
✅=有标题+URL;⚠️=有结果但少于3条;❌=空/报错 |
| W2 |
baidu |
人工智能最新进展 |
✅=有中文结果;❌=空/报错 |
| W3 |
startpage |
climate change 2024 |
✅=有结果;❌=空/报错 |
| W4 |
searxng |
OpenAI GPT |
✅=有结果;❌=实例未启动(可标记为⚠️部署问题) |
2. academic 类(4项)
| # |
Engine |
查询词 |
判断标准 |
| A1 |
arxiv |
transformer attention mechanism |
✅=有论文标题+ID;❌=空/报错 |
| A2 |
openalex |
CRISPR gene editing |
✅=有DOI/标题;❌=空/报错 |
| A3 |
s2 |
large language models |
✅=有论文数据;❌=空/报错 |
| A4 |
crossref |
deep learning image classification |
✅=有DOI结果;❌=空/报错 |
3. code 类(5项)
| # |
Engine |
查询词 |
判断标准 |
| C1 |
pypi |
requests |
✅=有包信息+版本;❌=空/报错 |
| C2 |
npm |
react |
✅=有包名+版本;❌=空/报错 |
| C3 |
github |
fastapi python |
✅=有仓库名+star数;❌=空/报错 |
| C4 |
huggingface |
text classification |
✅=有模型名;❌=空/报错 |
| C5 |
dockerhub |
nginx |
✅=有镜像信息;❌=空/报错 |
4. community 类(3项)
| # |
Engine |
查询词 |
判断标准 |
| CM1 |
stackoverflow |
python async await |
✅=有问题+答案摘要;❌=空/报错 |
| CM2 |
hackernews |
AI startup 2024 |
✅=有HN帖子;❌=空/报错 |
| CM3 |
bilibili |
机器学习教程 |
✅=有视频信息;❌=空/报错 |
5. news 类(3项)
| # |
Engine |
查询词 |
判断标准 |
| N1 |
rss |
technology |
✅=有新闻条目;❌=空/报错 |
| N2 |
bbc |
world news |
✅=有BBC新闻;❌=空/报错 |
| N3 |
bingnews |
AI technology |
✅=有新闻结果;❌=空/报错 |
6. fetch 类(2项)
| # |
Engine |
查询词/URL |
判断标准 |
| F1 |
web_fetch |
URL: https://example.com |
✅=有页面内容;❌=空/报错 |
| F2 |
wayback |
URL: https://example.com |
✅=有历史快照URL;❌=空/报错 |
7. medical 类(3项)
| # |
Engine |
查询词 |
判断标准 |
| M1 |
pubmed |
COVID-19 vaccine efficacy |
✅=有PubMed文章;❌=空/报错 |
| M2 |
clinicaltrials |
cancer immunotherapy |
✅=有试验信息;❌=空/报错 |
| M3 |
openfda |
aspirin |
✅=有FDA药物记录;❌=空/报错 |
8. legal 类(2项)
| # |
Engine |
查询词 |
判断标准 |
| L1 |
wipo |
artificial intelligence patent |
✅=有专利信息;❌=空/报错 |
| L2 |
courtlistener |
antitrust |
❌ 预期失败(需API Key) |
9. finance 类(4项)
| # |
Engine |
查询词 |
判断标准 |
| FI1 |
yahoo |
AAPL |
✅=有股票信息;❌=空/报错 |
| FI2 |
sec_edgar |
Apple annual report |
✅=有SEC文件;❌=空/报错 |
| FI3 |
eastmoney |
比亚迪 |
✅=有东方财富数据;❌=空/报错 |
| FI4 |
worldbank |
GDP growth |
✅=有世界银行指标;❌=空/报错 |
10. wiki 类(3项)
| # |
Engine |
查询词 |
判断标准 |
| WK1 |
wikipedia |
quantum computing |
✅=有Wikipedia词条;❌=空/报错 |
| WK2 |
wikidata |
Elon Musk |
✅=有Wikidata实体;❌=空/报错 |
| WK3 |
zhwiki |
人工智能 |
✅=有中文Wikipedia结果;❌=空/报错 |
11. geo 类(2项)
| # |
Engine |
查询词 |
判断标准 |
| G1 |
nominatim |
Beijing |
✅=有坐标+地名;❌=空/报错 |
| G2 |
nominatim |
北京天安门 |
✅=有中文地名结果;❌=空/报错 |
12. media 类(1项)
| # |
Engine |
查询词 |
判断标准 |
| ME1 |
tmdb |
Inception |
❌ 预期失败(需TMDB_API_KEY) |
| ME2 |
musicbrainz |
Beethoven |
✅=有音乐家信息;❌=空/报错 |
13. dataset 类(2项)
| # |
Engine |
查询词 |
判断标准 |
| DS1 |
zenodo |
climate dataset |
✅=有数据集记录;❌=空/报错 |
| DS2 |
uciml |
iris |
✅=有UCI数据集信息;❌=空/报错 |
四、执行优先级说明
优先执行(预期可用,快速验证):
academic(arxiv/openalex/s2), code(pypi/npm/github), wiki, geo, medical, finance(yahoo/sec_edgar)
次要执行(可能有网络问题):
web(bing/baidu), community(stackoverflow/hackernews), news, fetch
预期失败(快速记录即可,无需深挖):
brave, newsapi, fred, courtlistener, tmdb, reddit, gdelt, jina, uspto, flk, baidubaike, shopping全类别
五、Ai.Dev 注意事项
- 每个测试
timeout 15 包裹,超时直接 ❌
- 测试间
sleep 1
--limit 3 即可(不需要大量结果)
fetch 类需用 --url 而非 --query
- searxng 若本地实例未启动,标记为 ⚠️(基础设施问题,非代码问题)
- 输出摘要截取前 50 字
Ai.Rev 测试方案设计完毕,共 35 个测试项(含 5 个预期失败项)
测试报告 — search.py v1.0.0
执行时间:2026-02-24 12:50
测试结果汇总
| 类别 |
测试数 |
✅可用 |
⚠️降级 |
❌不可用 |
| web |
4 |
2 |
1 |
1 |
| academic |
4 |
3 |
0 |
1 |
| code |
5 |
5 |
0 |
0 |
| community |
3 |
3 |
0 |
0 |
| news |
3 |
1 |
0 |
2 |
| fetch |
2 |
0 |
0 |
2 |
| medical |
3 |
3 |
0 |
0 |
| legal |
2 |
0 |
0 |
2 |
| finance |
4 |
2 |
1 |
1 |
| wiki |
3 |
3 |
0 |
0 |
| geo |
2 |
2 |
0 |
0 |
| media |
2 |
1 |
0 |
1 |
| dataset |
2 |
0 |
1 |
1 |
| 合计 |
39 |
25 |
3 |
11 |
详细结果
[web 类]
| ID |
Searcher |
查询词 |
评级 |
输出摘要 |
| W1 |
bing |
Python async programming |
✅ 可用 |
返回3条结果,但内容为bing搜索页跳转链接,相关性一般 |
| W2 |
baidu |
人工智能最新进展 |
✅ 可用 |
返回百度百科/百度搜索结果,有中文内容 |
| W3 |
startpage |
climate change 2024 |
✅ 可用 |
返回WMO/Copernicus气候报告链接,相关性好 |
| W4 |
searxng |
OpenAI GPT |
⚠️ 降级 |
本地实例未启动(localhost:4000 Connection refused) |
[academic 类]
| ID |
Searcher |
查询词 |
评级 |
输出摘要 |
| A1 |
arxiv |
transformer attention mechanism |
✅ 可用 |
返回arxiv论文,标题+URL+摘要完整 |
| A2 |
openalex |
CRISPR gene editing |
✅ 可用 |
返回DOI链接,有论文标题 |
| A3 |
s2 |
large language models |
❌ 不可用 |
Semantic Scholar BLOCKED |
| A4 |
crossref |
deep learning image classification |
✅ 可用 |
返回DOI+论文标题,结果完整 |
[code 类]
| ID |
Searcher |
查询词 |
评级 |
输出摘要 |
| C1 |
pypi |
requests |
✅ 可用 |
requests 2.32.5,有版本+URL+描述 |
| C2 |
npm |
react |
✅ 可用 |
react@19.2.4,有版本+URL+描述 |
| C3 |
github |
fastapi python |
✅ 可用 |
fastapi/fastapi,有仓库名+URL+描述 |
| C4 |
huggingface |
text classification |
✅ 可用 |
返回jina模型列表,有模型名+URL |
| C5 |
dockerhub |
nginx |
✅ 可用 |
nginx官方镜像,有描述 |
[community 类]
| ID |
Searcher |
查询词 |
评级 |
输出摘要 |
| CM1 |
stackoverflow |
python async await |
✅ 可用 |
返回SO问题列表,有标题+URL |
| CM2 |
hackernews |
AI startup 2024 |
✅ 可用 |
返回HN相关帖子,有标题+URL |
| CM3 |
bilibili |
机器学习教程 |
✅ 可用 |
返回B站视频,有标题+URL |
[news 类]
| ID |
Searcher |
查询词 |
评级 |
输出摘要 |
| N1 |
rss |
technology |
❌ 不可用 |
RSS bbc 无匹配结果(query参数无效) |
| N2 |
bbc |
world news |
❌ timeout |
超时(>15秒) |
| N3 |
bingnews |
AI technology |
❌ 不可用 |
GDELT JSON_PARSE_ERROR |
[fetch 类]
| ID |
Searcher |
URL |
评级 |
输出摘要 |
| F1 |
web_fetch |
https://example.com |
❌ 不可用 |
TypeError: search() got multiple values for keyword argument 'url'(代码bug) |
| F2 |
wayback |
https://example.com |
❌ 不可用 |
同上,同一bug导致 |
[medical 类]
| ID |
Searcher |
查询词 |
评级 |
输出摘要 |
| M1 |
pubmed |
COVID-19 vaccine efficacy |
✅ 可用 |
返回PubMed文章,有标题+URL+期刊信息 |
| M2 |
clinicaltrials |
cancer immunotherapy |
✅ 可用 |
返回临床试验,有标题+URL+描述 |
| M3 |
openfda |
aspirin |
✅ 可用 |
返回FDA药物记录(实际为naproxen,相关性一般) |
[legal 类]
| ID |
Searcher |
查询词 |
评级 |
输出摘要 |
| L1 |
wipo |
artificial intelligence patent |
❌ 不可用 |
WIPO:无结果 |
| L2 |
courtlistener |
antitrust |
❌ 预期失败 |
需API Key(已知) |
[finance 类]
| ID |
Searcher |
查询词 |
评级 |
输出摘要 |
| FI1 |
yahoo |
AAPL |
❌ 不可用 |
Yahoo Finance BLOCKED |
| FI2 |
sec_edgar |
Apple annual report |
⚠️ 降级 |
返回结果但标题为空,仅有URL和日期 |
| FI3 |
eastmoney |
比亚迪 |
⚠️ 降级 |
返回东方财富页面,但内容为广告/导航页,非股票数据 |
| FI4 |
worldbank |
GDP growth |
✅ 可用 |
返回世界银行文档,有标题+URL+日期 |
[wiki 类]
| ID |
Searcher |
查询词 |
评级 |
输出摘要 |
| WK1 |
wikipedia |
quantum computing |
✅ 可用 |
返回中文维基"量子计算机"词条,有摘要 |
| WK2 |
wikidata |
Elon Musk |
✅ 可用 |
返回Wikidata实体,有描述"businessman and entrepreneur" |
| WK3 |
zhwiki |
人工智能 |
✅ 可用 |
返回中文维基词条,有完整摘要 |
[geo 类]
| ID |
Searcher |
查询词 |
评级 |
输出摘要 |
| G1 |
nominatim |
Beijing |
✅ 可用 |
返回"北京市, 中国",有OSM链接+类型 |
| G2 |
nominatim |
北京天安门 |
✅ 可用 |
返回天安门详细地址+OSM链接 |
[media 类]
| ID |
Searcher |
查询词 |
评级 |
输出摘要 |
| ME1 |
tmdb |
Inception |
❌ 预期失败 |
需TMDB_API_KEY(已知) |
| ME2 |
musicbrainz |
Beethoven |
✅ 可用 |
返回MusicBrainz录音记录,有标题+URL |
[dataset 类]
| ID |
Searcher |
查询词 |
评级 |
输出摘要 |
| DS1 |
zenodo |
climate dataset |
❌ 不可用 |
Zenodo BLOCKED |
| DS2 |
uciml |
iris |
⚠️ 降级 |
TODO: uciml 未实现(代码标注) |
问题与发现
🐛 代码 Bug
- fetch 类全部失败:
web_fetch 和 wayback 的 search() 方法存在 url 参数冲突(TypeError: got multiple values for keyword argument 'url'),导致 fetch 类完全不可用。
🚫 网络封锁/限流
- Semantic Scholar (s2):返回 BLOCKED,需要 API Key 或 IP 被限流
- Yahoo Finance:返回 BLOCKED,反爬机制触发
- Zenodo:返回 BLOCKED
- BBC news:超时(>15秒)
- GDELT (bingnews):JSON_PARSE_ERROR,接口可能已变更
⚠️ 质量问题
- SEC EDGAR:返回结果标题字段为空,仅有URL和日期
- EastMoney:返回广告/导航页而非股票数据
- WIPO:无结果(可能需要特定查询格式)
- RSS:query参数无效,无法按关键词搜索
🏗️ 未实现
- uciml:代码中标注 TODO,未实现
- searxng:依赖本地实例,未部署时不可用(基础设施问题)
Ai.Dev 测试报告完毕,执行时间约 10 分钟,共 39 项测试