{"id":"1bc4d18e-5b8a-4774-8996-35e87c4a9468","entityType":"agent","slug":"clawhub-hellohuanghuang-vsp","name":"Verified Search Pro","canonicalUrl":"https://www.xpersona.co/agent/clawhub-hellohuanghuang-vsp","canonicalPath":"/agent/clawhub-hellohuanghuang-vsp","generatedAt":"2026-10-09T17:19:34.035Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T10:01:22.467Z","emptyReason":null},"description":"可信研究助理，调用多引擎搜索进行资料搜集，降噪过滤，交叉验证，生成结构化的可信Markdown报告与证据包。 Skill: Verified Search Pro Owner: hellohuanghuang Summary: 可信研究助理，调用多引擎搜索进行资料搜集，降噪过滤，交叉验证，生成结构化的可信Markdown报告与证据包。 Tags: latest:0.1.0 Version history: v0.1.0 | 2026-07-21T13:00:44.910Z | auto verified-search-pro v2.1.1 初始发布 - 多引擎搜索（腾讯云WSA、百度千帆、Tavily、必应、搜狗、DuckDuckGo）集成，支持场景级引擎优选与降级机制。 - 自动清洗、分级、降噪与交叉验证，输出可靠的 Markdown 研究报告与 claims-json/evidence-pack 证据包。 - 明确的信息源分级与置信度定级流程，内置分步流程与检查点，提升资料质量与可复核性。 - 按需文档分层加载，支持大规模调研与自动","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 3.1K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17a2myp5wef6knn2ej6smhee987z1af:vsp","sourceUrl":"https://clawhub.ai/hellohuanghuang/vsp","homepage":"https://clawhub.ai/hellohuanghuang/skills/vsp","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/hellohuanghuang/vsp","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/hellohuanghuang/skills/vsp","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":70,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"可信研究助理，调用多引擎搜索进行资料搜集，降噪过滤，交叉验证，生成结构化的可信Markdown报告与证据包。 Skill: Verified Search Pro Owner: hellohuanghuang Summary: 可信研究助理，调用多引擎搜索进行资料搜集，降噪过滤，交叉验证，生成结构化的可信Markdow"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T10:01:22.467Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T10:01:22.467Z","emptyReason":null},"stars":null,"forks":null,"downloads":3057,"packageName":null,"latestVersion":"0.1.0","tractionLabel":"3.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T10:01:22.467Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T10:01:22.467Z","lastCrawledAt":"2026-10-09T10:01:22.467Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T10:01:22.467Z","lastVerifiedAt":null,"highlights":[{"version":"0.1.0","createdAt":"2026-07-21T13:00:44.910Z","changelog":"verified-search-pro v2.1.1 初始发布 - 多引擎搜索（腾讯云WSA、百度千帆、Tavily、必应、搜狗、DuckDuckGo）集成，支持场景级引擎优选与降级机制。 - 自动清洗、分级、降噪与交叉验证，输出可靠的 Markdown 研究报告与 claims-json/evidence-pack 证据包。 - 明确的信息源分级与置信度定级流程，内置分步流程与检查点，提升资料质量与可复核性。 - 按需文档分层加载，支持大规模调研与自动上下文控制。 - 支持定制 API 密钥与环境变量，缺省时回落免费搜索引擎。 - 适配 Codex、Claude Code、OpenClaw 等多平台，适用于深度验证、政策追踪、背调等多种场景。","fileCount":112,"zipByteSize":308132}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17a2myp5wef6knn2ej6smhee987z1af:vsp","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hellohuanghuang-vsp/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hellohuanghuang-vsp/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hellohuanghuang-vsp/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-hellohuanghuang-vsp/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-hellohuanghuang-vsp/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-hellohuanghuang-vsp/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T17:19:34.033Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hellohuanghuang-vsp/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hellohuanghuang-vsp/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hellohuanghuang-vsp/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hellohuanghuang-vsp/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T10:01:22.467Z","emptyReason":null},"readme":"Skill: Verified Search Pro\n\nOwner: hellohuanghuang\n\nSummary: 可信研究助理，调用多引擎搜索进行资料搜集，降噪过滤，交叉验证，生成结构化的可信Markdown报告与证据包。\n\nTags: latest:0.1.0\n\nVersion history:\n\nv0.1.0 | 2026-07-21T13:00:44.910Z | auto\n\nverified-search-pro v2.1.1 初始发布\n\n- 多引擎搜索（腾讯云WSA、百度千帆、Tavily、必应、搜狗、DuckDuckGo）集成，支持场景级引擎优选与降级机制。\n- 自动清洗、分级、降噪与交叉验证，输出可靠的 Markdown 研究报告与 claims-json/evidence-pack 证据包。\n- 明确的信息源分级与置信度定级流程，内置分步流程与检查点，提升资料质量与可复核性。\n- 按需文档分层加载，支持大规模调研与自动上下文控制。\n- 支持定制 API 密钥与环境变量，缺省时回落免费搜索引擎。\n- 适配 Codex、Claude Code、OpenClaw 等多平台，适用于深度验证、政策追踪、背调等多种场景。\n\nArchive index:\n\nArchive v0.1.0: 112 files, 308132 bytes\n\nFiles: _meta.json (122b), .claude (0b), .claude/CLAUDE.md (11237b), .codex (0b), .codex/instructions.md (11822b), .github (0b), .github/ISSUE_TEMPLATE (0b), .github/ISSUE_TEMPLATE/bug_report.md (473b), .github/ISSUE_TEMPLATE/feature_request.md (443b), .github/ISSUE_TEMPLATE/new_domain.md (602b), .github/ISSUE_TEMPLATE/new_engine.md (474b), .gitignore (430b), assets (0b), assets/report-template.md (3127b), benchmark (0b), benchmark/evaluate.py (3842b), benchmark/fixtures (0b), benchmark/fixtures/2026_年新能源汽车补贴政策.json (44614b), benchmark/fixtures/2026_年新能源车销量增长.json (45209b), benchmark/fixtures/GPT-5_发布时间和能力.json (39432b), benchmark/fixtures/OpenAI_CEO_是谁.json (18475b), benchmark/fixtures/README.md (1890b), benchmark/fixtures/summary.json (2847b), benchmark/fixtures/中国新能源汽车渗透率目标.json (91951b), benchmark/fixtures/固态电池技术的争议与观点.json (105334b), benchmark/queries.json (1655b), benchmark/README.md (2182b), benchmark/run.py (4426b), CHANGELOG.md (30445b), CODE_OF_CONDUCT.md (865b), config (0b), config/default.json (3558b), CONTRIBUTING.md (4555b), examples (0b), examples/fact_check.sh (379b), examples/host_input.sh (1403b), examples/README.md (1600b), examples/research_report.sh (392b), examples/sample_host_results.json (751b), LICENSE (1081b), README_EN.md (18896b), README.md (20153b), references (0b), references/01-search-strategy.md (6908b), references/02-source-ranking.md (2461b), references/03-confidence-rubric.md (2410b), references/04-noise-filtering.md (2395b), references/05-output-template.md (4375b), references/06-fallback-guide.md (4539b), references/07-cross-platform.md (5964b), references/08-trust-quality-framework.md (4781b), references/09-evaluation-benchmark.md (3338b), references/10-api-setup.md (6504b), schemas (0b), schemas/evidence-pack.schema.json (10882b), scripts (0b), scripts/baidu_api_adapter.py (10960b), scripts/cache.py (4302b), scripts/config.py (4036b), scripts/cross_verify.py (10483b), scripts/date_extract.py (6381b), scripts/domain_registry.py (3919b), scripts/html_parser.py (26608b), scripts/network.py (5952b), scripts/result_fusion.py (10803b), scripts/search_engine.py (46345b), scripts/sogou_url_decoder.py (6295b), scripts/tavily_adapter.py (3201b), scripts/trust_model.py (25169b), scripts/wechat_fetch (0b), scripts/wechat_fetch.py (3782b), scripts/wechat_fetch/wx-article-fetch.js (9547b), scripts/wsa_adapter.py (9767b), skill-card.md (2948b), SKILL.md (16832b), tests (0b), tests/__init__.py (48b), tests/fixtures (0b), tests/fixtures/baidu_sample.html (882b), tests/fixtures/bing_real_sample.html (9711b)\n\nFile v0.1.0:SKILL.md\n\n***\n\nname: verified-search-pro\nlicense: \"MIT\"\ndescription: \"面向深度调研和事实核查的可信研究助理。在宿主搜索能力的基础上，调用腾讯云联网搜索（WSA）、百度（千帆）、Tavily、必应、搜狗、DuckDuckGo 多引擎搜索，将资料清洗、降噪、交叉验证为 Markdown 报告与 claims-json/evidence-pack 证据包。触发场景：调研、验证、确认、政策追踪、资料质检、证据包、背调、交叉验证、多搜一下、搜一下、查一下。\"\ncompatibility: \"Requires Python 3.8+ and internet access. Optional API engines: TAVILY\\_API\\_KEY, TENCENTCLOUD\\_SECRET\\_ID + TENCENTCLOUD\\_SECRET\\_KEY, BAIDU\\_API\\_KEY (all unset falls back to free web engines). Optional: Node.js for WeChat fetching.\"\nallowed-tools: \"Read, Bash, Write, SearchReplace, RunCommand\"\nmetadata:\nversion: \"2.1.1\"\nauthor: \"黄艾伦（那个谁）\"\ntags:\n\\- \"搜索\"\n\\- \"信息验证\"\n\\- \"多引擎\"\n\\- \"交叉验证\"\n\\- \"降噪\"\n\\- \"信息源分级\"\n\\- \"Tavily\"\n\\- \"必应\"\n\\- \"搜狗\"\n\\- \"DuckDuckGo\"\nplatforms:\n\\- \"openclaw\"\n\\- \"claude-code\"\n\\- \"codex\"\n\\- \"hermes\"\nopenclaw:\nemoji: \"🔍\"\nrequires:\nbins: \\[\"python3\"]\nenv: \\[\"TAVILY\\_API\\_KEY\", \"TENCENTCLOUD\\_SECRET\\_ID\", \"TENCENTCLOUD\\_SECRET\\_KEY\", \"BAIDU\\_API\\_KEY\"]\ninstall: \\[]\n------------\n\n# Verified Search Pro v2.1.1 · 可信研究助理\n\n> 从“搜到资料”到“确认资料能不能用”。搜索工具负责找资料，本 Skill 负责质检资料。\n> 默认交付：Markdown 给人阅读，claims-json/evidence-pack 给 agent、测试和后续工作流使用。平台适配：Codex / Claude Code / 通用 Prompt；OpenClaw 等个人环境作为可选示例。\n\n***\n\n## 触发方式\n\n当用户请求涉及以下场景或关键词时，优先使用本 Skill 处理搜索与质检：\n\n**触发场景**：确认真相、验证搜索、调研、政策追踪、机构/项目研究、信息验真、竞品追踪、人物/机构背调、多源比对。\n\n**触发关键词**：调研、验证、确认、搜索、政策追踪、资料质检、证据包、背调、交叉验证、多搜一下、搜一下、查一下。\n\n## 快速导航（Progressive Disclosure）\n\n本 Skill 采用分层加载架构——按需读取，避免上下文膨胀。默认使用 `--budget auto` 控制输出大小（256k 为上限），由轻量规则选择 `lite / standard / deep`，自动匹配任务规模。\n\n**表述纪律**：本文件只给索引与铁律；凡涉及引擎清单、场景策略、配置步骤等易变细节，一律以 references 对应文件为唯一事实源，本文件不自行概括，避免两边表述漂移。\n\n| 当前阶段                   | 加载文档                                                                      | 说明                                      |\n| ---------------------- | ------------------------------------------------------------------------- | --------------------------------------- |\n| **Phase 1: 任务拆解**      | `references/01-search-strategy.md`                                        | 路由逻辑、场景引擎表、查询拆分（引擎策略唯一事实源）            |\n| **Phase 2-3: 搜索获取与降噪** | `references/02-source-ranking.md` + `references/04-noise-filtering.md`    | 信息源分级、降噪流程、去重规则                         |\n| **Phase 4: 验真比对**      | `references/03-confidence-rubric.md` + `references/04-noise-filtering.md` | 置信度定级、交叉验证、矛盾处理                         |\n| **Phase 5: 交付输出**      | `references/05-output-template.md` + `assets/report-template.md`          | Markdown + claims-json 默认交付             |\n| **无 API 密钥或引擎被拦截**    | `references/06-fallback-guide.md`                                         | 降级方案（降级唯一事实源）                           |\n| **API 配置**             | `references/10-api-setup.md`                                              | Tavily / 腾讯云 WSA / 百度千帆申请与配置引导          |\n| **接入无专用适配的平台**         | `references/07-cross-platform.md`                                         | 通用 Prompt 注入（Claude Code / Codex 请改用 `.claude/` / `.codex/` 专用文件） |\n| **2.1 方法论审计**          | `references/08-trust-quality-framework.md`                                | Claim-centric 验证、OSINT、ACH、SIFT、信号/噪声框架 |\n| **2.1 评估基准**           | `references/09-evaluation-benchmark.md`                                   | benchmark 场景、质量指标、发布门禁                  |\n\n***\n\n## v2.1 产品边界\n\n* **用户视角**：可信研究助理，先找资料，再把资料质检成可复核的研究包。\n\n* **Agent 视角**：资料前处理器，输出精简、带标签、可继续推理的上下文，而不是原始链接堆。\n\n* **搜索底盘**：够用且稳；分层为「宿主搜索地基（`--input-results`，最基础的兜底）→ L1 API 主力（tencent\\_wsa 中文主力 + baidu\\_api 百度官方源 + tavily 国际/英文向）→ L2 免费 HTML 引擎兜底（DuckDuckGo、必应、搜狗；头条为低频熔断引擎，不进默认列表）」，Google 暂不进入默认能力。场景级引擎选择以 `references/01-search-strategy.md` 为唯一事实源。\n\n* **安全分区**：区分可信结论、观点地图、常见误区、争议不确定、时间演进，非可信材料不得被自动提升为事实。\n\n* **性能边界**：不轮询所有搜索源，不默认抓全文，不绕过验证码或登录限制。\n\n***\n\n## 核心工作流（5 阶 16 步）\n\n### Phase 1: 任务拆解（检查点 1）\n\n**目标**：理解用户需求，拆解信息模块，确定搜索策略。\n\n| 步骤  | 动作                                                                                      | 输出   |\n| --- | --------------------------------------------------------------------------------------- | ---- |\n| 1.1 | 分析用户意图：事实核查？调研？追踪？                                                                      | 意图分类 |\n| 1.2 | 拆解信息模块：事实、观点、误区、争议、时间演进分别需要什么？                                                          | 模块清单 |\n| 1.3 | 按 `references/01-search-strategy.md` 的路由逻辑与场景表确定引擎组合；确认宿主输入（`--input-results`）是否可用      | 引擎策略 |\n| 1.4 | 生成搜索关键词：主查询 + 变体查询                                                                      | 查询列表 |\n| 1.5 | **强制**：调用 `scripts/search_engine.py` 前，先用 LLM 提取 2-5 个核心搜索概念，并通过 `--search-concepts` 传入 | 概念列表 |\n\n**检查点 1**：`interactive` 模式下向用户确认；`batch` 模式下连续执行并在报告中汇总。\n\n**关键约束**：\n\n* 如果用户输入是中文自然语言疑问句，**必须先提取核心概念**，再调用 `search_engine.py`。\n\n* 直接传入中文原句而不带 `--search-concepts` 被视为**违规调用**。\n\n* 脚本会在 stderr 输出警告，Agent 应主动补全 concepts，不得忽略。\n\n**示例**：\n\n* 输入：\"如何消除比熊泪痕？\"\n\n* 概念：`\"比熊,泪痕,消除方法\"`\n\n* 调用：\n\n  ```bash\n  python3 scripts/search_engine.py \"如何消除比熊泪痕？\" --search-concepts \"比熊,泪痕,消除方法\" --verify --output claims-json\n  ```\n\n**加载**：`references/01-search-strategy.md` 获取完整策略指南。\n\n***\n\n### Phase 2: 搜索获取（检查点 2）\n\n**目标**：并行搜索多引擎，收集原始结果。\n\n| 步骤  | 动作                                    | 输出    |\n| --- | ------------------------------------- | ----- |\n| 2.1 | 并行调用所选引擎，并读取 `--input-results` 宿主搜索结果 | 原始结果池 |\n| 2.2 | 记录来源引擎、时间戳、原始得分和 engine health        | 元数据   |\n| 2.3 | 微信文章特殊处理（如需要）                         | 内容抓取  |\n| 2.4 | 汇总原始结果数量与来源分布                         | 统计摘要  |\n\n**检查点 2**：`interactive` 模式下确认；默认 `auto` 由 agent 判断是否需要停顿。\n\n**调用脚本**：`scripts/search_engine.py`（主入口）\n\n***\n\n### Phase 3: 降噪清洗（检查点 3）\n\n**目标**：去重、过滤、分级，保留高质量信息。\n\n| 步骤  | 动作                  | 输出    |\n| --- | ------------------- | ----- |\n| 3.1 | URL 归一化去重           | 去重结果  |\n| 3.2 | 内容指纹去重（15 词 MD5）    | 去重结果  |\n| 3.3 | 文本相似度去重（阈值 0.85）    | 去重结果  |\n| 3.4 | 信息源分级过滤（A-E 级）      | 过滤后结果 |\n| 3.5 | 域名权威性评分加权           | 加权排序  |\n| 3.6 | 跨域名转载检测（same-story） | 转载标注  |\n\n**检查点 3**：在 `batch` 模式下不打断用户，但必须在最终报告中交代降噪结果。\n\n**加载**：`references/02-source-ranking.md` 获取信息源分级规则。\n**加载**：`references/04-noise-filtering.md` 获取降噪流程细节。\n**调用脚本**：`scripts/result_fusion.py`\n\n***\n\n### Phase 4: 验真比对（检查点 4）\n\n**目标**：交叉验证，识别矛盾，定级置信度。\n\n| 步骤  | 动作                    | 输出    |\n| --- | --------------------- | ----- |\n| 4.1 | 提取关键实体（中文词/英文专有词/数字）  | 实体列表  |\n| 4.2 | 反向验证：检查结果内容是否包含关键实体   | 验证得分  |\n| 4.3 | 多源一致性检查：同一事实在不同来源中的表述 | 一致性报告 |\n| 4.4 | 矛盾信息标注：发现冲突时标记并说明     | 矛盾标注  |\n| 4.5 | 置信度定级（A-E）            | 定级结果  |\n\n**检查点 4**：高风险、范围模糊或证据冲突明显时使用 `interactive`；一般调研可连续执行。\n\n**加载**：`references/03-confidence-rubric.md` 获取置信度定级标准。\n**调用脚本**：`scripts/cross_verify.py`\n\n***\n\n### Phase 5: 要点定锚与交付\n\n**目标**：提炼核心结论，生成结构化报告。\n\n| 步骤  | 动作                                        | 输出           |\n| --- | ----------------------------------------- | ------------ |\n| 5.1 | 要点锚定：提炼可信结论，非可信材料分区放置                     | 要点清单         |\n| 5.2 | 标注每个要点的置信度、来源可靠性、时效状态                     | 置信度标注        |\n| 5.3 | 标注观点地图、常见误区、争议不确定、时间演进                    | 分区标注         |\n| 5.4 | 生成 Markdown 报告和 claims-json/evidence-pack | 人读报告 + 机器读证据 |\n| 5.5 | 按用户环境交付；默认保存本地文件                          | 交付确认         |\n\n**加载**：`references/05-output-template.md` 获取输出规范。\n**加载**：`assets/report-template.md` 获取报告模板。\n\n***\n\n## 信息源分级（内置铁律）\n\n| 等级    | 来源类型                    | 使用规则          | 置信度    |\n| ----- | ----------------------- | ------------- | ------ |\n| **A** | 政府官网、权威媒体、学术期刊、品牌/机构官方  | 优先使用，可直接引用    | **高**  |\n| **B** | 知名学者/评论员/媒体人的署名内容       | 可用，需确认作者身份    | **中高** |\n| **C** | 一般 UGC（知乎高赞、一般公众号、行业论坛） | 仅作观点参考，必须交叉验证 | **中**  |\n| **D** | 百科/未署名自媒体、内容农场          | 极度谨慎，仅用于基础概念  | **低**  |\n| **E** | 匿名论坛、营销号、无来源截图          | 不使用           | **极低** |\n\n**知乎/微信公众号/一般百科**：不一刀切排除，但默认降级到 C-D 级，需作者身份验证后提升。\n\n**加载**：`references/02-source-ranking.md` 获取完整分级规则。\n\n***\n\n## 置信度定级（内置标准）\n\n| 等级    | 定义                | 使用规则             |\n| ----- | ----------------- | ---------------- |\n| **A** | 2+ 权威来源独立确认       | 可直接引用，无需额外说明     |\n| **B** | 1 权威来源或 2+ 一般来源一致 | 可引用，建议标注来源       |\n| **C** | 单一来源，无矛盾          | 可引用，必须标注\"据 X 报道\" |\n| **D** | 存在矛盾或辟谣信息         | 必须标注争议，不得作为定论    |\n| **E** | 明确不实或无法验证         | 不使用，标注\"信息不足\"     |\n\n**宁少勿假原则**：信息不足时明确标注，不强行生成 A/B 级结论。\n\n**加载**：`references/03-confidence-rubric.md` 获取完整定级标准。\n\n***\n\n## 降级方案（内置适配）\n\n### 场景 1: API 层自检（tencent\\_wsa / baidu\\_api / tavily 未配置）\n\n* 自动检测 `TENCENTCLOUD_SECRET_ID` / `TENCENTCLOUD_SECRET_KEY`、`BAIDU_API_KEY` 与 `TAVILY_API_KEY` 环境变量\n\n* 已配置的 API 引擎自动启用；未配置的全部跳过时，输出 JSON 的 `tips` 字段给出 `tencent_wsa_missing` / `baidu_api_missing` / `tavily_missing` 提示\n\n* 读到提示时**阻塞式询问用户**，引导按 `references/10-api-setup.md` 完成配置，等待用户明确选择后再继续\n\n* 用户选择跳过时：使用可用 Web 搜索（DuckDuckGo、必应、搜狗）\n\n* 性能影响：结果质量与中文覆盖可能降低，但流程完整\n\n### 场景 2: 无网络连接\n\n* 检测网络可达性\n\n* 不可达时：返回错误提示，建议手动搜索\n\n### 场景 3: 无 Node.js（微信抓取）\n\n* 微信文章抓取失败时跳过\n\n* 普通网页内容不受影响\n\n### 场景 4: 免费引擎（DuckDuckGo/必应/搜狗/头条）反爬或验证码\n\n* 检测验证码、安全验证页或异常跳转\n\n* 标注 `engine_status: blocked`，不当作普通 0 结果\n\n* 不绕过验证码、伪造 Cookie 或使用代理池\n\n**加载**：`references/06-fallback-guide.md` 获取完整降级方案。\n\n***\n\n## 输出规范（Output Spec）\n\n### 默认输出\n\n* **格式**：Markdown（`.md`）+ `claims-json`\n\n* **编码**：UTF-8\n\n* **标题层级**：严格使用 `#` / `##` / `###` / `####`，禁止跳级\n\n* **语言**：跟随用户上下文；引用保留原文，必要时提供翻译或解释\n\n* **语气**：专业、客观、有依据\n\n### 2.1 结构化输出\n\n* **格式**：`claims-json`\n\n* **用途**：跨 agent 交接、benchmark 评估、证据链审计\n\n* **包含**：可信结论、观点地图、常见误区、争议不确定、时间演进、evidence、source reliability、information credibility、freshness、limitations\n\n* **Schema**：`schemas/evidence-pack.schema.json`\n\n* **命令**：`python3 scripts/search_engine.py \"query\" --mode auto --budget auto --checkpoint auto --verify --output claims-json`\n\n* **宿主输入**：`python3 scripts/search_engine.py \"query\" --input-results host_results.json --engines none --output claims-json`\n\n* **自检**：`python3 scripts/search_engine.py --doctor`\n\n### 交付方式\n\n| 目标                                 | 处理方式             | 状态 |\n| ---------------------------------- | ---------------- | -- |\n| **本地 Markdown**                    | 默认保存或输出 `.md` 报告 | 默认 |\n| **claims-json**                    | 默认输出可复核证据包       | 默认 |\n| **飞书/Notion/Google Docs/Obsidian** | 按用户环境作为可选交付适配    | 可选 |\n\n**加载**：`references/05-output-template.md` 获取输出规范。\n\n***\n\n## 检查点机制（自适应控制）\n\n支持 `--checkpoint auto|batch|interactive`。默认 `auto`：清晰调研可连续执行后汇报阶段摘要；范围模糊、高风险或用户要求控制时切换 `interactive`；明确要求高效完成时使用 `batch`。检查点是质量控制机制，不是所有环境都必须机械停顿。\n\n***\n\n## 版本与元信息\n\n* **当前版本**：v2.1.1\n\n* **发布状态**：v2.1.1 正式版\n\n* **稳定基线**：v2.1.1（2026-07-19）\n\n* **作者**：黄艾伦（那个谁）\n\n* **许可证**：MIT\n\n* **创建日期**：2026-06-05\n\n* **更新日志**：`CHANGELOG.md`\n\n* **跨平台适配**：`references/07-cross-platform.md`（仅接入无专用适配的平台时读取；搜索运行时不加载）\n\n* **MCP-ready**：输出有 JSON Schema，可被任意 agent / MCP server 消费\n\n***\n\n> **方法论来源**：黄艾伦信息搜索方法论（多元验证、反向论证、语义分析） + Nuwa Skill 检查点机制 + Tavily 高级搜索最佳实践 + OSINT / ACH / SIFT / source reliability 方法论审计轨\n> **适用平台**：Codex / Claude Code / 通用 Prompt；OpenClaw / Hermes 等作为可选适配示例\n> **技术约束**：纯 Python 标准库，零第三方依赖，Python 3.8+\n\nFile v0.1.0:benchmark/fixtures/README.md\n\n# Golden Report 基线（benchmark/fixtures/）\n\n本目录固化了 VSP 的 golden report 基线，作为后续迭代的回归对照基准。\n\n## 基线来源\n\n| 项目 | 说明 |\n|------|------|\n| 生成日期 | 2026-07-17 |\n| 引擎组合 | `tencent_wsa,tavily`（双 API 真实路径，非 mock） |\n| 查询集版本 | `benchmark/queries.json` 带 `concepts` 字段的版本（6 条中文查询，含 mode/budget/expected 门禁期望） |\n| 生成方式 | `python3 benchmark/run.py --engines tencent_wsa,tavily --output-dir benchmark/results-api` |\n| 审核状态 | 甲方已审核批准后固化 |\n\n## 文件清单\n\n- 6 个查询结果 JSON：与 `benchmark/queries.json` 中 6 条查询一一对应（fresh-fact / policy-claim / perspective-mapping / source-laundering / temporal-drift / technical-claim）\n- `summary.json`：当次运行的聚合摘要。其中 `result_path` 字段保留生成时的原始相对路径记录（指向 `benchmark/results-api/`，属运行产物，未做改写）\n\n## 内容检查结论（固化时已执行）\n\n- 已 grep 确认**不含任何密钥**（无 `TAVILY_API_KEY` / `SECRET` / `AKID` / `bce-v3` / `ALTAK` / `tvly-` / `Bearer` 字样）\n- 已确认**不含本机绝对路径**（无 `/Users/` 前缀字段）\n\n## 用途与变更规则\n\n1. 用作后续迭代的回归对照基准（如 prompt/解析器/信任模型变更前后 diff）。\n2. **更换基线需甲方/维护者审核**，并在 PR 中说明理由（见 `CONTRIBUTING.md` 发布门禁）。\n3. 注意：基线内容反映生成时点的代码行为。若后续版本对用户可见文案做合法变更（如 v2.1.0-beta.2 限制标注中文化），与基线 diff 时出现对应差异属预期，评估时应以最新 `evaluate.py` 门禁为准，而非逐字节比对。\n4. `benchmark/results*/` 为本地运行产物，不入库；本目录是唯一入库的结果基线。\n\nFile v0.1.0:benchmark/README.md\n\n# Verified Search Pro Benchmark\n\n可复验的 benchmark 门禁，用于验证 VSP 在不同查询类型上的表现。\n\n## 结构\n\n```\nbenchmark/\n├── queries.json      # 标准查询集（中文查询必须带 concepts 字段）\n├── run.py            # 运行所有查询并保存结果\n├── evaluate.py       # 评估结果是否通过门禁\n├── fixtures/         # golden report 基线（tencent_wsa+tavily 双 API 路径，2026-07-17 固化，已审核）\n└── results*/         # 本地运行产物，不入库（.gitignore 已排除）\n```\n\n## 运行 benchmark\n\n```bash\n# 1. 运行查询（默认免费引擎组 duckduckgo,sogou,bing_cn，无需任何 API Key）\npython3 benchmark/run.py\n\n# 2. 评估结果（默认读取 benchmark/results/summary.json）\npython3 benchmark/evaluate.py\n\n# 3. API 路径（需已配置对应 API Key；输出目录与评估 summary 需成对指定）\npython3 benchmark/run.py --engines tencent_wsa,tavily --output-dir benchmark/results-api\npython3 benchmark/evaluate.py --summary benchmark/results-api/summary.json\n# 已配置 BAIDU_API_KEY 时可加入 baidu_api：\n# python3 benchmark/run.py --engines tencent_wsa,tavily,baidu_api --output-dir benchmark/results-api\n```\n\n基线说明与变更规则见 `fixtures/README.md`；发版前必须执行的完整门禁见 `CONTRIBUTING.md`「发布门禁」一节。\n\n## 查询覆盖场景\n\n| ID | 场景 | 说明 |\n|----|------|------|\n| fresh-fact | 新鲜事实 | 验证具体事实能否得到可信结论 |\n| policy-claim | 政策声明 | 验证政策类查询的置信度 |\n| perspective-mapping | 观点映射 | 验证争议性话题能生成 perspective_map |\n| source-laundering | 来源去重 | 验证多源转载不会错误提升置信度 |\n| temporal-drift | 时间演进 | 验证历史 vs 当前证据被正确区分 |\n| technical-claim | 技术声明 | 验证技术类查询的局限性标注 |\n\n## 贡献新查询\n\n1. 在 `queries.json` 中添加新查询和 `expected` 条件。\n2. 运行 `python3 benchmark/run.py` 生成结果。\n3. 人工审核结果后，如需作为回归基线，放入 `fixtures/`。\n4. 提交 PR 时说明查询设计的理由。\n\nFile v0.1.0:examples/README.md\n\n# Verified Search Pro 示例\n\n本目录包含可直接运行的示例脚本，帮助你快速体验 VSP 的核心能力。\n\n> **从 zip 下载代码的用户**：GitHub 自动生成的 \"Source code (zip)\" 解压后可能丢失脚本的可执行权限（部分解压工具不还原 Unix 权限位），直接 `./examples/xxx.sh` 会报 \"Permission denied\"。两种解决方式（任选其一）：\n>\n> - 一律用 `bash examples/xxx.sh` 运行（本 README 所有示例均为此写法，无需任何权限）；\n> - 或执行一次 `chmod +x examples/*.sh` 恢复权限。\n>\n> Release 页面另附官方 `.tar.gz` 包（保留可执行权限），解压后可直接 `./examples/xxx.sh`。\n\n## 示例列表\n\n| 脚本 | 用途 | 说明 |\n|------|------|------|\n| `fact_check.sh` | 事实核查 | 轻量模式，快速验证一个具体事实 |\n| `research_report.sh` | 深度调研 | 生成 Markdown 研究报告 |\n| `host_input.sh` | 宿主输入质检 | 把 agent 已搜到的结果交给 VSP 验证 |\n\n## 快速运行\n\n```bash\n# 事实核查\nbash examples/fact_check.sh \"OpenAI CEO 是谁\"\n\n# 深度调研\nbash examples/research_report.sh \"2026 年固态电池技术路线\"\n\n# 宿主输入质检（会自动生成示例输入文件）\nbash examples/host_input.sh\n```\n\n## 输出说明\n\n- `--output claims-json`：结构化证据包，适合 agent 消费\n- `--output md`：Markdown 报告，适合人阅读\n- `--output json`：原始融合结果\n\n## 自定义查询\n\n所有脚本都支持传入自定义查询作为第一个参数：\n\n```bash\nbash examples/fact_check.sh \"Python 3.14 发布日期\"\n```\n\nFile v0.1.0:README.md\n\n# Verified Search Pro v2.1.1 · 可信研究助理\n\n> 搜索工具负责\"找资料\"，Verified Search Pro 负责\"验资料\"：清洗噪声、核对来源、标注置信度和不确定性。\n>\n> [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/)\n> [![Zero Dependencies](https://img.shields.io/badge/dependencies-zero-brightgreen.svg)]()\n> [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n---\n\n## 5 分钟上手\n\nVerified Search Pro 是一个纯 Python 标准库的 AI Skill，无需安装任何依赖即可运行。\n\n### 环境要求\n\n- Python 3.8 或更高版本\n- 可选：API 引擎密钥——[`TAVILY_API_KEY`](https://tavily.com/)（国际/英文向）、`TENCENTCLOUD_SECRET_ID` + `TENCENTCLOUD_SECRET_KEY`（腾讯云 WSA，中文主力）、`BAIDU_API_KEY`（百度千帆 AI 搜索）；都不配置也能用 DuckDuckGo/必应/搜狗免费 Web 引擎兜底（配置步骤见 `references/10-api-setup.md`）\n- 可选：Node.js（只在抓取微信文章内容时需要）\n\n### 三步跑起来\n\n```bash\n# 1. 克隆仓库\ngit clone https://github.com/hellohuanghuang/verified-search-pro.git\ncd verified-search-pro\n\n# 2. 检查环境\npython3 scripts/search_engine.py --doctor\n\n# 3. 生成你的第一份证据包\npython3 scripts/search_engine.py \"你的查询\" --verify --output claims-json\n```\n\n### 快速示例\n\n```bash\n# 事实核查（轻量）\npython3 scripts/search_engine.py \"OpenAI CEO 是谁\" --budget lite --verify\n\n# 深度调研（更多证据）\npython3 scripts/search_engine.py \"2026 年固态电池技术路线\" --budget deep --verify --output claims-json\n\n# 中文自然语言查询：先提取概念再搜索（推荐）\npython3 scripts/search_engine.py \"如何消除比熊的泪痕\" \\\n  --search-concepts \"比熊,泪痕,消除方法\" --verify --output claims-json\n\n# 用 agent 已经搜到的结果做质检\npython3 scripts/search_engine.py \"你的查询\" --input-results host_results.json --engines none --output claims-json\n```\n\n跑完测试：\n\n```bash\npython3 -m unittest discover -s tests\n```\n\n---\n\n## 项目简介\n\nVerified Search Pro 是一套面向深度调研和事实核查的可信研究 Skill。当前公开版本是 **v2.1.1**：在 v2.0.0 稳定版基础上新增腾讯云 WSA 与百度千帆两个 API 引擎（与 Tavily 组成 L1 主力，未配置自动跳过）、中文搜索优化、DuckDuckGo 引擎与降级、必应中文疑问词改写、搜狗链接解密、头条低频引擎、限制标注中文化、强制 LLM 概念提取、更强的 Tavily 询问机制和零第三方依赖保持。\n\n它不是要替代 Tavily、Exa、Perplexity、Kagi 或普通搜索引擎，而是把多来源资料整理成可复核的证据包和研究结论。\n\n- **资料获取**：可调用 Tavily API（可选增强）+ 必应/搜狗/DuckDuckGo（Web 搜索），也可在无 Tavily 时降级\n- **中文搜索优化**：n-gram 分词（2-4 字切片）+ `--search-concepts` 由 AI 提取核心关键词补充，避免中文整句匹配噪声\n- **Tavily 缺失提醒**：未配置 Tavily 时自动在 JSON 输出 `tips` 字段，Agent 读取后自然提醒用户配置\n- **宿主搜索输入**：OpenClaw/Kimi 等 agent 已经搜到的结果可通过 `--input-results` 交给 VSP 质检\n- **智能融合去重**：URL 归一化 + 内容指纹 + 文本相似度 + 查询相关性过滤，四重去重\n- **反向验证**：提取关键实体（n-gram + concepts），验证结果内容相关性\n- **置信度定级**：A-E 五级，从\"多权威确认\"到\"明确不实\"\n- **信息源分级**：A（权威官方）→ E（匿名论坛），自动权重调整\n- **情报分区**：可信结论、观点地图、常见误区、争议不确定、时间演进分别标注\n- **默认交付**：Markdown 给人阅读，`claims-json`/evidence-pack 给 agent、测试和后续工作流使用\n\n---\n\n## 输出示例\n\n`--output claims-json` 会输出一个结构化证据包，关键字段如下：\n\n```json\n{\n  \"schema_version\": \"v2-alpha.evidence-pack\",\n  \"query\": \"你的查询\",\n  \"research_mode\": \"fact\",\n  \"search\": { \"budget\": \"lite\", \"evidence_returned\": 5 },\n  \"claims\": [{ \"claim\": \"你的查询\", \"confidence\": \"B\", \"supporting_evidence\": [\"ev-1\", \"ev-2\"] }],\n  \"trusted_conclusions\": [...],\n  \"perspective_map\": { \"items\": [...] },\n  \"common_misconceptions\": [...],\n  \"controversies_uncertainties\": { \"items\": [...] },\n  \"temporal_evolution\": [...],\n  \"evidence\": [\n    {\n      \"evidence_id\": \"ev-1\",\n      \"url\": \"https://example.com/article\",\n      \"title\": \"...\",\n      \"snippet\": \"...\",\n      \"source_reliability\": { \"grade\": \"A\", \"label\": \"authoritative source\" },\n      \"information_credibility\": { \"grade\": \"1\", \"label\": \"confirmed by other sources\" },\n      \"freshness\": { \"status\": \"current\", \"age_days\": 12 }\n    }\n  ],\n  \"limitations\": [...],\n  \"tips\": [\n    {\n      \"level\": \"info\",\n      \"code\": \"tavily_missing\",\n      \"msg\": \"Tavily AI 搜索未配置，当前仅使用 Web 搜索...\",\n      \"setup_url\": \"https://app.tavily.com\"\n    }\n  ],\n  \"agent_handoff\": { \"recommended_use\": [...], \"do_not_promote_to_fact\": [...] }\n}\n```\n\n需要人读报告时，使用 `--output md` 或参考 `assets/report-template.md`。\n\n---\n\n## 适用场景（触发条件）\n\n在以下场景下，本 skill 会自动加载：\n\n| 场景 | 关键词示例 |\n|------|-----------|\n| **深度调研** | \"调研 XX 行业\" \"XX 赛道分析\" \"市场研究\" |\n| **信息验真** | \"验证一下\" \"这是真的吗\" \"确认信息\" \"辟谣\" |\n| **竞品追踪** | \"竞品分析\" \"对手动态\" \"行业对比\" |\n| **政策追踪** | \"最新政策\" \"法规变化\" \"监管动态\" |\n| **人物/机构背调** | \"背景调查\" \"公司信息\" \"创始人履历\" |\n| **多源比对** | \"多搜一下\" \"交叉验证\" \"不同来源\" |\n\n---\n\n## 如何使用\n\n### 通用使用\n\n1. 将本 skill 目录放入目标 agent 支持的 skills/tools 目录\n2. 确保 Python 3.8+ 可用\n3. 运行 `python3 scripts/search_engine.py \"query\" --verify --output claims-json` 生成证据包\n4. 需要人读报告时使用 Markdown 输出或 `assets/report-template.md`\n\n### Claude Code\n\n1. 将 `.claude/CLAUDE.md` 复制到项目根目录的 `.claude/` 文件夹\n2. Claude Code 自动读取并应用上下文\n\n### Codex\n\n1. 将 `.codex/instructions.md` 复制到项目根目录的 `.codex/` 文件夹\n2. Codex 自动加载系统指令\n\n### 其他平台（通用 Prompt）\n\n将 `references/07-cross-platform.md` 中的通用 Prompt 模板作为 system prompt 注入。\n\n### OpenClaw（可选示例）\n\nOpenClaw 只是一个可选适配示例，不是公开版必需环境。若用户使用 OpenClaw，可将 `scriptPath` 指向本仓库内的 `scripts/search_engine.py`。\n\n---\n\n## 设计原则\n\n- **不是普通搜索器**：搜索 API 负责找资料，本 Skill 负责把资料变成可复核、可交接、可审计的证据包。\n- **Agent 零摩擦交接**：agent 可直接调用 `scripts/search_engine.py`，也可先用宿主搜索，再通过 `--input-results` 交给 VSP 做 evidence-pack。\n- **上下文预算**：256k 是硬红线，默认 `auto`；轻量规则选择 `lite / standard / deep`，给系统提示词、用户任务和后续推理留下空间。\n- **自适应检查点**：默认 `auto`，清晰调研可连续执行后汇报；模糊、高风险或用户要求控制时使用 `interactive`。\n- **非可信材料也有价值**：观点、误区、争议和历史失效信息会进入独立分区，只能作为背景、负面样本、发散线索或趋势材料，不能自动当事实。\n- **Google 暂不默认**：Google Custom Search 作为未来可选适配，不进入默认能力，避免 API、代理、密钥和网络环境增加公开安装摩擦。\n- **反爬边界**：必应/搜狗/微信验证码或安全验证会被标注为 blocked，不做绕过验证码、伪造 Cookie 或代理池。\n\n---\n\n## 核心工作流（5 阶 16 步）\n\n### Phase 1: 任务拆解（检查点 1）\n- 分析用户意图，拆解信息模块\n- 确定搜索策略与引擎组合\n- 根据 `--checkpoint auto|batch|interactive` 判断是否需要用户确认\n\n### Phase 2: 搜索获取（检查点 2）\n- 并行调用多引擎搜索\n- 读取可选宿主搜索 JSON 输入\n- 原始结果收集\n- 记录 engine health，区分 blocked、skipped、failed、empty、ok\n\n### Phase 3: 降噪清洗（检查点 3）\n- 信息源分级过滤\n- 重复内容去重\n- 低质量内容剔除\n- `batch` 模式下不中断，但最终报告必须说明处理结果\n\n### Phase 4: 验真比对（检查点 4）\n- 关键实体交叉验证\n- 多源一致性检查\n- 矛盾信息标注\n- 高风险或范围模糊时切换到 `interactive`\n\n### Phase 5: 要点定锚与交付\n- 置信度定级（A-E）\n- 要点锚定（核心结论）\n- 生成 Markdown 报告和 `claims-json` 证据包\n- 默认本地交付；飞书、Notion、Google Docs、Obsidian 等作为可选适配\n\n---\n\n## 文件结构\n\n```\nverified-search-pro/\n├── SKILL.md                          ← 核心入口（触发条件 + 工作流导航）\n├── _meta.json                        ← 元数据（版本、作者、平台适配）\n├── LICENSE                           ← MIT 许可证\n├── CHANGELOG.md                      ← 版本变更日志\n├── README.md                         ← 本文件\n├── README_EN.md                      ← English documentation\n│\n├── config/                           ← 默认配置与用户可覆盖项\n│   └── default.json                  ← 默认配置（引擎、域名评级、预算）\n│\n├── scripts/                          ← 可执行脚本（纯 Python 标准库）\n│   ├── search_engine.py              ← 主入口：多引擎调度与结果融合\n│   ├── html_parser.py                ← HTML 解析器（必应/搜狗/DuckDuckGo/头条，html.parser + 正则兜底）\n│   ├── result_fusion.py              ← 结果融合、去重、评分排序、same-story 检测\n│   ├── cross_verify.py               ← 反向验证与置信度定级\n│   ├── trust_model.py                ← claim/evidence 可信度结构化模型\n│   ├── domain_registry.py            ← 统一域名评级注册表\n│   ├── config.py                     ← 分层配置加载器\n│   ├── cache.py                      ← SQLite 请求缓存\n│   ├── network.py                    ← 指数退避重试网络层 + POST 支持 + Cookie 会话\n│   ├── date_extract.py               ← 网页日期启发式提取（snippet/URL，不抓全文）\n│   ├── tavily_adapter.py             ← Tavily API 适配器（可选）\n│   ├── wsa_adapter.py                ← 腾讯云 WSA 适配器（可选，TC3 签名）\n│   ├── baidu_api_adapter.py          ← 百度千帆 AI 搜索适配器（可选，Bearer 鉴权）\n│   ├── sogou_url_decoder.py          ← 搜狗加密链接解密\n│   ├── wechat_fetch.py               ← 微信文章抓取（调用 Node.js）\n│   └── wechat_fetch/                 ← 微信抓取 Node 脚本（零 npm 依赖）\n│       └── wx-article-fetch.js       ← 文章抓取与正文提取，供 wechat_fetch.py 调用\n│\n├── references/                       ← 核心知识库（按需加载）\n│   ├── 01-search-strategy.md         ← 搜索策略与引擎选择指南\n│   ├── 02-source-ranking.md         ← 信息源五级分类（A-E）与使用规则\n│   ├── 03-confidence-rubric.md      ← 置信度定级标准（A-E 详细定义）\n│   ├── 04-noise-filtering.md        ← 降噪与验真流程\n│   ├── 05-output-template.md         ← 输出模板规范\n│   ├── 06-fallback-guide.md         ← 降级方案（无 API 引擎 / 无网络）\n│   ├── 07-cross-platform.md         ← 跨平台迁移指南\n│   ├── 08-trust-quality-framework.md ← 2.0 可信搜索方法论框架\n│   ├── 09-evaluation-benchmark.md   ← 2.0 评估基准与发布门禁\n│   └── 10-api-setup.md              ← API 配置引导手册（Tavily / 腾讯云 WSA / 百度千帆）\n│\n├── assets/                           ← 模板资源\n│   └── report-template.md            ← 搜索报告 Markdown 模板\n│\n├── schemas/                          ← 结构化输出 Schema\n│   └── evidence-pack.schema.json     ← evidence-pack / claims-json JSON Schema\n│\n├── examples/                         ← 可直接运行的示例脚本\n│   ├── fact_check.sh\n│   ├── research_report.sh\n│   └── host_input.sh\n│\n├── benchmark/                        ← 可复验 benchmark\n│   ├── queries.json                  ← 标准查询集（中文查询带 concepts）\n│   ├── run.py                        ← 运行器（默认免费三引擎）\n│   ├── evaluate.py                   ← 门禁评估器\n│   └── fixtures/                     ← golden report 基线（已审核入库）\n│\n├── tests/                            ← 标准库 unittest 回归测试（225+，含适配器/解析器/策略/文档门禁）\n│   ├── test_result_fusion.py\n│   ├── test_cross_verify.py\n│   ├── test_search_engine_cli.py\n│   ├── test_trust_model.py\n│   ├── test_html_parser.py\n│   ├── test_config.py\n│   ├── test_cache.py\n│   ├── test_network.py\n│   ├── test_domain_registry.py\n│   ├── test_schema.py\n│   └── test_docs_policy.py\n│\n├── .claude/\n│   └── CLAUDE.md                     ← Claude Code 适配入口\n├── .codex/\n│   └── instructions.md               ← Codex 适配入口\n└── .github/                          ← GitHub issue 模板\n    └── ISSUE_TEMPLATE/\n```\n\n---\n\n## 版本信息\n\n- **当前版本**：v2.1.1\n- **稳定基线**：v2.1.1（2026-07-19）\n- **作者**：黄艾伦（那个谁）\n- **更新日志**：`CHANGELOG.md`\n\n---\n\n## Roadmap\n\n| 版本 | 目标 |\n|------|------|\n| v2.1 | 更智能的查询拆分与主管-子代理研究模式；SearXNG 引擎适配 |\n| v2.2 | 可选 MCP server 包装，暴露为标准化工具 |\n| v3.0 | 考虑引入轻量语义模型做观点聚类（可能引入可选第三方依赖） |\n\n---\n\n## 技术说明\n\n### 跨平台兼容性\n\n| 平台 | 依赖要求 | 状态 |\n|------|---------|------|\n| 通用 Prompt | Python 3.8+ | ✅ 默认支持 |\n| Claude Code | Python 3.8+ | ✅ 适配 |\n| Codex | Python 3.8+ | ✅ 适配 |\n| OpenClaw / Hermes | Python 3.8+ | 可选适配示例 |\n\n### 外部依赖\n\n- **Tavily**：可选。`TAVILY_API_KEY` 环境变量配置时启用，缺失时自动降级为纯 Web 搜索\n- **腾讯云 WSA**：可选。`TENCENTCLOUD_SECRET_ID` + `TENCENTCLOUD_SECRET_KEY` 配置时启用中文 API 主力检索\n- **百度千帆 AI 搜索**：可选。`BAIDU_API_KEY` 配置时启用百度搜索官方数据源\n- 以上三个 API 引擎的配置步骤统一见 `references/10-api-setup.md`；全部未配置时自动使用免费 Web 引擎并在 `tips` 字段给出引导\n- **Node.js**：仅微信文章抓取时需要。缺失时跳过微信内容抓取\n- **Python 包**：零第三方包依赖，仅使用标准库（`urllib`, `threading`, `json`, `re`, `hashlib`, `difflib`）\n\n---\n\n## 使用示例\n\n```bash\n# 基础搜索（自动选择引擎）\npython3 scripts/search_engine.py \"小鹏汽车 VLA2.0 激光雷达\"\n\n# 多引擎 + 反向验证\npython3 scripts/search_engine.py \"query\" --engines tavily,bing_cn --verify\n\n# 预算控制（lite/standard/deep；旧 minimal/balanced/comprehensive 仍兼容）\npython3 scripts/search_engine.py \"query\" --budget deep\n\n# 自动预算 + 自适应检查点\npython3 scripts/search_engine.py \"query\" --budget auto --checkpoint auto\n\n# 输出 evidence-pack（通过 claims-json 兼容入口）\npython3 scripts/search_engine.py \"query\" --mode research --budget auto --verify --output claims-json\n\n# 中文自然语言查询：先提取概念再调用（推荐，Agent 强制）\npython3 scripts/search_engine.py \"如何消除比熊的泪痕\" \\\n  --search-concepts \"比熊,泪痕,消除方法\" --verify --output claims-json\n\n# 宿主搜索输入：例如 OpenClaw/Kimi agent 已经搜到的结果\npython3 scripts/search_engine.py \"query\" --input-results host_results.json --engines none --output claims-json\n\n# 首次运行自检\npython3 scripts/search_engine.py --doctor\n\n# 抓取微信文章内容\npython3 scripts/search_engine.py \"query\" --fetch-content\n```\n\n---\n\n## 方法论来源\n\n- 黄艾伦信息搜索方法论（多元验证、反向论证、语义分析）\n- Nuwa Skill 检查点机制与质量控制\n- Tavily 高级搜索 API 最佳实践\n- OSINT / ACH / SIFT / source reliability 方法论审计轨（见 `references/08-trust-quality-framework.md`）\n\n## v2.0.1 更新说明\n\nv2.0.1 是基于 v2.0.0 稳定版的问题修复和体验优化版本，主要解决中文搜索质量问题：\n\n- **中文 n-gram 分词**：将中文查询切分为 2-4 字片段，避免整句匹配导致的噪声\n- **search_concepts 补充机制**：AI 提取的核心关键词作为补充追加到 n-gram 结果，而非替换（修复了导致结果退化的关键 bug）\n- **DuckDuckGo 引擎**：新增 DuckDuckGo HTML 解析器，作为 Tavily 不可用时的额外搜索源\n- **查询相关性过滤**：在结果融合阶段过滤与搜索词完全无关的结果\n- **Tavily 缺失提醒**：三层提醒机制（JSON tips → Agent 转告 / CLI stderr 一次性 / --doctor 配置指引）\n- **验证评分双轨制**：有 concepts 时用精确概念评分，无 concepts 时用截断 n-gram 评分\n\n101 个单元测试全部通过，压力测试 20 项断言全部通过。\n\n## 常见失败排查\n\n| 现象 | 原因 | 解决方案 |\n|------|------|---------|\n| 搜狗/必应/DuckDuckGo 返回 0 结果或 engine_status 显示 `blocked` | 搜索页面触发了验证码或安全验证 | 换其他引擎重试，或配置 API 引擎（腾讯云 WSA / 百度千帆 / Tavily）获得稳定质量；这不是 bug，VSP 不会绕过验证码 |\n| Tavily 没有返回结果 | 没有配置 `TAVILY_API_KEY` | 这是正常的，工具会自动降级为 Web 搜索；如需 Tavily，到 [tavily.com](https://tavily.com/) 申请免费 key；未配置时 VSP 会在 JSON 输出 `tips` 字段提醒，`--doctor` 可查看完整配置步骤 |\n| DuckDuckGo 结果为空 | 触发了反爬验证码 | VSP 会自动检测验证码页面并标记 blocked，切换到其他引擎重试 |\n| 微信文章抓取失败 | 当前环境没有 Node.js | 普通网页搜索不受影响；只有 `--fetch-content` 需要 Node.js |\n| 输出 JSON 为空或 confidence 为 E | 查询太具体、网络不可达或所有引擎被 block | 检查 `--doctor` 输出，换更通用查询，或手动准备 `--input-results` |\n| `--help` 不工作 / 非法参数被静默忽略 | 你当前可能在使用旧版本 | 请确认在最新版仓库中运行，旧版 CLI 使用手写参数解析 |\n\n如果仍无法解决，欢迎提交 issue 时附上 `python3 scripts/search_engine.py --doctor` 的输出。\n\n---\n\n## 如何贡献\n\n我们非常欢迎贡献！小白开发者也可以从下面几步开始：\n\n1. **Fork 仓库** 并 clone 到本地。\n2. **跑测试**：`python3 -m unittest discover -s tests`，确保全部通过。\n3. **选一个 issue**：推荐先看 `good first issue` 标签。\n4. **先写测试再改代码**：保持测试先行，确保不回归。\n5. **提交 PR**：在 PR 描述里说明改动原因和验证方式。\n\n常见贡献方向：\n\n- 补充搜索引擎的 HTML fixture 和测试\n- 增加新的可信域名到 source ranking\n- 提交 benchmark 查询和 golden report\n- 改进文档，让小白更容易上手\n\n详细贡献指南见 [`CONTRIBUTING.md`](CONTRIBUTING.md)。\n\n---\n\n```bash\npython3 -m unittest discover -s tests\n```\n\n---\n\n*本工具持续迭代中。默认交付为本地 Markdown 与 claims-json，平台文档集成按用户环境选择。*\n\nFile v0.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn74p6ney7wsfw4d14g7pm01yh87zd26\",\n  \"slug\": \"vsp\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1784638844910\n}\n\nFile v0.1.0:references/01-search-strategy.md\n\n# 搜索策略与引擎选择指南\n\n## 路由逻辑：引擎是怎么被调用的（先读这段）\n\nVSP 的搜索调度是\"**全并发 + 融合**\"，不是\"先首选、不行再辅助\"的串行接力：\n\n1. **默认并发**：默认引擎列表 `tavily,tencent_wsa,baidu_api,duckduckgo,bing_cn,sogou` 在每次搜索时**同时发起**（多线程并行），各引擎结果进入融合层统一去重、相关性过滤、来源分级与排序。\n2. **首选/辅助是权重建议，不是调用顺序**：下表的场景首选/辅助，回答的是\"这类查询里哪些来源贡献最大、结果最该被信任\"，用于指导 agent 判断与结果解读；运行时默认仍是全并发，除非用 `--engines` 显式收窄。\n3. **备份（串行降级）只发生在特定链路**：DuckDuckGo 被拦截时自动降级 `bing_int` → `bing_cn`；API 引擎未配置密钥时自动 `skipped` 并在 `tips` 给出配置引导。除此之外不存在\"先 A 后 B\"的接力。\n4. **并发 ≠ 结果无条件更多更好**：候选更多，但低质结果会稀释质量，因此融合层必须做去重、相关性过滤与来源分级。**质量下限由 L1 API 层保障，L2 免费层负责覆盖与多源互验**。\n5. **宿主搜索是输入通道，不是引擎**：VSP 无法替宿主 agent 发起搜索，只能接收宿主已搜到的结果（`--input-results`），因此它不会、也不能出现在 `--engines` 默认列表中。策略上它是**首选输入源**：宿主已搜则优先输入，VSP 引擎作补充与交叉验证；即使所有引擎不可用（`--engines none`），宿主输入仍能支撑完整证据包。\n\n## 何时使用哪个引擎？\n\n| 场景 | 首选来源 | 辅助来源 | 原因 |\n|------|---------|---------|------|\n| **中文事实核查** | 宿主搜索输入 + tencent_wsa + baidu_api（已配置时） | 必应 / 搜狗 / DuckDuckGo | 宿主结果质量稳定且不受反爬限制；WSA 中文覆盖好、返回发布日期；千帆为百度搜索官方数据源，与 WSA 构成双独立中文信源互验 |\n| **英文/国际信息** | tavily + 必应国际 | 宿主搜索输入 | Tavily 英文质量高 |\n| **科技/行业动态** | 宿主搜索输入 + tavily / tencent_wsa / baidu_api | 必应 / DuckDuckGo | API 引擎补时效与语义覆盖 |\n| **微信公众号内容** | 宿主搜索输入 / 用户直接提供文章 URL | —（无免费合规发现入口） | 搜狗微信搜索验证码与封禁高发，已放弃；腾讯云 WSA 不含公众号内容（官方 FAQ）。已知文章 URL 可用 `--fetch-content` 抓取全文 |\n| **政策/政府信息** | 宿主搜索输入 + tencent_wsa + baidu_api（已配置时） | 必应 | WSA 可命中政府站点；千帆支持 site 站点限定（如 `www.gov.cn`，真实验收有效） |\n| **通用快速查询** | 宿主搜索输入 + tavily / tencent_wsa / baidu_api | DuckDuckGo / 必应 | API 引擎速度+质量平衡 |\n| **观点/争议/评价** | 宿主搜索输入 + 免费三引擎广覆盖 | tavily / tencent_wsa / baidu_api | 先覆盖多元材料，再在输出端清晰标注 |\n\n**API 引擎分工**：\n- **腾讯云 WSA（`tencent_wsa`）**：中文 API 主力，覆盖腾讯系/搜狗内容生态，返回发布时间元数据，适合中文事实核查、政策追踪；**不包含微信公众号内容**（官方 FAQ 明示）。\n- **百度千帆 AI 搜索（`baidu_api`）**：百度搜索官方数据源，与 WSA 构成双独立中文信源；支持 `site` 站点限定（子域名一并覆盖；过宽裸后缀如 `gov.cn` 会返回空）与时效过滤（`pd/pw/pm/py` 快捷档与自定义区间，服务端生效）。\n- **Tavily（`tavily`）**：国际/英文向，与两个中文 API 互补。\n\n三者均为 L1 可选增强，密钥仅走环境变量，未配置时自动降级到免费 HTML 引擎，配置步骤见 `references/10-api-setup.md`。\n\n**宿主搜索优先原则**：当宿主 agent 已完成搜索时，优先通过 `--input-results` 输入，\nVSP 负责质检和分级。宿主搜索不消耗 VSP 的引擎配额，且不受反爬限制。\n\n## 宿主搜索输入\n\n宿主 agent（如 Kimi Search、OpenClaw 内置搜索等）已完成搜索时，优先通过 `--input-results` 输入 VSP。VSP 负责去重、验证、分级和 evidence-pack，不控制宿主搜索工具。\n\n```bash\npython3 scripts/search_engine.py \"query\" --input-results host_results.json --engines none --output claims-json\n```\n\n**优势**：宿主搜索不受反爬限制、不消耗 VSP 引擎配额、结果质量稳定。VSP 只负责“验资料”，代码和性能保持轻量。\n\n## 2.0 模式选择\n\n| 模式 | 适用任务 | 输出重点 |\n|------|----------|----------|\n| `fact` | 事实核查、确认某事是否成立 | 可信结论、证据、置信度、限制 |\n| `perspective` | 主观观点、评价、争议、批评 | 观点地图、代表来源、争议不确定、不可直接当事实标注 |\n| `research` | 深度调研、政策/机构/项目研究 | 可信结论 + 观点/误区/时间演进的综合资料包 |\n| `auto` | 用户未指定时 | 根据查询词保守判断 |\n\n## Google 策略\n\nGoogle 暂不进入默认能力。如需使用，需单独配置 `google_cse` 适配（API key + Programmable Search Engine ID + 网络/代理 + 配额管理）。默认优先保证公开安装后的稳定降级，而非追求最多搜索源。\n\n## 查询拆分策略\n\n复杂查询拆分为多个子查询：\n\n```\n原查询：\"小鹏汽车 VLA2.0 激光雷达 技术路线\"\n子查询1：\"小鹏 VLA2.0 技术架构\"\n子查询2：\"小鹏 纯视觉 激光雷达 取舍\"\n子查询3：\"VLA2.0 vs 激光雷达 智驾方案对比\"\n```\n\n## 预算控制\n\n| 预算 | 结果数 | 适用场景 |\n|------|--------|---------|\n| auto | 自动选择 | 默认；轻量规则判断，不调用模型 |\n| lite | 5 | 快速事实核查、agent 紧凑上下文 |\n| standard | 10 | 默认调研、证据包交接 |\n| deep | 20 | 深度研究、用户明确要求更多材料 |\n\n旧命令中的 `minimal / balanced / comprehensive` 仍兼容，分别映射到 `lite / standard / deep`。\n\n自动规则：一句话事实核查建议 `lite`；普通调研建议 `standard`；多维技术对比、争议、趋势、政策研究建议 `deep`。\n\n## 检查点模式\n\n| 模式 | 行为 | 适用场景 |\n|------|------|----------|\n| auto | Agent 判断是否停顿 | 默认 |\n| batch | 连续执行，最后汇报阶段摘要 | 用户明确要求直接完成 |\n| interactive | 每阶段确认 | 高风险、范围模糊、用户要求控制 |\n\n## 引擎健康监控\n\n本版只记录本次运行中被选择引擎的健康状态，不额外轮询所有引擎，不维护复杂数据库：\n\n- `ok`: 成功返回结果\n- `empty`: 请求成功但没有解析出结果\n- `blocked`: 验证码、安全验证或反爬页\n- `skipped`: 缺少配置或不是默认能力\n- `failed`: 网络或解析异常\n\nFile v0.1.0:references/02-source-ranking.md\n\n# 信息源五级分类与使用规则\n\n## 五级分类\n\n| 等级 | 来源类型 | 使用规则 | 置信度 | 示例 |\n|------|---------|---------|--------|------|\n| **A** | 政府官网、权威媒体、学术期刊、品牌/机构官方 | 优先使用，可直接引用 | **高** | gov.cn、reuters.com、nature.com |\n| **B** | 知名学者/评论员/媒体人的署名内容 | 可用，需确认作者身份 | **中高** | 知乎认证号、知名公众号、专家专栏 |\n| **C** | 一般 UGC（知乎高赞、一般公众号、行业论坛） | 仅作观点参考，必须交叉验证 | **中** | 知乎普通回答、行业论坛帖子 |\n| **D** | 百度百科、未署名自媒体、内容农场 | 极度谨慎，仅用于基础概念 | **低** | baike.baidu.com、未署名自媒体 |\n| **E** | 匿名论坛、营销号、无来源截图 | 不使用 | **极低** | 匿名论坛帖子、营销号文章 |\n\n## 特殊规则\n\n### 知乎（zhihu.com）\n- 不一刀切排除\n- 认证作者/高赞回答 → B 级（需确认作者身份）\n- 普通回答 → C 级（仅观点参考）\n- 匿名回答 → D 级\n\n### 微信公众号（mp.weixin.qq.com）\n- 知名媒体/机构号 → B 级\n- 个人认证号（有专业背景）→ B-C 级\n- 普通号 → C 级\n- 未认证/营销号 → D 级\n\n### 百度百科（baike.baidu.com）\n- 仅用于基础概念定义\n- 永远不可用于事实、数据、争议性内容\n- 引用时必须标注\"据百度百科\"\n\n## 域名评分表\n\n```python\nDOMAIN_AUTHORITY = {\n    \"gov.cn\": 0.95, \"gov.com\": 0.95,\n    \"reuters.com\": 0.9, \"bloomberg.com\": 0.9, \"ft.com\": 0.9,\n    \"nytimes.com\": 0.9, \"wsj.com\": 0.9, \"economist.com\": 0.9,\n    \"nature.com\": 0.95, \"science.org\": 0.95, \"ieee.org\": 0.9, \"arxiv.org\": 0.85,\n    \"github.com\": 0.8, \"stackoverflow.com\": 0.85,\n    \"36kr.com\": 0.75, \"pingwest.com\": 0.75, \"techcrunch.com\": 0.8,\n    \"zhihu.com\": 0.65, \"weixin.qq.com\": 0.65,\n    \"baike.baidu.com\": 0.5, \"wikipedia.org\": 0.8,\n}\n```\n\n**兜底规则**：\n- 不在表中的域名 → 默认 `unknown`，评分 0.5\n- `.gov` / `.gov.cn` → 自动 A 级，评分 0.9\n- `.edu` / `.ac.cn` → 自动 A 级，评分 0.85\n- 其他未分类域名 → 按内容质量动态评估\n\n## 降级规则\n\n- A 级来源缺失时，可用 B 级替代，但需标注\n- B 级来源有矛盾时，降级到 C 级处理\n- 同一信息仅出现在 C 级来源 → 标注\"单一来源，待验证\"\n- 信息仅出现在 D-E 级来源 → 不使用\n\nFile v0.1.0:references/03-confidence-rubric.md\n\n# 置信度定级标准（A-E）\n\n## 定级标准\n\n| 等级 | 名称 | 定义 | 使用规则 | 标注要求 |\n|------|------|------|---------|---------|\n| **A** | 已确认 | 2+ 权威来源独立确认 | 可直接引用，无需额外说明 | 标注来源即可 |\n| **B** | 基本可信 | 1 权威来源或 2+ 一般来源一致 | 可引用，建议标注来源 | 标注\"据 X 报道/研究显示\" |\n| **C** | 单一来源 | 单一来源，无矛盾 | 可引用，必须标注来源 | 标注\"据 X 报道，尚未获其他来源确认\" |\n| **D** | 存疑 | 存在矛盾或辟谣信息 | 必须标注争议，不得作为定论 | 标注\"存在争议：X 称...，但 Y 质疑...\" |\n| **E** | 不实 | 明确不实或无法验证 | 不使用，标注\"信息不足\" | 标注\"此信息无法验证/已被辟谣\" |\n\n## 定级流程\n\n```\n1. 提取关键实体（查询中的核心名词）\n2. 反向验证：结果内容是否包含这些实体？\n3. 多源一致性：同一事实在不同来源中的表述是否一致？\n4. 域名评分：来源的权威性如何？\n5. 综合定级：按标准判定 A/B/C/D/E\n```\n\n## 定级算法\n\n```python\ndef grade_confidence(result, consistency):\n    verification = result.get(\"verification_score\", 0)\n    sources = len(result.get(\"sources\", []))\n    domain_score = result.get(\"domain_score\", 0.5)\n    \n    # A: 多源验证 + 高域名评分 + 高验证分\n    if sources >= 2 and domain_score >= 0.8 and verification >= 0.7:\n        return \"A\"\n    # B: 单源权威或多源一般 + 中验证分\n    if (sources >= 2 or domain_score >= 0.8) and verification >= 0.5:\n        return \"B\"\n    # C: 单源一般 + 验证通过\n    if verification >= 0.4:\n        return \"C\"\n    # D: 验证分低或存在矛盾\n    if verification < 0.4 or not consistency.get(\"consistent\", True):\n        return \"D\"\n    # E: 明确问题\n    return \"E\"\n```\n\n## 宁少勿假原则\n\n**信息不足时明确标注，不强行生成 A/B 级结论。**\n\n示例：\n- ❌ 错误：\"小鹏 GX 搭载了 4 颗激光雷达\"（实际为 0 颗）\n- ✅ 正确：\"关于小鹏 GX 激光雷达配置的信息存在不一致，多数来源称 0 颗，但某来源称 4 颗（置信度 D，待进一步验证）\"\n\n## 矛盾处理\n\n当发现矛盾信息时：\n1. 记录所有来源的表述\n2. 标注置信度为 D\n3. 不自行判断哪方正确\n4. 交付时提示用户\"存在争议，建议进一步核实\"\n\nFile v0.1.0:references/04-noise-filtering.md\n\n# 降噪与验真流程\n\n## 降噪流程（Phase 3）\n\n### 步骤 1: URL 归一化去重\n```python\ndef normalize_url(url):\n    # 移除协议、www、尾部斜杠、跟踪参数\n    url = re.sub(r'^https?://', '', url).lower()\n    url = re.sub(r'^www\\.', '', url)\n    url = url.rstrip('/')\n    url = re.sub(r'[?&](utm_|ref|source)=', '?', url)\n    return url\n```\n\n### 步骤 2: 内容指纹去重（15 词 MD5）\n```python\ndef content_fingerprint(title, content):\n    combined = (title + \" \" + content[:100]).lower()\n    combined = re.sub(r'[^\\w\\s]', '', combined)\n    words = combined.split()[:15]\n    return hashlib.md5(\" \".join(words).encode()).hexdigest()[:16]\n```\n\n### 步骤 3: 文本相似度去重（阈值 0.85）\n```python\ndef text_similarity(t1, t2):\n    return SequenceMatcher(None, t1.lower(), t2.lower()).ratio()\n# 标题相似度 > 0.9 或 内容相似度 > 0.85 → 视为重复\n```\n\n### 步骤 4: 信息源分级过滤\n- 仅保留 A-C 级来源（D 级仅用于基础概念，E 级丢弃）\n- 同一来源仅保留最高得分结果\n\n### 步骤 5: 域名评分加权排序\n```python\nfusion_score = base_score * 0.4 + domain_score * 0.4 + source_bonus + 0.1\n```\n\n## 验真流程（Phase 4）\n\n### 步骤 1: 提取关键实体\n```python\nentities = re.findall(r'[\\u4e00-\\u9fff]{2,}', query)  # 中文词\nentities += re.findall(r'[A-Z][a-zA-Z]+', query)     # 英文专有词\nentities += re.findall(r'\\d{4}', query)                # 年份\n```\n\n### 步骤 2: 反向验证\n```python\ndef verify_result(query, result):\n    key_terms = extract_entities(query)\n    content = (result[\"title\"] + \" \" + result[\"content\"]).lower()\n    matches = sum(1 for t in key_terms if t in content)\n    score = matches / len(key_terms) if key_terms else 0\n    verified = matches >= max(1, len(key_terms) * 0.4)\n    return score, verified\n```\n\n### 步骤 3: 多源一致性检查\n- 比较不同来源对同一事实的表述\n- 提取共同关键词\n- 计算一致性得分\n\n### 步骤 4: 矛盾信息标注\n- 记录所有来源的表述\n- 标注置信度为 D\n- 不自行判断哪方正确\n\n## 质量指标\n\n| 指标 | 目标值 | 说明 |\n|------|--------|------|\n| 去重后保留率 | 30-50% | 原始结果的去重后比例 |\n| 验证通过率 | >70% | 通过反向验证的结果比例 |\n| A/B 级占比 | >30% | 高置信度结果占比 |\n| D/E 级占比 | <20% | 低置信度/问题结果占比 |\n\nFile v0.1.0:references/05-output-template.md\n\n# 输出模板规范\n\n## 默认输出格式\n\n- **格式**: Markdown (`.md`) + `claims-json`\n- **编码**: UTF-8\n- **标题层级**: 严格使用 `#` / `##` / `###` / `####`, 禁止跳级\n- **语言**: 跟随用户上下文；引用保留原文，必要时提供翻译或解释\n- **语气**: 专业、客观、有依据\n\n## 2.0 结构化输出格式\n\n当报告需要被另一个 agent、benchmark harness 或审计脚本消费时，使用:\n\n```bash\npython3 scripts/search_engine.py \"query\" --mode auto --budget auto --checkpoint auto --verify --output claims-json\n```\n\n`claims-json` 是兼容入口，内部按 evidence-pack 思路组织。必须保留:\n\n- `claims` / `trusted_conclusions`: 最小可验证 claim、置信度、限制项\n- `perspective_map`: 多元观点、代表来源、不可直接当事实的使用限制\n- `common_misconceptions`: 常见误区、噪声样本、反面逻辑\n- `controversies_uncertainties`: 争议、不确定性、能力边界\n- `temporal_evolution`: 发布日期、时效状态、过去成立但现在可能失效的信息\n- `evidence`: URL、标题、摘要、来源引擎、访问时间\n- `source_reliability`: 来源可靠性分级\n- `information_credibility`: 内容可信度分级\n- `freshness`: 发布日期和时效状态\n- `limitations`: 信息不足、未验证、来源未知等限制\n- `agent_handoff`: 给后续 agent 的安全使用说明\n- `engine_status`: 搜索渠道状态，如 ok、empty、blocked、skipped、failed\n- `source_attribution`: 作者、来源类型、宿主 fetch 来源、全文可得性、原始出处\n\n## 上下文预算\n\n256k 是上下文红线，输出必须给系统提示词、用户任务和后续推理预留空间。\n\n| 预算 | 用途 | 交接策略 |\n|------|------|----------|\n| `lite` | 快速确认、长对话中补资料 | 只保留少量代表证据和短摘要 |\n| `standard` | 默认交付 | 平衡可信结论、观点地图和证据数量 |\n| `deep` | 深度调研 | 输出更多证据，但仍不塞满上下文 |\n\n## 检查点模式\n\n| 模式 | 说明 |\n|------|------|\n| `auto` | 默认；由 agent 根据任务清晰度和风险决定是否停顿 |\n| `batch` | 连续完成后汇报阶段摘要 |\n| `interactive` | 每个阶段要求用户确认 |\n\n## 报告结构\n\n```markdown\n# 调研报告: [主题]\n\n> **查询**: [原始查询]\n> **日期**: [日期]\n> **引擎**: [使用的引擎]\n> **结果数**: [去重后数量]\n\n---\n\n## 核心结论 (要点锚定)\n\n1. **[结论1]** (置信度: [A/B/C/D/E])\n   - 来源: [来源列表]\n   - 依据: [简要说明]\n\n2. **[结论2]** (置信度: [A/B/C/D/E])\n   ...\n\n## 详细发现\n\n### [模块1]\n\n- **[发现1]** (置信度: [等级])\n  - 来源: [URL]\n  - 摘要: [内容摘要]\n\n- **[发现2]** ...\n\n### [模块2]\n...\n\n## 信息不足/存疑项\n\n- **[问题1]**: [说明信息不足的原因] (置信度: E)\n- **[问题2]**: [说明矛盾情况] (置信度: D)\n\n## 观点地图\n\n- **[观点/立场]**: [代表性说法]\n  - 来源: [URL]\n  - 使用限制: 仅作背景或假设, 不可直接当事实\n\n## 常见误区\n\n- **[误区/噪声]**: [为什么容易误导]\n  - 来源: [URL]\n  - 使用限制: 仅作负面样本或反面逻辑\n\n## 争议与不确定性\n\n- **[争议点]**: [为什么当前无法定论]\n  - 后续验证方向: [需要补充的来源或方法]\n\n## 时间演进\n\n- **[历史信息]**: [过去成立/现在可能失效/仍需更新]\n  - 日期: [发布日期或访问时间]\n  - 使用限制: 当前结论、历史背景或趋势判断\n\n## 来源分布\n\n| 等级 | 数量 | 占比 |\n|------|------|------|\n| A | [n] | [x%] |\n| B | [n] | [x%] |\n| C | [n] | [x%] |\n| D | [n] | [x%] |\n| E | [n] | [x%] |\n\n## 附录: 原始结果清单\n\n[按需附上完整结果列表]\n```\n\n## 交付方式\n\n| 目标 | 处理方式 | 状态 |\n|------|---------|------|\n| **本地 Markdown** | 保存或输出 `.md` 报告 | 默认 |\n| **claims-json** | 保存或输出结构化证据包 | 默认 |\n| **飞书/Notion/Google Docs/Obsidian** | 用户环境可用时再调用对应工具 | 可选 |\n\n## 质量控制检查清单\n\n交付前必须检查:\n\n- [ ] 每个核心结论都有置信度标注\n- [ ] 信息不足项明确标注, 不强行填充\n- [ ] 矛盾信息标注争议, 不自行判断\n- [ ] 来源分布表完整\n- [ ] 无 AI 腔调, 表述客观\n- [ ] 专业术语已解释或标注\n- [ ] 格式符合 Markdown 规范\n\nFile v0.1.0:references/06-fallback-guide.md\n\n# 降级方案指南\n\n## 场景 1: 无 API 引擎密钥\n\n**检测**: `TAVILY_API_KEY` / `TENCENTCLOUD_SECRET_ID` / `BAIDU_API_KEY` 均未配置\n\n**调用方式**: 有 Key 时由各适配器直接调用官方 REST API（如 `scripts/tavily_adapter.py` 调用 Tavily direct REST API）；不依赖用户另装外部工具或插件。\n\n**降级**: 自动跳过未配置的 API 引擎（状态 `skipped`），切换为免费 Web 搜索（DuckDuckGo/必应/搜狗）或宿主输入结果；输出 JSON 的 `tips` 字段给出带链接的分步配置引导（`tavily_missing` / `tencent_wsa_missing` / `baidu_api_missing`）\n\n**影响**: 结果质量可能降低，但流程完整\n\n**自检**:\n```bash\npython3 scripts/search_engine.py --doctor\n```\n\n## 场景 2: 无网络连接\n\n**检测**: 搜索请求超时或连接失败\n\n**降级**: 返回错误提示，建议用户手动搜索\n\n**输出**:\n```json\n{\n  \"error\": \"网络不可用，无法执行搜索\",\n  \"suggestion\": \"请检查网络连接后重试，或手动搜索后提供内容\"\n}\n```\n\n## 场景 3: 无 Node.js（微信抓取）\n\n**检测**: `os.path.exists(\"wx-article-fetch.js\")` 为 False\n\n**降级**: 跳过微信内容抓取，普通网页不受影响\n\n**影响**: 微信公众号文章内容无法获取，但标题和链接仍可用\n\n## 场景 4: 单个引擎故障\n\n**检测**: 引擎连续失败 3 次\n\n**降级**: 熔断该引擎 5 分钟，其他引擎继续工作\n\n**恢复**: 引擎成功后重置失败计数\n\n## 场景 5: 免费引擎安全验证或反爬\n\n**检测**: HTML 中出现验证码、安全验证、异常流量、验证跳转等特征（搜狗/必应/DuckDuckGo/头条均可能触发）\n\n**降级**: 标注 `engine_status: blocked`，跳过该引擎，继续使用其余可用引擎或宿主输入结果；DuckDuckGo 被拦截时自动降级 `bing_int` → `bing_cn`\n\n**重要边界**: 不绕过验证码、不伪造 Cookie、不使用代理池、不承诺云服务器稳定抓取微信公众号全文\n\n**解释**: blocked 代表搜索渠道被拦截，不代表资料不存在。evidence-pack 必须把该限制写入 `limitations`。\n\n## 场景 6: 宿主搜索结果已可用\n\n**检测**: 用户提供 `--input-results host_results.json`\n\n**处理**: 直接读取宿主搜索结果并进入去重、验证、分级；不调用宿主搜索 runtime\n\n**适用**: OpenClaw/Kimi Search 等环境中，agent 已经完成搜索，希望 VSP 负责资料质检\n\n## 场景 7: 所有 Web 引擎故障\n\n**检测**: 所有 Web 引擎返回空结果\n\n**降级**: 如果 API 引擎或宿主输入可用，继续处理；否则报错\n\n## 降级优先级\n\n搜索底盘分层：**宿主搜索地基 → L1 API 主力 → L2 免费 HTML 引擎兜底**。宿主搜索输入（`--input-results`）始终是首选输入源，不占用引擎配额、不受反爬限制，以下梯队仅指 VSP 自主搜索时的顺序：\n\n```\n第 1 梯队（L1 API 主力）：tencent_wsa（已配置时，中文主力）/ baidu_api（已配置时，百度官方源）→ tavily（已配置时，国际/英文向）\n第 2 梯队（L2 免费 HTML）：duckduckgo\n第 3 梯队（L2 免费 HTML）：bing_cn / sogou\n最后：无网络或全部不可用（提示手动搜索或提供手动材料）\n```\n\n**组合形态**（从高到低）：\n\n```\n1. 宿主搜索 + API 引擎（tencent_wsa / baidu_api / tavily）+ Web 引擎（全功能）\n2. 宿主搜索 + VSP 质检（不额外搜索）\n3. 宿主搜索 + Web 引擎（无 API Key）\n4. 仅 Web 引擎（无 API Key，无宿主）\n5. 仅 API 引擎（无 Web 引擎，无宿主）\n6. 无网络（提示手动搜索或提供手动材料）\n```\n\nAPI 引擎未配置时，输出 JSON 的 `tips` 字段会给出 `tencent_wsa_missing` / `baidu_api_missing` / `tavily_missing` 引导，配置步骤见 `references/10-api-setup.md`。\n\n## Google 可选策略\n\nGoogle 暂不作为默认搜索源。未来可加入 `google_cse` 可选适配，但必须显式配置 API key、搜索引擎 ID、网络/代理和配额；未配置时不影响默认搜索流程。\n\n## 配置建议\n\n对于无 API 密钥的环境，建议配置：\n```bash\n# 仅使用免费 Web 引擎\npython3 search_engine.py \"query\" --engines duckduckgo,bing_cn,sogou\n```\n\n对于受限环境，建议最小配置：\n```bash\n# 最小依赖：仅需 Python 3.8+\npython3 search_engine.py \"query\" --engines duckduckgo --budget lite\n```\n\n对于宿主 agent 已搜索的环境：\n```bash\npython3 search_engine.py \"query\" --input-results host_results.json --engines none --output claims-json\n```","readmeExcerpt":"Skill: Verified Search Pro Owner: hellohuanghuang Summary: 可信研究助理，调用多引擎搜索进行资料搜集，降噪过滤，交叉验证，生成结构化的可信Markdown报告与证据包。 Tags: latest:0.1.0 Version history: v0.1.0 | 2026-07-21T13:00:44.910Z | auto verified-search-pro v2.1.1 初始发布 - 多引擎搜索（腾讯云WSA、百度千帆、Tavily、必应、搜狗、DuckDuckGo）集成，支持场景级引擎优选与降级机制。 - 自动清洗、分级、降噪与交叉验证，输出可靠的 Markdown 研究报告与 claims-json/evidence-pack 证据包。 - 明确的信息源分级与置信度定级流程，内置分步流程与检查点，提升资料质量与可复核性。 - 按需文档分层加载，支持大规模调研与自动","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"python3 scripts/search_engine.py \"如何消除比熊泪痕？\" --search-concepts \"比熊,泪痕,消除方法\" --verify --output claims-json"},{"language":"text","snippet":"benchmark/\n├── queries.json      # 标准查询集（中文查询必须带 concepts 字段）\n├── run.py            # 运行所有查询并保存结果\n├── evaluate.py       # 评估结果是否通过门禁\n├── fixtures/         # golden report 基线（tencent_wsa+tavily 双 API 路径，2026-07-17 固化，已审核）\n└── results*/         # 本地运行产物，不入库（.gitignore 已排除）"},{"language":"bash","snippet":"# 1. 运行查询（默认免费引擎组 duckduckgo,sogou,bing_cn，无需任何 API Key）\npython3 benchmark/run.py\n\n# 2. 评估结果（默认读取 benchmark/results/summary.json）\npython3 benchmark/evaluate.py\n\n# 3. API 路径（需已配置对应 API Key；输出目录与评估 summary 需成对指定）\npython3 benchmark/run.py --engines tencent_wsa,tavily --output-dir benchmark/results-api\npython3 benchmark/evaluate.py --summary benchmark/results-api/summary.json\n# 已配置 BAIDU_API_KEY 时可加入 baidu_api：\n# python3 benchmark/run.py --engines tencent_wsa,tavily,baidu_api --output-dir benchmark/results-api"},{"language":"bash","snippet":"# 事实核查\nbash examples/fact_check.sh \"OpenAI CEO 是谁\"\n\n# 深度调研\nbash examples/research_report.sh \"2026 年固态电池技术路线\"\n\n# 宿主输入质检（会自动生成示例输入文件）\nbash examples/host_input.sh"},{"language":"bash","snippet":"bash examples/fact_check.sh \"Python 3.14 发布日期\""},{"language":"bash","snippet":"# 1. 克隆仓库\ngit clone https://github.com/hellohuanghuang/verified-search-pro.git\ncd verified-search-pro\n\n# 2. 检查环境\npython3 scripts/search_engine.py --doctor\n\n# 3. 生成你的第一份证据包\npython3 scripts/search_engine.py \"你的查询\" --verify --output claims-json"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"***\n\nname: verified-search-pro\nlicense: \"MIT\"\ndescription: \"面向深度调研和事实核查的可信研究助理。在宿主搜索能力的基础上，调用腾讯云联网搜索（WSA）、百度（千帆）、Tavily、必应、搜狗、DuckDuckGo 多引擎搜索，将资料清洗、降噪、交叉验证为 Markdown 报告与 claims-json/evidence-pack 证据包。触发场景：调研、验证、确认、政策追踪、资料质检、证据包、背调、交叉验证、多搜一下、搜一下、查一下。\"\ncompatibility: \"Requires Python 3.8+ and internet access. Optional API engines: TAVILY\\_API\\_KEY, TENCENTCLOUD\\_SECRET\\_ID + TENCENTCLOUD\\_SECRET\\_KEY, BAIDU\\_API\\_KEY (all unset falls back to free web engines). Optional: Node.js for WeChat fetching.\"\nallowed-tools: \"Read, Bash, Write, SearchReplace, RunCommand\"\nmetadata:\nversion: \"2.1.1\"\nauthor: \"黄艾伦（那个谁）\"\ntags:\n\\- \"搜索\"\n\\- \"信息验证\"\n\\- \"多引擎\"\n\\- \"交叉验证\"\n\\- \"降噪\"\n\\- \"信息源分级\"\n\\- \"Tavily\"\n\\- \"必应\"\n\\- \"搜狗\"\n\\- \"DuckDuckGo\"\nplatforms:\n\\- \"openclaw\"\n\\- \"claude-code\"\n\\- \"codex\"\n\\- \"hermes\"\nopenclaw:\nemoji: \"🔍\"\nrequires:\nbins: \\[\"python3\"]\nenv: \\[\"TAVILY\\_API\\_KEY\", \"TENCENTCLOUD\\_SECRET\\_ID\", \"TENCENTCLOUD\\_SECRET\\_KEY\", \"BAIDU\\_API\\_KEY\"]\ninstall: \\[]\n------------\n\n# Verified Search Pro v2.1.1 · 可信研究助理\n\n> 从“搜到资料”到“确认资料能不能用”。搜索工具负责找资料，本 Skill 负责质检资料。\n> 默认交付：Markdown 给人阅读，claims-json/evidence-pack 给 agent、测试和后续工作流使用。平台适配：Codex / Claude Code / 通用 Prompt；OpenClaw 等个人环境作为可选示例。\n\n***\n\n## 触发方式\n\n当用户请求涉及以下场景或关键词时，优先使用本 Skill 处理搜索与质检：\n\n**触发场景**：确认真相、验证搜索、调研、政策追踪、机构/项目研究、信息验真、竞品追踪、人物/机构背调、多源比对。\n\n**触发关键词**：调研、验证、确认、搜索、政策追踪、资料质检、证据包、背调、交叉验证、多搜一下、搜一下、查一下。\n\n## 快速导航（Progressive Disclosure）\n\n本 Skill 采用分层加载架构——按需读取，避免上下文膨胀。默认使用 `--budget auto` 控制输出大小（256k 为上限），由轻量规则选择 `lite / standard / deep`，自动匹配任务规模。\n\n**表述纪律**：本文件只给索引与铁律；凡涉及引擎清单、场景策略、配置步骤等易变细节，一律以 references 对应文件为唯一事实源，本文件不自行概括，避免两边表述漂移。\n\n| 当前阶段                   | 加载文档                                                                      | 说明                                      |\n| ---------------------- | ------------------------------------------------------------------------- | --------------------------------------- |\n| **Phase 1: 任务拆解**      | `references/01-search-strategy.md`                                        | 路由逻辑、场景引擎表、查询拆分（引擎策略唯一事实源）            |\n| **Phase 2-3: 搜索获取与降噪** | `references/02-source-ranking.md` + `references/04-noise-filtering.md`    | 信息源分级、降噪流程、去重规则                         |\n| **Phase 4: 验真比对**      | `references/03-confidence-rubric.md` + `references/04-noise-filtering.md` | 置信度定级、交叉验证、矛盾处理                         |\n| **Phase 5: 交付输出**      | `references/05-output-template.md` + `assets/report-template.md`          | Markdown + claims-json 默认交付             |\n| **无 API 密钥或引擎被拦截**    | `references/06-fallback-guide.md`                                         | 降级方案（降级唯一事实源）                           |\n| **API 配置**             | `references/10-api-setup.md`                                              | Tavily / 腾讯云 WSA / 百度千帆申请与配置引导          |\n| **接入无专用适配的平台**         | `references/07-cross-platform.md`                                         | 通用 Prompt 注入（Claude Code / Codex 请改用 `.claude/` / `.codex/` 专用文件） |\n| **2.1 方法论审计**          | `references/08-trust-quality-framework.md`                    "},{"path":"benchmark/fixtures/README.md","content":"# Golden Report 基线（benchmark/fixtures/）\n\n本目录固化了 VSP 的 golden report 基线，作为后续迭代的回归对照基准。\n\n## 基线来源\n\n| 项目 | 说明 |\n|------|------|\n| 生成日期 | 2026-07-17 |\n| 引擎组合 | `tencent_wsa,tavily`（双 API 真实路径，非 mock） |\n| 查询集版本 | `benchmark/queries.json` 带 `concepts` 字段的版本（6 条中文查询，含 mode/budget/expected 门禁期望） |\n| 生成方式 | `python3 benchmark/run.py --engines tencent_wsa,tavily --output-dir benchmark/results-api` |\n| 审核状态 | 甲方已审核批准后固化 |\n\n## 文件清单\n\n- 6 个查询结果 JSON：与 `benchmark/queries.json` 中 6 条查询一一对应（fresh-fact / policy-claim / perspective-mapping / source-laundering / temporal-drift / technical-claim）\n- `summary.json`：当次运行的聚合摘要。其中 `result_path` 字段保留生成时的原始相对路径记录（指向 `benchmark/results-api/`，属运行产物，未做改写）\n\n## 内容检查结论（固化时已执行）\n\n- 已 grep 确认**不含任何密钥**（无 `TAVILY_API_KEY` / `SECRET` / `AKID` / `bce-v3` / `ALTAK` / `tvly-` / `Bearer` 字样）\n- 已确认**不含本机绝对路径**（无 `/Users/` 前缀字段）\n\n## 用途与变更规则\n\n1. 用作后续迭代的回归对照基准（如 prompt/解析器/信任模型变更前后 diff）。\n2. **更换基线需甲方/维护者审核**，并在 PR 中说明理由（见 `CONTRIBUTING.md` 发布门禁）。\n3. 注意：基线内容反映生成时点的代码行为。若后续版本对用户可见文案做合法变更（如 v2.1.0-beta.2 限制标注中文化），与基线 diff 时出现对应差异属预期，评估时应以最新 `evaluate.py` 门禁为准，而非逐字节比对。\n4. `benchmark/results*/` 为本地运行产物，不入库；本目录是唯一入库的结果基线。"},{"path":"benchmark/README.md","content":"# Verified Search Pro Benchmark\n\n可复验的 benchmark 门禁，用于验证 VSP 在不同查询类型上的表现。\n\n## 结构\n\n```\nbenchmark/\n├── queries.json      # 标准查询集（中文查询必须带 concepts 字段）\n├── run.py            # 运行所有查询并保存结果\n├── evaluate.py       # 评估结果是否通过门禁\n├── fixtures/         # golden report 基线（tencent_wsa+tavily 双 API 路径，2026-07-17 固化，已审核）\n└── results*/         # 本地运行产物，不入库（.gitignore 已排除）\n```\n\n## 运行 benchmark\n\n```bash\n# 1. 运行查询（默认免费引擎组 duckduckgo,sogou,bing_cn，无需任何 API Key）\npython3 benchmark/run.py\n\n# 2. 评估结果（默认读取 benchmark/results/summary.json）\npython3 benchmark/evaluate.py\n\n# 3. API 路径（需已配置对应 API Key；输出目录与评估 summary 需成对指定）\npython3 benchmark/run.py --engines tencent_wsa,tavily --output-dir benchmark/results-api\npython3 benchmark/evaluate.py --summary benchmark/results-api/summary.json\n# 已配置 BAIDU_API_KEY 时可加入 baidu_api：\n# python3 benchmark/run.py --engines tencent_wsa,tavily,baidu_api --output-dir benchmark/results-api\n```\n\n基线说明与变更规则见 `fixtures/README.md`；发版前必须执行的完整门禁见 `CONTRIBUTING.md`「发布门禁」一节。\n\n## 查询覆盖场景\n\n| ID | 场景 | 说明 |\n|----|------|------|\n| fresh-fact | 新鲜事实 | 验证具体事实能否得到可信结论 |\n| policy-claim | 政策声明 | 验证政策类查询的置信度 |\n| perspective-mapping | 观点映射 | 验证争议性话题能生成 perspective_map |\n| source-laundering | 来源去重 | 验证多源转载不会错误提升置信度 |\n| temporal-drift | 时间演进 | 验证历史 vs 当前证据被正确区分 |\n| technical-claim | 技术声明 | 验证技术类查询的局限性标注 |\n\n## 贡献新查询\n\n1. 在 `queries.json` 中添加新查询和 `expected` 条件。\n2. 运行 `python3 benchmark/run.py` 生成结果。\n3. 人工审核结果后，如需作为回归基线，放入 `fixtures/`。\n4. 提交 PR 时说明查询设计的理由。"},{"path":"examples/README.md","content":"# Verified Search Pro 示例\n\n本目录包含可直接运行的示例脚本，帮助你快速体验 VSP 的核心能力。\n\n> **从 zip 下载代码的用户**：GitHub 自动生成的 \"Source code (zip)\" 解压后可能丢失脚本的可执行权限（部分解压工具不还原 Unix 权限位），直接 `./examples/xxx.sh` 会报 \"Permission denied\"。两种解决方式（任选其一）：\n>\n> - 一律用 `bash examples/xxx.sh` 运行（本 README 所有示例均为此写法，无需任何权限）；\n> - 或执行一次 `chmod +x examples/*.sh` 恢复权限。\n>\n> Release 页面另附官方 `.tar.gz` 包（保留可执行权限），解压后可直接 `./examples/xxx.sh`。\n\n## 示例列表\n\n| 脚本 | 用途 | 说明 |\n|------|------|------|\n| `fact_check.sh` | 事实核查 | 轻量模式，快速验证一个具体事实 |\n| `research_report.sh` | 深度调研 | 生成 Markdown 研究报告 |\n| `host_input.sh` | 宿主输入质检 | 把 agent 已搜到的结果交给 VSP 验证 |\n\n## 快速运行\n\n```bash\n# 事实核查\nbash examples/fact_check.sh \"OpenAI CEO 是谁\"\n\n# 深度调研\nbash examples/research_report.sh \"2026 年固态电池技术路线\"\n\n# 宿主输入质检（会自动生成示例输入文件）\nbash examples/host_input.sh\n```\n\n## 输出说明\n\n- `--output claims-json`：结构化证据包，适合 agent 消费\n- `--output md`：Markdown 报告，适合人阅读\n- `--output json`：原始融合结果\n\n## 自定义查询\n\n所有脚本都支持传入自定义查询作为第一个参数：\n\n```bash\nbash examples/fact_check.sh \"Python 3.14 发布日期\"\n```"},{"path":"README.md","content":"# Verified Search Pro v2.1.1 · 可信研究助理\n\n> 搜索工具负责\"找资料\"，Verified Search Pro 负责\"验资料\"：清洗噪声、核对来源、标注置信度和不确定性。\n>\n> [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/)\n> [![Zero Dependencies](https://img.shields.io/badge/dependencies-zero-brightgreen.svg)]()\n> [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n---\n\n## 5 分钟上手\n\nVerified Search Pro 是一个纯 Python 标准库的 AI Skill，无需安装任何依赖即可运行。\n\n### 环境要求\n\n- Python 3.8 或更高版本\n- 可选：API 引擎密钥——[`TAVILY_API_KEY`](https://tavily.com/)（国际/英文向）、`TENCENTCLOUD_SECRET_ID` + `TENCENTCLOUD_SECRET_KEY`（腾讯云 WSA，中文主力）、`BAIDU_API_KEY`（百度千帆 AI 搜索）；都不配置也能用 DuckDuckGo/必应/搜狗免费 Web 引擎兜底（配置步骤见 `references/10-api-setup.md`）\n- 可选：Node.js（只在抓取微信文章内容时需要）\n\n### 三步跑起来\n\n```bash\n# 1. 克隆仓库\ngit clone https://github.com/hellohuanghuang/verified-search-pro.git\ncd verified-search-pro\n\n# 2. 检查环境\npython3 scripts/search_engine.py --doctor\n\n# 3. 生成你的第一份证据包\npython3 scripts/search_engine.py \"你的查询\" --verify --output claims-json\n```\n\n### 快速示例\n\n```bash\n# 事实核查（轻量）\npython3 scripts/search_engine.py \"OpenAI CEO 是谁\" --budget lite --verify\n\n# 深度调研（更多证据）\npython3 scripts/search_engine.py \"2026 年固态电池技术路线\" --budget deep --verify --output claims-json\n\n# 中文自然语言查询：先提取概念再搜索（推荐）\npython3 scripts/search_engine.py \"如何消除比熊的泪痕\" \\\n  --search-concepts \"比熊,泪痕,消除方法\" --verify --output claims-json\n\n# 用 agent 已经搜到的结果做质检\npython3 scripts/search_engine.py \"你的查询\" --input-results host_results.json --engines none --output claims-json\n```\n\n跑完测试：\n\n```bash\npython3 -m unittest discover -s tests\n```\n\n---\n\n## 项目简介\n\nVerified Search Pro 是一套面向深度调研和事实核查的可信研究 Skill。当前公开版本是 **v2.1.1**：在 v2.0.0 稳定版基础上新增腾讯云 WSA 与百度千帆两个 API 引擎（与 Tavily 组成 L1 主力，未配置自动跳过）、中文搜索优化、DuckDuckGo 引擎与降级、必应中文疑问词改写、搜狗链接解密、头条低频引擎、限制标注中文化、强制 LLM 概念提取、更强的 Tavily 询问机制和零第三方依赖保持。\n\n它不是要替代 Tavily、Exa、Perplexity、Kagi 或普通搜索引擎，而是把多来源资料整理成可复核的证据包和研究结论。\n\n- **资料获取**：可调用 Tavily API（可选增强）+ 必应/搜狗/DuckDuckGo（Web 搜索），也可在无 Tavily 时降级\n- **中文搜索优化**：n-gram 分词（2-4 字切片）+ `--search-concepts` 由 AI 提取核心关键词补充，避免中文整句匹配噪声\n- **Tavily 缺失提醒**：未配置 Tavily 时自动在 JSON 输出 `tips` 字段，Agent 读取后自然提醒用户配置\n- **宿主搜索输入**：OpenClaw/Kimi 等 agent 已经搜到的结果可通过 `--input-results` 交给 VSP 质检\n- **智能融合去重**：URL 归一化 + 内容指纹 + 文本相似度 + 查询相关性过滤，四重去重\n- **反向验证**：提取关键实体（n-gram + concepts），验证结果内容相关性\n- **置信度定级**：A-E 五级，从\"多权威确认\"到\"明确不实\"\n- **信息源分级**：A（权威官方）→ E（匿名论坛），自动权重调整\n- **情报分区**：可信结论、观点地图、常见误区、争议不确定、时间演进分别标注\n- **默认交付**：Markdown 给人阅读，`claims-json`/evidence-pack 给 agent、测试和后续工作流使用\n\n---\n\n## 输出示例\n\n`--output claims-json` 会输出一个结构化证据包，关键字段如下：\n\n```json\n{\n  \"schema_version\": \"v2-alpha.evidence-pack\",\n  \"query\": \"你的查询\",\n  \"research_mode\": \"fact\",\n  \"search\": { \"budget\": \"lite\", \"evidence_returned\": 5 },\n  \"claims\": [{ \"claim\": \"你的查询\", \"confidence\": \"B\", \"supporting_evidence\": [\"ev-1\", \"ev-2\"] }],\n  \"trusted_conclusions\": [...],\n  \"perspective_map\": { \"items\": [...] },\n  \"common_misconceptions\": [...],\n  \"controversies_uncertainties\": { \"items\": [...] },\n  \"temporal_evolution\": [...],\n  \"evidence\": [\n    {\n      \"evidence_id\": \"ev-1\",\n      \"url\":"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"可信研究助理，调用多引擎搜索进行资料搜集，降噪过滤，交叉验证，生成结构化的可信Markdown报告与证据包。 Skill: Verified Search Pro Owner: hellohuanghuang Summary: 可信研究助理，调用多引擎搜索进行资料搜集，降噪过滤，交叉验证，生成结构化的可信Markdown报告与证据包。 Tags: latest:0.1.0 Version history: v0.1.0 | 2026-07-21T13:00:44.910Z | auto verified-search-pro v2.1.1 初始发布 - 多引擎搜索（腾讯云WSA、百度千帆、Tavily、必应、搜狗、DuckDuckGo）集成，支持场景级引擎优选与降级机制。 - 自动清洗、分级、降噪与交叉验证，输出可靠的 Markdown 研究报告与 claims-json/evidence-pack 证据包。 - 明确的信息源分级与置信度定级流程，内置分步流程与检查点，提升资料质量与可复核性。 - 按需文档分层加载，支持大规模调研与自动","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":848,"uniquenessScore":50,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T10:01:22.467Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T10:01:22.467Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T17:19:34.035Z","emptyReason":null},"items":[{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-10T18:48:31.762Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}