| name | super-search |
| description | 通用网页搜索、爬取、交叉验证与研究报告生成。用户说 search、搜索、查一下、帮我搜、调研、collect information、find sources、verify facts、交叉比对、验证真实性、收集资料、整理信息、查证某个说法、看看网上怎么说、有没有证据支持、信息可信度如何时触发。自动搜索多源内容,抓取并缓存,分析内容质量(评分仅作参考,低质直接舍弃),交叉比对事实一致性,对高严谨度内容(医学、法律、金融等)自动触发对抗性审查。最终输出结构化研究报告到指定目录。≠ hv-analysis(那是深度产品/公司分析框架)。 |
Super Search
IRON LAW: NEVER GENERATE ANSWERS FROM TRAINING DATA. Every factual claim in the report must be traceable to at least one URL fetched during this session.
核心定位
通用网页调研与事实核查工具。与 hv-analysis(强制横纵轴框架、产出 10K-30K 字 PDF 的深度产品/公司研究)的关键差异:
| hv-analysis | Super Search |
|---|
| 研究框架 | 纵轴+横轴+交叉洞察(强制) | 无预设框架,按需灵活 |
| 适用范围 | 产品/公司/概念/人物 | 任意主题 |
| 报告深度 | 10K-30K 字 PDF | 轻量到中等,按需 |
| 对抗审查 | 鼓励批评思考(非系统化) | 所有主题通用:时效性+真实性双重审查 |
| 缓存 | 无 | 内置 TTL 缓存层 |
Workflow
Copy this checklist and check off items as you complete them:
Super Search Progress:
Step 1: Environment Check ⚠️ REQUIRED
Ask: 哪些 search/fetch 工具当前可用?
运行 node dist/env-check.mjs 输出环境中可用的 search/fetch 工具列表。
如果没有任何 search 工具且没有任何 fetch 工具同时可用:
- 立即中断,告知用户缺少必要能力,列出需要安装的工具
如果只有 fetch 无 search:
⚠️ 不要在此步骤假设任何工具的可用性。
工具可用性铁律:记录所有可用工具的完整列表(如 tinyfish-search_search、webfetch 等)。后续每个搜索/抓取操作优先使用主要工具;失败时依次切换到列表中的下一个工具,直到成功或全部尝试完毕。
Step 2: Plan
解析用户输入,确定:
- 核心主题与搜索关键词
- 搜索深度:
quick(3-5 源)、normal(8-12 源)、deep(15-20 源)
- 是否需要对抗审查(见
references/review-triggers.md)
- 输出文件路径(用户指定或默认
./research-output/{topic-slug}-{date}.md)
- 缓存目录(用户指定或默认
~/.super-search-cache/)
Ask: "对以下问题,我应该额外搜索哪些对立面/反面/批评性关键词?"
例如:搜索"AI 取代程序员"时,同时搜索"AI 不会取代程序员的理由""AI 编程工具的局限性"。
Step 3: Search
运行 node dist/search.mjs --topic '...' --depth normal --cache-dir '...' 生成搜索计划。
根据计划执行搜索。工具降级策略:
- 优先使用主要 search 工具(如 tinyfish-search_search)
- 该工具返回错误/超时/无结果 → 自动切换到下一可用 search 工具
- 全部 search 工具失败 → 将搜索词作为 URL 尝试直接 fetch(如 site:xxx 搜索变体),或跳过该关键词并记录
- 每个搜索词至少尝试 2 种不同的工具或查询变体
数据充分性铁律:每个关键维度(如"价格""规格""政策")至少需要 2 个来源覆盖。不足时立即触发搜索引擎补充发现——使用所有可用 search 工具,变换关键词(加"对比""排行""价格表""2026"等后缀),迭代搜索直到找到足够数据或确认该维度确实没有公开可查的数据。禁止在数据不足时直接跳过该维度。
Step 4: Fetch
运行 node dist/fetch.mjs --cache-dir '...' 检查缓存。
- 命中缓存 → 直接使用缓存内容(
node dist/cache.mjs get --url "..." --type fetch)
- 未命中 → 抓取内容。工具降级策略:
- 优先使用主要 fetch 工具(如 webfetch 或 tinyfish-search_fetch)
- 返回 403/404/Transport Error/JS 空壳 → 自动切换到下一个可用 fetch 工具
- 全部 fetch 工具失败 → 进入 搜索引擎替代抓取 流程(见下方)
- 抓取后必须立即回写缓存:
默认 TTL:搜索结果 30min,网页内容 24h。
Step 5: Analyze
运行 node dist/analyze.mjs 对每条内容评分。
质量评估维度(见 references/quality-criteria.md):
- 来源权威度(官方 > 知名媒体 > 个人博客 > 不可信;涉及数值/规格/定价时,必须优先采用官方页面数据)
- 信息完整度(日期、作者、引用、数据)
- 内容新鲜度
- 语言质量(排除机翻/低质内容)
评分仅作相对参考,评估后明确低价值的内容直接舍弃。
Step 6: Cross-Reference
对关键事实进行多源比对:
- 一致 → 标注"多源确认"
- 矛盾 → 立即触发事实核查:直接 fetch 各方引用的原始来源/官方页面,以官方第一手数据为准裁定。多个第三方来源的一致意见不能覆盖官方页面的明文数据
- 孤立 → 只有一个源提及,标注"待验证",同时尝试搜索官方来源确认
第三方转载数据的比对标准:
- 第三方数据至少需要 2 个独立来源 交叉确认,才可标注为"已核实"
- 第三方来源间的矛盾不能通过"多数投票"解决 —— 必须尝试找回原始官方数据
- 仅有一个第三方来源的数据,标注为"待验证(第三方单源)",置信度最高 medium
输出置信度矩阵。
事实核查铁律:当数值/规格类声明出现矛盾时,必须直接抓取官方定价页/规格页作为终极裁决依据,不得仅凭第三方文章数量做判断。
Step 7: Review ⚠️ REQUIRED(对抗性审查)
审查不是可选的附加项,而是保证报告质量的必要环节。以事实为第一要义,不因追加速而牺牲准确性。
审查的两个维度:
时效性审查(所有主题通用)
Ask:
- 每条数据的发布时间是什么?距今多久?
- 是否存在比"最新"数据更旧的过时信息被引用?
- 第三方转载文章的价格/规格数据是否标注了更新日期?
- 如果关键数据来源日期 > 6 个月前,触发补充搜索确认是否有更新版本
真实性审查(所有主题通用)
Ask:
- 这条声明的原始来源能否追溯到官方页面?
- 如果数据来自第三方转载,转载者是否有动机扭曲数据(如推广佣金/商业合作)?
- 不同来源对同一事实的描述是否一致?不一致时哪个更可信?
- 本报告中哪些声明存在"孤立来源"风险?
自动触发(更严格的反驳搜索 + 官方核实):
- 医学、法律、金融、安全等高风险主题
- 物理、化学、数学等科学主题(从基础原理出发核查)
- 关键发现置信度低于阈值
- Step 6 交叉验证中发现矛盾或孤立声明
- 涉及金钱的声明(定价、费率、佣金)—— 必须双源以上确认
运行 node dist/review.mjs 执行对抗审查:
- 对每个主要结论搜索反驳证据
- 检查来源多样性
- 标注遗漏风险
- 如发现重大疏漏,回到 Step 3 补充搜索
Step 8: Report
运行 node dist/report.mjs --output 'path/to/report.md' 生成报告。
报告模板见 references/report-templates.md。
Step 9: Verify
交付前检查:
Anti-Patterns
- 不检查环境可用性就直接搜索
- 用模型训练数据代替实际搜索结果
- 只看第一条搜索结果就下结论
- 跳过缓存检查重复抓取同一 URL
- 对医学/法律/金融声明不触发对抗审查
- 把质量评分当绝对标准而非相对参考
- 报告中的事实声明不附来源 URL
- 对高严谨主题不标注置信度
- 引用第三方文章中的数值而不核实官方来源
- 交叉验证发现矛盾时不抓取官方页面做二次确认
- 在对比表/详情中优先使用第三方链接而非官方链接
- 发现孤立声明后不做补充搜索就直接标注"待验证"并放过
- 一个 search/fetch 工具失败就放弃,不尝试其他可用工具
- 抓取失败的直接用 AI 训练数据中的记忆"补全"数据
- 只找到一个第三方转载来源就采纳数据,不做多源交叉比对
- 第三方来源间的矛盾用"多数投票"解决而非追溯原始官方数据
- 发现关键维度数据缺失时不通过搜索引擎补充搜索,直接标注为"信息不足"放过
- 引用 .cc/.xyz/.top/.tk 等低成本 TLD 域名作为官方来源而不做二次核实
- 将代理商/推广站(如 xxx.cc)的内容等同于官方信息
- 因担心"查太多浪费时间"而跳过时效性或真实性的审查步骤
- 对涉及定价/费率/佣金的声明只用一个来源确认
脚本设计原则
- 脚本输出 JSON 指令,由 AI 执行实际的 search/fetch 工具调用
- 脚本不直接依赖任何具体的 search/fetch API
- 缓存路径可由用户通过
--cache-dir 覆盖
- 所有时间敏感操作记录时间戳