基于 opencli 命令的智能搜索路由器。当用户想要使用 OpenCLI、CLI 或 API 搜索、查询、查找或研究信息时,尤其是涉及指定网站、社交媒体、技术资料、新闻、购物、旅游、求职、金融或中文内容时,务必使用此 skill
$npx -y skills add jackwener/opencli --skill smart-searchInstalls into the current project.
Run `npx skills use "https://github.com/jackwener/opencli" --skill "jackwener/opencli/smart-search"` and follow the generated skill instructions now. Read its complete output, redirecting it to a temporary file first if necessary. Resolve relative paths from the supporting-files directory it provides.
Use the skills in "https://github.com/jackwener/opencli" that are relevant to the current task. Run `npx skills add "https://github.com/jackwener/opencli"` and select the relevant skills, then follow their instructions.
| 1 | # 智能搜索路由器 |
| 2 | |
| 3 | 根据话题和场景,将查询路由到最佳的 opencli 搜索源。此 skill 的核心目标不是记忆命令,而是先定位数据源,再让 Agent 通过 `opencli` 自己读取实时帮助,避免文档漂移。 |
| 4 | |
| 5 | ## 强制预检 |
| 6 | |
| 7 | 每次使用前,必须先做下面两步: |
| 8 | |
| 9 | - 运行 `opencli list -f yaml` |
| 10 | - 用 live registry 确认候选站点是否存在,并检查 `strategy`、`browser`、`domain` |
| 11 | |
| 12 | 选定站点后,必须再做下面两步: |
| 13 | |
| 14 | - 运行 `opencli <site> -h` 查看该站点有哪些子命令 |
| 15 | - 若已锁定某个子命令,再运行 `opencli <site> <command> -h` 查看参数、输出列、策略 |
| 16 | |
| 17 | 不要在 skill 文档里硬编码参数或假设命令签名;以 `opencli ... -h` 的实时输出为准。 |
| 18 | |
| 19 | ## 主路由规则 |
| 20 | |
| 21 | 只使用这一条规则,不再维护多套优先级: |
| 22 | |
| 23 | 1. 当用户明确指定网站、平台或数据源时,直接使用对应网站。 |
| 24 | 2. 当用户没有指定网站时,优先只选择一个 AI 源:`grok`、`doubao`、`gemini` 三选一。 |
| 25 | 3. 当 AI 返回内容不足、缺少原始数据、需要权威佐证或需要垂直结果时,再补充 1-2 个专用源。 |
| 26 | |
| 27 | ## 单题预算与频率限制 |
| 28 | |
| 29 | 把“单个用户问题”理解为同一意图链路下的一次问题求解;同一轮追问、澄清、补充条件,若核心问题未变,仍算同一题。 |
| 30 | |
| 31 | 先建立一份站点调用台账。每次真正执行搜索命令后,立刻更新: |
| 32 | |
| 33 | - `site` |
| 34 | - `query` |
| 35 | - `count` |
| 36 | - `status` |
| 37 | |
| 38 | 计数规则: |
| 39 | |
| 40 | - `opencli list -f yaml`、`opencli <site> -h`、`opencli <site> <command> -h` 属于预检与帮助,不计入搜索次数 |
| 41 | - 一次真正的 `opencli <site> ...` 搜索/查询执行,计为该站点 1 次调用 |
| 42 | - 同站点因为报错、超时、验证码、反爬、登录态异常而失败,也算 1 次调用,不要无限重试 |
| 43 | |
| 44 | 频率上限: |
| 45 | |
| 46 | - AI 站点硬限制:同一题内,每个 AI 站点最多调用 1 次 |
| 47 | - 默认策略仍然是只选 1 个 AI 站点,不要把多个 AI 站点串成常规流程 |
| 48 | - 只有当用户明确要求比较多个 AI 站点时,才可以额外调用其他 AI 站点;但每个被点名的 AI 站点仍然最多 1 次 |
| 49 | - 非 AI 站点默认最多调用 2 次 |
| 50 | - 非 AI 站点第 2 次调用必须有明确理由,例如第一次结果过宽,需要加时间、地区、类别、排序或关键词限定 |
| 51 | - 非 AI 站点不要进行第 3 次调用;若信息仍不足,停止扩搜并明确说明缺口 |
| 52 | |
| 53 | 触发限频后的处理: |
| 54 | |
| 55 | - 记录:「已跳过:<site> 达到频率上限」 |
| 56 | - 优先改用其他同类站点 |
| 57 | - 若没有合适替代源,则直接基于已收集信息回答,并说明覆盖范围与缺口 |
| 58 | |
| 59 | ## 查询结束汇报 |
| 60 | |
| 61 | 每次查询结束后,回答末尾必须追加一段简短的“搜索摘要”,至少包含下面三项: |
| 62 | |
| 63 | - 使用了什么网站搜索 |
| 64 | - 每个网站搜了什么词 |
| 65 | - 每个网站搜了几次 |
| 66 | |
| 67 | 如果有被限频跳过的站点,也要明确写出。 |
| 68 | |
| 69 | 建议使用下面的固定格式: |
| 70 | |
| 71 | ```md |
| 72 | 搜索摘要 |
| 73 | - 网站:<site1> | 查询词:<term1> | 次数:<n> |
| 74 | - 网站:<site2> | 查询词:<term2>;<term3> | 次数:<n> |
| 75 | - 已跳过:<site3>,原因:达到频率上限 |
| 76 | ``` |
| 77 | |
| 78 | ## AI 源选择 |
| 79 | |
| 80 | - `grok` |
| 81 | 适合实时讨论、英文互联网舆论、Twitter/X 语境、热点追踪。 |
| 82 | - `doubao` |
| 83 | 适合中文语境、字节抖音生态、生活方式内容、中文热点与泛中文问答。 |
| 84 | - `gemini` |
| 85 | 适合全球网页、英文资料、通用信息检索、背景综述。 |
| 86 | |
| 87 | 如果用户没有指定网站,默认先判断语言和语境,再从这三个里只选一个。 |
| 88 | |
| 89 | 一旦某个 AI 站点已经执行过一次真实查询,就不要在同一题里改写关键词后再次调用该 AI 站点。若答案不足,优先补专用源,不要反复追打同一个 AI 站点。 |
| 90 | |
| 91 | ## AI 查询词建议 |
| 92 | |
| 93 | 当使用 AI 源时,不要只丢一个过短关键词。优先构造成“主题 + 目标 + 限定条件”的查询。 |
| 94 | |
| 95 | - 主题 |
| 96 | 用户真正要查的对象、事件、产品、人物、公司、技术名词。 |
| 97 | - 目标 |
| 98 | 想要什么结果,例如总结、对比、原因、趋势、推荐、原始线索。 |
| 99 | - 限定条件 |
| 100 | 语言、地区、时间范围、平台范围、受众、价格带、岗位地点、是否要引用原始来源。 |
| 101 | |
| 102 | 优先使用下面这种表达方式: |
| 103 | |
| 104 | - `<主题> + <你要回答的问题>` |
| 105 | - `<主题> + <时间范围/地区/语言>` |
| 106 | - `<主题> + <平台或来源范围>` |
| 107 | - `<主题> + <输出要求>` |
| 108 | |
| 109 | 避免只输入: |
| 110 | |
| 111 | - 单个名词 |
| 112 | - 没有时间范围的热点问题 |
| 113 | - 没有地区限制的购物、求职、旅游问题 |
| 114 | - 没有平台限制的社交媒体问题 |
| 115 | |
| 116 | ## 专用源补充时机 |
| 117 | |
| 118 | 当出现以下任一情况时,再补充专用源: |
| 119 | |
| 120 | - AI 给出的是摘要,但你需要原始帖子、原始视频、原始商品或原始职位结果 |
| 121 | - AI 覆盖面不足,漏掉垂直站点信息 |
| 122 | - 需要更高权威性或更强领域相关性 |
| 123 | - 用户明确要求“从某个平台找” |
| 124 | |
| 125 | 单次查询通常控制在 1 个 AI 源 + 1 到 2 个专用源,避免结果过载。 |
| 126 | |
| 127 | ## 处理不可用的源 |
| 128 | |
| 129 | 当站点不可用时: |
| 130 | |
| 131 | - 不要因为单个源失败而中止整个搜索 |
| 132 | - 记录:「已跳过:<site> 不可用」 |
| 133 | - 回退到同类其他站点,或回退到一个 AI 源 |
| 134 | - 始终以 `opencli list -f yaml` 与 `opencli <site> -h` 的实际结果为准 |
| 135 | |
| 136 | 不要假设任何站点“绝对可用”。即使是公开站点,也以当前环境中的 live help 和执行结果为准。 |
| 137 | |
| 138 | ## 参考文件 |
| 139 | |
| 140 | 根据需要读取对应文件: |
| 141 | |
| 142 | - **`references/sources-ai.md`** — AI 默认源 |
| 143 | - **`references/sources-tech.md`** — 技术 / 学术 |
| 144 | - **`references/sources-social.md`** — 社交媒体 |
| 145 | - **`references/sources-media.md`** — 媒体 / 娱乐 |
| 146 | - **`references/sources-info.md`** — 资讯 / 知识 |
| 147 | - **`references/sources-shopping.md`** — 购物 |
| 148 | - **`references/sources-travel.md`** — 旅游 |
| 149 | - **`references/sources-other.md`** — 其他垂直源 |
| 150 | |
| 151 | 只读与当前查询相关的文件,无需全部加载。 |