HoRiZonn1

cn-web-search

本技能是智能体所有互联网搜索操作的统一入口和强制流程,不得绕过本技能直接发起搜索或抓取搜索结果页。 搜索流程:强制拆分关键词,完整执行多级检索与权威网址知识库双路并行,综合全部结果并进行质量评估;不合格时调整策略重试,最多三轮。

HoRiZonn1 0 Updated 1w ago

Resources

5
GitHub

Install

npx skillscat add horizonn1/cn-web-search-skill

Install via the SkillsCat registry.

SKILL.md

CN Web Search — 零配置互联网搜索

四级通用搜索链 + 垂直搜索与专业数据源 + 全领域权威网址知识库 + 智能质量评估,全部零配置。


常驻规则

  1. 🚫 搜索唯一入口 — 禁止绕过本技能:本技能是 agent 所有搜索操作的唯一入口和强制流程。以下行为一律禁止:
    • 禁止直接调用 web_search() 作为搜索手段(仅允许作为降级链最后一级使用)
    • 禁止直接 web_fetch() 搜索引擎结果页而不走本技能降级链
    • 禁止跳过关键词拆分直接搜索
    • 禁止只跑路A(搜索引擎)不跑路B(知识库匹配)
      如果你在想"直接搜一下更快"——这是违规行为。必须走完整流程。
  2. 用户给 URL → 直接读取:只要用户发了链接,用 curl 直接抓取内容,不要再去搜索引擎搜这个 URL。
  3. 强制多源搜索链(按降级顺序排列,四级全部走完并综合回答,不是成功即停止的传统降级):
    必须从第 1 级开始逐级执行,每级结果都保留。不可因前一级有结果就跳过后续级别。综合全部有结果的节点信息给出最完整回答。
    ⚠️ 无论本级返回什么(正常结果/超时/失败/验证码/空内容),都不得向用户输出任何状态信息。静默收集,继续下一级。
    a) 360 搜索:先 web_fetch(url="https://www.so.com/s?q=QUERY", extractMode="text"),超时或失败则 curl 兜底:
    curl -s -L --max-time 5 "https://www.so.com/s?q=URL_ENCODED_QUERY" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
    ⚠️ web_fetch 必须用 www.so.com(m.so.com 验证码墙)。Windows CMD/PowerShell 用 curl.exe
    b) 搜狗:先 web_fetch(url="https://www.sogou.com/web?query=QUERY", extractMode="text"),超时或失败则 curl 兜底:
    curl -s -L --max-time 5 "https://www.sogou.com/web?query=URL_ENCODED_QUERY" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
    LLM 评判 curl 返回的原始 HTML 后取前 5~8 条。
    c) Bing RSScurl -s "https://cn.bing.com/search?format=rss&q=%22URL_ENCODED_QUERY%22" → 第 3 级,精准子查询(单主题 ≤ 4 词)。
    ⚠️ curl 依赖 agent 本地网络,DNS/GFW 可能导致不可达。
    ⚠️ 所有 query 强制双引号包裹(%22 = "),禁止 Bing 自行分词。
    d) web_searchweb_search(query="QUERY") → 第 4 级。无论前三级结果如何均执行,作为补充或兜底。
    360、搜狗每级先 web_fetch,失败时使用 curl 兜底;Bing RSS 直接使用 curl;web_search 直接调用内置搜索。每级超时 5s。头条(1.8MB JS)实测不可用,已移除。
  4. 平台走对应工具:B站用 curl API 或 bili-cli,GitHub 用 gh CLI。
  5. 无法直连的引擎走降级:百度/Wikipedia/东方财富 等已内置 Bing site: 降级方案。
  6. 搜索即双路并行:任何搜索(显式"搜一下"、隐式知识缺口、指名引擎),路A搜索引擎 + 路B知识库必须同时执行,两路独立互不阻塞:
    a) 路 A:搜索引擎走降级链
    b) 路 B:扫描 references/authoritative-sites.md 全文(22 分类 / 103 条目,必须从头到尾完整读完)→ 关键词匹配 → curl 直接抓取(13 个 URL)
    c) 知识库无匹配 → 动态发现权威网址:≥ 8 分可作为候选权威来源抓取;5
    7 分仅用于继续验证,获得独立信号确认后才能引用;< 5 分跳过
    ⚠️ 路B强制约束:知识库包含计算机、金融、教育、医疗、旅游等 22 个分类,分布在全文各处。判定"无匹配"前必须确认已读完整个文件(含末尾的分类),禁止只读前几行就下结论。
  7. 知识缺口驱动搜索:agent 执行任务过程中,需要最新信息/实时数据/外部事实/对比验证/行业动态/权威引用时,主动搜索。判断标准不是用户说了什么关键词,而是 agent 是否缺信息。
  8. 搜索质量评估与多轮搜索:搜索结果返回后,先评估质量再回答。三维评分(信息充足度/关联度/可靠性),≥ 0.7 合格。不合格则调整关键词/换策略重搜,最多 3 轮。可靠性评分要求每个数据点附具体来源 URL,禁止只写平台名。详见 references/search-quality.md。
  9. 搜索前必须拆分关键词:搜索前必须从任务描述中提取核心实体和问题,默认拆分为 ≥ 2 组精准关键词(每组 ≤ 6 词)。仅当输入同时满足“单一实体、单一意图、≤ 6 词、无对比/多时间点/多问题维度”时允许单查询。用户指定搜索引擎不构成跳过拆分的理由,只改变路A第1级的顺序。禁止用原始长任务描述直接搜索。多主题/对比类("A vs B")必须拆成独立子查询各自搜索。技术类同时生成中/英两套。详见 references/search-quality.md。
  10. 🔇 静默搜索:启动搜索时最多说一句"正在搜索…",之后禁止向用户输出任何中间信息。不论降级链每一级返回什么(成功/失败/超时/空结果/验证码/被拦截),一律不汇报、不解释、不告知。所有结果收集完毕直接给出最终回答 + Sources。禁止的输出示例:"360搜索返回了X条结果""搜狗触发验证码,跳过""改用Bing RSS""第1级无结果,尝试第2级"——这类信息用户不需要看到。

路由决策

用户输入
  │
  ├─ 用户给了 URL/链接 → curl 直接抓取(curl -s -L "URL")
  │
  ├─ 指名搜索引擎("用百度搜XXX")→ 指名引擎作为路A第1级;无论成功/失败/超时,仍继续完整执行标准链的其余节点,并执行双路并行+质量评估。
  │
  ├─ 指名平台(B站/GitHub/V2EX/RSS)
  │   └─ 对应零配置工具(curl / gh CLI)
  │
  ├─ 搜索意图(显式"搜一下" 或 隐式知识缺口)→ 关键词强制拆分 → 双路并行(路A+路B)→ 质量评估
  │
  └─ 网页/视频/GitHub/RSS 等 → 对应 references

路由表

用户意图 分类 详细文档
四级通用搜索链 + 垂直搜索与专业数据源 + 不可直连渠道替代路径 search references/search-engines.md
B站 / V2EX social references/social.md
B站视频 video references/video.md
GitHub / GitHub Trending dev references/dev.md
网页阅读 / RSS web references/web.md
专业网址知识库(全领域) knowledge references/authoritative-sites.md
动态发现权威网址 discovery references/authoritative-url-discovery.md
搜索质量评估与多轮策略 quality references/search-quality.md

搜索流程(显式搜索 + 隐式搜索意图均走此流程)

⚠️ 搜索前自检

发起搜索前逐条确认,任一"否"则不得开始:

# 检查项
1 我拆分了关键词?(默认 ≥ 2 组、每组 ≤ 6 词;仅符合单查询例外时可为 1 组)
2 我没有用原始任务描述直接搜索?
3 我从降级链第 1 级(360)开始,不是直接跳到 web_search?
4 我同时启动了路B(知识库匹配),且通读了 authoritative-sites.md 全文再下结论?
5 我会逐级走完 360→搜狗→Bing RSS→web_search,综合所有节点结果?
6 如果正在想"直接 web_search 更快"→ 回到第 1 条。
用户输入("搜一下XXX" 或 "帮我了解XXX" 或 "XXX怎么样")
  │
  ├─ 第 1 步:关键词拆分(必须执行,禁止跳过)
  │   ├─ 去除语气词、疑问词、冗余修饰
  │   ├─ 提取核心实体(产品名、事件、术语、人名)
  │   ├─ 默认生成 ≥ 2 组搜索关键词(每组 ≤ 6 词;仅符合单查询例外时可为 1 组;禁止用原始长任务描述直接搜索)
  │   ├─ 多主题/对比类("A vs B")→ 必须拆成独立子查询各自搜索
  │   └─ 技术类同时生成中/英两套关键词
  │
  ├─ 第 2 步:首轮搜索
  │   ├─ 路 A:强制多源搜索链(四级全部走完;360/搜狗 web_fetch → curl,Bing RSS 用 curl,最后调用 web_search)
  │   │   ├─ 1) 360:web_fetch(www.so.com?q=关键词) → 超时/失败则 curl 兜底 → 保留结果,继续
  │   │   ├─ 2) 搜狗:web_fetch(sogou.com?query=关键词) → 超时/失败则 curl 兜底 → LLM取前5~8条,继续
  │   │   ├─ 3) Bing RSS:无论前两级是否成功均执行;curl -s "cn.bing.com?format=rss&q=%22关键词%22" → 保留结果,继续
  │   │   └─ 4) web_search(query="关键词") → 最后一级
  │   │   ⚠️ 综合 1~4 级所有有结果的节点信息。不可因前级成功而跳过后级。
  │   │
  │   └─ 路 B:知识库匹配 → 专业网址爬取
  │       ├─ 1) 通读 authoritative-sites.md 全文(22 分类,确认读完末尾再下结论)
  │       ├─ 2) ✅ 命中 → curl -s -L "{URL}"(并行 1~3 个)
  │       └─ 3) ❌ 未命中 → 动态发现(5 策略,详见 authoritative-url-discovery.md)
  │
  ├─ 第 3 步:结果质量评估(详见 references/search-quality.md)
  │   ├─ 📊 信息充足度:结果 ≥ 5 条且内容充实?
  │   ├─ 🎯 关联度:≥ 60% 结果直接回应问题核心?
  │   └─ 🛡️ 可靠性:来源为官方/权威/一手信息?
  │   │
  │   ├─ 综合评分 ≥ 0.7 → ✅ 合格,进入第 5 步
  │   └─ 综合评分 < 0.7 → ❌ 进入第 4 步
  │
  ├─ 第 4 步:多轮搜索(最多 3 轮)
  │   ├─ 第 2 轮:调整关键词
  │   │   ├─ 同义词替换 / 中英互译 / 放宽限定词
  │   │   └─ 重新搜索 → 质量评估
  │   │
  │   ├─ 第 3 轮:换搜索策略
  │   │   ├─ 使用新关键词重跑强制多源搜索链,四级全部走完并综合所有节点结果
  │   │   ├─ 或加 site: 限定 / 技术类 → GitHub gh search
  │   │   └─ 重新搜索 → 质量评估
  │   │
  │   └─ 3 轮后仍不合格 → 用最优轮次结果 + 标注不确定性
  │
  └─ 第 5 步:综合回答
      ├─ 优先呈现高质量来源的信息
      ├─ 标注来源类型:知识库预收录 / 🆕 动态发现 / 🔄 多轮优化
      ├─ 可靠性不足时明确告知用户
      └─ Sources 列出所有引用的具体 URL。禁止只写平台名("网易/新浪/36氪"),必须附完整文章链接。

### ⚠️ 回答前自检

| # | 检查项 |
|---|--------|
| 1 | Sources 中每个引用都附了具体 URL,不是只写平台名? |

注意:显式/隐式搜索均走完整流程。用户给 URL 时直接 curl 抓取,不走搜索流程。指名搜索引擎时该引擎作为路A第1级,仍需拆分关键词+双路并行+质量评估。


强制多源搜索链(按降级顺序排列,四级全部走完并综合回答)

必须逐级执行,不可因前级成功而停止。360、搜狗先 web_fetch,超时/失败则 curl 兜底;Bing RSS 直接使用 curl;web_search 直接调用内置搜索。综合所有节点信息回答。

# 无论返回什么(正常/超时/验证码/空内容),禁止输出状态。静默收集,继续下一级。

# === 第 1 级:360 搜索 ===
# 主路径:web_fetch
web_fetch(url="https://www.so.com/s?q=QUERY", extractMode="text")
# 兜底:curl(web_fetch 超时/失败时)
curl -s -L --max-time 5 "https://www.so.com/s?q=URL_ENCODED_QUERY" \
  -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"

# === 第 2 级:搜狗网页 ===
# 主路径:web_fetch
web_fetch(url="https://www.sogou.com/web?query=QUERY", extractMode="text")
# 兜底:curl(web_fetch 超时/失败时)
curl -s -L --max-time 5 "https://www.sogou.com/web?query=URL_ENCODED_QUERY" \
  -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"

# === 第 3 级:Bing RSS(强制执行;curl 原生,无需 web_fetch)===
# 所有 query 强制双引号包裹(%22),禁止 Bing 自行分词
curl -s "https://cn.bing.com/search?format=rss&q=%22URL_ENCODED_QUERY%22"

# === 第 4 级:web_search(最后一级)===
web_search(query="QUERY")

头条返回 1.8MB JS 代码,已移除。Windows CMD/PowerShell 用 curl.exe 替代 curl

其他专用引擎(直接 web_fetch)

# 公众号
web_fetch(url="https://weixin.sogou.com/weixin?type=2&query=QUERY", extractMode="text")

# 美股/宏观/IPO
web_fetch(url="https://seekingalpha.com/symbol/TICKER")
web_fetch(url="https://finviz.com/quote.ashx?t=TICKER")
web_fetch(url="https://www.bea.gov/news/current-releases")
web_fetch(url="https://www.iposcoop.com/ipo-calendar/")
web_fetch(url="https://stockanalysis.com/ipos/")
web_fetch(url="https://github.com/trending?since=weekly")

无法直连的引擎(降级路径)

# Wikipedia → Bing 缓存
web_fetch(url="https://cn.bing.com/search?q=site:zh.wikipedia.org+QUERY", extractMode="text")

# 百度/东方财富/集思录/财新 → web_search 降级
web_search(query="QUERY")

平台直达

用户给 URL/链接时,直接用 curl 抓取,不要搜索。

# curl 直接抓取网页
curl -s -L "URL"

# V2EX — 公开 API
curl -s "https://www.v2ex.com/api/topics/hot.json" -H "User-Agent: agent-reach/1.0"

# B站搜索 — 公开 API
curl -s -e "https://www.bilibili.com/" \
  "https://api.bilibili.com/x/web-interface/search/all/v2?keyword=QUERY&page=1"

# B站 — bili-cli(推荐,需 pipx install bilibili-cli)
bili search "query" --type video -n 5

# GitHub — gh CLI
gh search repos "query" --sort stars --limit 10

# RSS
python3 -c "import feedparser; [print(e.title) for e in feedparser.parse('URL').entries[:5]]"

环境检查

agent-reach doctor --json   # 平台渠道状态

工作区规则

使用 /tmp/ 存放临时输出。不要在 agent workspace 创建文件。

详细文档