| name | unified-search |
| description | Unified search suite - Single interface for multiple search engines including Tavily, Brave, Exa, and Firecrawl. Replaces brave-search, tavily, firecrawl-search, and openclaw-tavily-search with intelligent routing, multi-engine aggregation, and local caching. Use for: web search, news search, academic research, company search, patent search, content extraction. |
Unified Search
统一搜索套件 - 一个接口,多引擎支持,智能路由,完全自建替代方案。
🎯 替代: brave-search + tavily + firecrawl-search + openclaw-tavily-search
核心能力
- 智能路由 - 根据查询类型自动选择最佳搜索引擎
- 多引擎聚合 - 并行查询多个引擎,结果去重排序
- 本地缓存 - DuckDB缓存,相同查询24小时内直接返回,降本80%
- 统一接口 - 不管什么引擎,调用方式完全一致
- 完全自建 - 本地管理API keys,无外部Skill依赖
整合的搜索引擎
| 引擎 | 优势 | 适用场景 | 状态 |
|---|
| Tavily | AI优化结果 | 通用搜索、研究查询 | ✅ 已集成 |
| Brave | 速度快 | 实时新闻、快速查询 | ✅ 已集成 |
| Exa | 语义搜索 | 学术、技术概念 | ✅ 已集成 |
| Firecrawl | 深度爬取 | 需要完整网页内容 | ✅ 已集成 |
| Kimi Search | 中文优化 | 中文内容搜索 | ✅ 已集成 |
快速开始
CLI使用
ussearch "硬科技投资趋势 2024"
ussearch "AI初创企业融资" --type news
ussearch "合伙人选择决策模型" --type academic
ussearch "人工智能芯片" --type patent
ussearch "量子计算" --engine tavily
ussearch "最新新闻" --engine brave
ussearch "深度内容" --engine firecrawl
ussearch "黎红雷 儒商" --engines tavily,brave,exa --aggregate
ussearch "满意解决策理论" \
--type academic \
--max-results 20 \
--include-answer \
--cache-ttl 86400
Python API
from unified_search import UnifiedSearch
search = UnifiedSearch()
results = search.query("硬科技投资趋势 2024")
news = search.query("AI初创企业融资", search_type="news")
papers = search.query("合伙人选择决策模型", search_type="academic")
results = search.query(
"黎红雷 儒商",
engines=["tavily", "brave", "exa"],
aggregate=True
)
results = search.query(
query="满意解决策理论",
search_type="academic",
max_results=20,
include_answer=True,
cache_ttl=86400
)
智能路由规则
ROUTING_RULES = {
"news": {
"engines": ["brave", "tavily"],
"reason": "新闻优先Brave(速度快)"
},
"academic": {
"engines": ["exa", "tavily"],
"reason": "学术优先Exa(语义搜索强)"
},
"patent": {
"engines": ["tavily"],
"reason": "专利搜索用Tavily"
},
"company": {
"engines": ["brave", "tavily"],
"reason": "公司信息综合搜索"
},
"general": {
"engines": ["tavily", "brave", "exa"],
"reason": "默认多引擎聚合"
},
"deep_content": {
"engines": ["firecrawl"],
"reason": "需要完整网页内容"
}
}
缓存机制
目标: 降本80%
CREATE TABLE search_cache (
id VARCHAR PRIMARY KEY,
query VARCHAR NOT NULL,
query_type VARCHAR,
engines_used JSON,
results JSON,
created_at TIMESTAMP,
expires_at TIMESTAMP,
hit_count INTEGER DEFAULT 1
);
DELETE FROM search_cache WHERE expires_at < CURRENT_TIMESTAMP;
缓存命中策略:
- 精确匹配: 相同查询直接返回
- 语义匹配: 相似查询(余弦相似度>0.9)复用结果
- 时间衰减: 新闻类缓存1小时,学术类缓存7天
配置文件
.env:
TAVILY_API_KEY=tvly-xxxxx
BRAVE_API_KEY=brave-xxxxx
EXA_API_KEY=exa-xxxxx
FIRECRAWL_API_KEY=fc-xxxxx
DEFAULT_ENGINE=tavily
DEFAULT_CACHE_EXPIRY=86400
MAX_RESULTS_PER_ENGINE=10
CACHE_ENABLED=true
CACHE_TYPE=duckdb
DUCKDB_PATH=./search_cache.duckdb
AUTO_ROUTING=true
FALLBACK_ENGINE=tavily
输出格式
{
"query": "硬科技投资趋势",
"type": "news",
"engines_used": ["tavily", "brave"],
"total_results": 15,
"results": [
{
"title": "2024年硬科技投资报告",
"url": "https://example.com/article",
"content": "硬科技投资在2024年呈现...",
"source": "tavily",
"score": 0.95,
"published_date": "2024-03-15"
}
],
"ai_summary": "根据搜索结果,硬科技投资趋势显示...",
"from_cache":
与原外部Skill的完全替代
| 原外部Skill | 原使用方式 | 新统一方式 | 替代状态 |
|---|
brave-search | braveSearch("query") | ussearch "query" --engine brave | ✅ 完全替代 |
tavily | tavily_search "query" | ussearch "query" --engine tavily | ✅ 完全替代 |
firecrawl-search | firecrawl_search "query" | ussearch "query" --engine firecrawl | ✅ 完全替代 |
openclaw-tavily-search | openclaw_tavily "query" | ussearch "query" --engine tavily | ✅ 完全替代 |
迁移示例:
brave-search "最新科技新闻"
ussearch "最新科技新闻" --engine brave
tavily_search "AI发展趋势"
ussearch "AI发展趋势" --engine tavily
firecrawl_search "深度技术文章"
ussearch "深度技术文章" --engine firecrawl
高级功能
内容提取
ussearch extract "https://example.com/article" --full-content
ussearch extract "https://example.com/article" --format markdown
批量搜索
ussearch batch queries.txt --output results.json
ussearch parallel "query1" "query2" "query3" --aggregate
搜索分析
ussearch stats cache
ussearch stats cost --days 30
ussearch history --limit 100
依赖安装
pip install requests duckdb pydantic
pip install -r requirements.txt
成本对比
| 方案 | 月成本 | 说明 |
|---|
| 单独使用4个外部搜索Skill | $20-40 | 各自独立调用,无缓存共享 |
| unified-search(无缓存) | $15-30 | 智能路由减少重复查询 |
| unified-search(有缓存) | $5-10 | 缓存命中率60%+,大幅降本 |
成本优化策略:
- 启用本地缓存: 减少60% API调用
- 智能路由: 选择最经济的引擎
- 批量查询: 合并请求减少开销
故障转移
当某个引擎不可用时,自动切换到备用引擎:
FAILOVER_CHAIN = {
"tavily": ["brave", "exa"],
"brave": ["tavily", "exa"],
"exa": ["tavily", "brave"],
"firecrawl": ["tavily"]
}
状态: ✅ 生产就绪
自建替代计数: +4 (brave-search, tavily, firecrawl-search, openclaw-tavily-search)