| name | search-router |
| description | 搜索路由器:基于 opencli,按话题和场景把查询路由到合适的搜索源。当用户需要从网络获取信息时(无需用户提及 opencli)加载此技能。 |
搜索路由器
根据话题和场景,将查询路由到合适的 opencli 搜索源。核心原则:每次搜索前先想清楚为什么搜、搜什么、去哪搜。
工作流
步骤 1:判断是否需要搜索
收到用户问题后,先问自己:
- 这个问题能用已有对话中的搜索结果回答吗?
- 这个问题是常识/静态知识,不需要搜索吗?
- 这个问题需要实时/最新/来自特定平台的信息吗?
只有信息确实不足时才启动搜索。如果已有信息足够,直接回答。
判断完成后,如果确定需要搜索,输出一行决策:
🔍 需要搜索:<一句话说明为什么已有信息不足>
如果不需要搜索,直接回答用户。
步骤 2:选源
根据用户问题和场景选择搜索源。参考 references/sources.md 中的分类站点表,按以下优先级:
- 用户明确指定了网站/平台 -> 直接用该站点
- 用户没有指定,属于通用问题 -> 从 AI 源(grok / doubao / gemini)中选一个,按语言和语境判断:
- 中文语境、国内热点、生活方式 ->
doubao
- 英文实时讨论、Twitter/X 语境、热点追踪 ->
grok
- 全球网页、英文资料、背景综述 ->
gemini
- AI 源返回不足,需要原始数据/权威来源/垂直结果 -> 从
references/sources.md 中找 1-2 个专用源
先选一个 AI 源,不够再补。
步骤 3:检查站点可用性
选定站点后,分两步验证其可用性:
第一步:确认站点存在。 如果对这个站点不熟悉,运行紧凑的站点列表命令,一次拿到所有可用站点名(站点字段以 opencli list -h 为准):
opencli list -f json | python3 -c "import json,sys; print(', '.join(sorted(set(c['site'] for c in json.load(sys.stdin)))))"
如果确定目标站点在常用列表中(如 grok、gemini、doubao),可以跳过这一步,直接验证子命令。
第二步:查看子命令。 运行:
opencli <site> -h
如果还需要了解具体子命令的参数和输出列,再运行:
opencli <site> <command> -h
子命令签名和参数以 -h 实时输出为准。
如果站点不可用,记录跳过原因,回退到同类其他站点或 AI 源。
步骤 4:构造查询词
按以下结构构造查询:
<主题> + <目标> + <限定条件>
- 主题:要查的对象、事件、产品、人物、技术名词
- 目标:想要什么结果--总结、对比、原因、趋势、推荐、原始数据
- 限定条件:语言、地区、时间范围、平台范围、输出要求
示例:
- ❌
Rust 新特性
- ✅
Rust 2026年最新稳定版有哪些主要新特性,简洁汇总
AI 源查询模板:
| 场景 | 模板 |
|---|
| 热点/新闻 | <事件> + 最新进展 + <时间范围> + <地区/平台> |
| 对比/推荐 | <对象A> vs <对象B> + <关注维度> + <人群/预算/用途> |
| 中文社区 | <主题> + 中文讨论里主要观点 + <时间范围> |
| 全球资料 | <主题> + overview/background + with sources |
| 求职 | <岗位> + <城市/国家> + market trends/hiring + <时间范围> |
| 购物 | <商品> + reviews/price/value + <地区/预算> |
步骤 5:执行搜索并记录理由
执行搜索命令。每次搜索前,输出一行理由:
🔍 使用 <site> 搜索 "<query>",因为 <理由>
理由必须具体说明为什么选这个站点、为什么已有信息不足以回答当前问题。
搜索次数约束:
- 每条用户消息,AI 源最多搜 1 次--选一个最合适的,搜一次拿到初步答案
- 如果 AI 源结果不够,最多再补 1-2 个专用源
- 每个站点对每条用户消息最多搜 1 次
步骤 6:结果评估与补充
搜索完成后评估结果:
- 足够 -> 基于结果回答用户
- 不足 -> 说明缺口,补 1-2 个专用源(非 AI 站点)
- 两次补充后仍不足 -> 停止扩搜,明确说明覆盖范围和信息缺口
步骤 7:搜索摘要
每次查询结束后,在回答末尾追加搜索摘要:
搜索摘要
- 网站:<site1> | 查询词:<term1> | 理由:<reason1>
- 网站:<site2> | 查询词:<term2> | 理由:<reason2>
- 已跳过:<site3>,原因:<不可用/报错/信息已够>
参考文件
references/sources.md - 所有站点按分类整理(AI 源 + 专用源),包含适用场景和路由提示。当需要选源时,读取此文件查找合适的站点。
只读与当前查询相关的分类段落,无需全量加载。