Multi Search Engine
一个面向 Research 场景的 Agent 技能。原始说明:Multi search engine integration with 16 engines (7 CN + 9 Global). Supports advanced search operators, time filters, site search, privacy engines, and Wolfra...
name: net-deep-research
description: Perform deep multi-source internet research before answering. Use when the user prefixes a request with /net, asks for the latest information, wants real-time facts, requests web verification, asks which framework, tool, product, policy, or implementation path is best right now, or needs evidence-based answers synthesized from multiple public sources such as official docs, official sites, GitHub, package registries, standards sites, and other stable public references.
When this skill is triggered, do not answer immediately.
Turn the request into a controlled research workflow:
If the user message starts with /net:
/net prefixThen restate the question in one sentence before researching.
Produce answers that are:
Apply these rules strictly:
Verified FactsInferenceChoose one primary_mode. Add one secondary_mode only if it clearly helps.
Use for questions about latest status, current availability, recent releases, or whether something is already live.
Use for questions about support, compatibility, feature availability, plans, versions, models, or platforms.
Use for questions about how to build, integrate, deploy, or implement something, including best practices and architecture.
Use for questions about choosing among alternatives, policy confirmation, framework selection, official rules, or tradeoff analysis.
Apply these rules in order:
Mode C.Mode D.Mode B.Mode A.Use a secondary mode only when both are necessary:
Mode A + Mode B: current support statusMode B + Mode C: whether possible, then how to implementMode D + Mode C: choose a solution, then outline implementationBefore searching, extract:
subjecttarget_capability if anytime_scope if providedregion_scope if providedversion_scope if providedDo not invent missing scopes.
Then rewrite the request as one normalized question.
Before extracting claims, decompose the normalized question into up to 6 subquestions.
Always try to produce:
core_subquestions: what must be answered to resolve the user's requestverification_subquestions: what boundaries, prerequisites, or limitations must be checkedcountercheck_subquestions: what likely counterexamples, exceptions, or contradictions should be testedFor simple questions, 2-3 subquestions is enough.
For complex questions, use 4-6 subquestions.
Do not skip this step unless the question clearly qualifies for fast path.
Derive at most 3 critical claims from the subquestions.
Typical claim shapes:
Every important conclusion in the final answer should map back to one of these claims.
Plan queries per claim, not just per question.
For each important claim, generate these core query slots:
direct_queryofficial_queryrelease_querycontradiction_queryAdd one mode-specific slot:
Mode A -> recent_queryMode B -> compatibility_queryMode C -> implementation_queryMode D -> comparison_query or policy_queryKeep the total query count between 4 and 8 for a normal request.
For technical, product, framework, or API questions, prefer bilingual query planning when helpful:
Use a staged research workflow.
Search primary and official sources first.
Goal: establish the strongest direct evidence for each claim.
Add independent support from a different strong source family.
Goal: confirm scope, version, timing, or practical limitations.
Run only when needed.
Trigger this round when:
Goal: explain the disagreement, not just note it.
Use these defaults unless the question clearly demands more depth:
max_search_rounds = 3target_primary_sources_per_core_claim = 1target_total_supporting_sources_per_core_claim = 2max_key_claims = 3Stop when all of these are true:
Escalate to another search round when any of these are true:
Use source families, not fixed websites, as the primary routing method.
Prefer these source families when relevant:
Prefer sources that are:
Avoid depending on:
If direct official fetching fails, use this fixed fallback order and do not skip steps:
Apply source dedup rules:
Reject a source as key evidence if it:
Score each candidate source across 6 dimensions, each from 0 to 2.
Apply the rules for each dimension mechanically: start from score 2 and walk down until a condition matches.
Total score range: 0-12.
Apply these checks in order. Stop at the first match.
| Condition | Score |
|---|---|
| The domain IS the official domain of the subject under research (e.g. nextjs.org for Next.js, python.org for Python, rust-lang.org for Rust) | 2 |
| The domain IS a .gov, .edu, or standards-body domain (e.g. rfc-editor.org, w3.org, ietf.org, iso.org, ieee.org) | 2 |
| The page IS on the subject's own GitHub/GitLab org (e.g. github.com/facebook/react for React) | 2 |
| The page IS on a curated developer reference platform (e.g. MDN, caniuse.com, web.dev, docs.rs, nodejs.org/api) | 1 |
| The page IS an official package-registry entry (e.g. npmjs.com/package/*, pypi.org/project/*, crates.io/crates/*) | 1 |
| The page IS authored by a verified project maintainer or recognized core contributor (e.g. a maintainer's blog, their personal GitHub, a signed commit/issue) | 1 |
| The page IS on an established tech publication with editorial process (e.g. arstechnica.com, lwn.net, theverge.com for product news only) | 1 |
| None of the above match | 0 |
Prefer automated scoring. For each candidate URL, run the bundled Python scorer first:
python3 tools/score_stability.py --json "<url>"
This returns {"score": <0|1|2>, "rule": "<matched_rule>", "explanation": "..."}.
Use the returned score directly. Only fall back to manual scoring when the Python runtime is unavailable.
Manual scoring rules (identical to the script's logic, for reference):
| Condition | Score |
|---|---|
| The URL IS a GitHub/GitLab permalink: /releases/tag/*, /blob/<sha>/*, /commit/*, or a repo root with a fixed name | 2 |
| The URL IS on docs.* subdomain, *.readthedocs.io, *.github.io, or a /docs/* path on the official domain | 2 |
| The URL IS a .gov, .edu, standards-body, or institutional archive page | 2 |
| The URL IS a package-registry permalink (e.g. npmjs.com/package/<name>, pypi.org/project/<name>) | 2 |
| The URL IS an official blog post on the project's own domain (e.g. nextjs.org/blog/*) | 1 |
| The URL IS an official mirror or alternate-source page | 1 |
| The URL IS a reputable news outlet or established tech-publication article | 1 |
| The URL IS a third-party blog platform (e.g. medium.com, dev.to) — content may be reorganized or paywalled later | 1 |
| The page IS a social-media post (Twitter/X, Reddit, Hacker News, etc.) or a personal blog with no institutional backing | 0 |
| The URL contains session IDs, temporary tokens, or link-shortener domains (t.co, bit.ly, etc.) | 0 |
Apply these checks in order. Stop at the first match.
| Condition | Score |
|---|---|
| Page loaded successfully with NO login prompt, NO paywall overlay, NO captcha challenge, and NO geo-block | 2 |
| Page loaded but requires a free account to view beyond the first N paragraphs (e.g. Medium metered wall) | 1 |
| Page loaded but the site is known to be geo-restricted in some major regions (e.g. bard.google.com in specific regions) | 1 |
| Page requires login or paid subscription to view the core content; the visible portion is only a summary | 0 |
| Page is entirely behind a paywall, login wall, or captcha gate | 0 |
This dimension is scored relative to the question, not by absolute recency alone.
Step 1: Determine the reference window.
| Question has... | Reference window |
|---|---|
| Explicit time_scope (e.g. "in 2024", "last month", "since v18") | Use the user-stated window |
| A specific version number | Match against that version only |
| No time scope | Default to last 12 months |
Step 2: Assign score based on how the source falls relative to the window.
| Condition | Score |
|---|---|
| Source was published or last-updated WITHIN the reference window, AND explicitly covers the version/timeline asked | 2 |
| Source was published or last-updated within the reference window, but does not explicitly mention dates or versions | 1 |
| Source date is UNKNOWN but the content appears current (e.g. mentions a recent feature, links to up-to-date references) | 1 |
| Source was published or last-updated 12-24 months outside the reference window, but no evidence it has been superseded | 1 |
| Source is clearly OUTSIDE the reference window by > 24 months | 0 |
| Source has been explicitly SUPERSEDED by a later official announcement, release, or deprecation notice | 0 |
For version-specific questions, apply this version-based override:
| Condition | Score |
|---|---|
| Source explicitly documents or references the target version | 2 |
| Source covers a nearby version (± 1 major) with the same API surface | 1 |
| Source covers a version known to have breaking changes relative to the target | 0 |
Quantified by evidence proximity: how many inference steps are needed to connect source content to the claim.
| Condition | Score |
|---|---|
| Source contains a direct, explicit statement that confirms or refutes the claim — zero inference steps needed | 2 |
| Source covers the general topic and allows ONE logical inference step to reach the claim (e.g. it lists a supported feature set, and the user's feature is clearly inside/outside it) | 1 |
| Source only mentions the topic tangentially, or requires TWO OR MORE inference steps to connect to the claim | 0 |
| Source is about a different subject entirely | 0 |
This dimension punishes mirroring. Two pages repeating the same official announcement should not both score high.
| Condition | Score |
|---|---|
| This IS the original source: the official announcement, the original research paper, the first-hand documentation, the actual release note, the commit itself | 2 |
| This is a SECONDARY source that retells or analyzes the original, but ADDS meaningful original context (e.g. new benchmark data, a comparison the original didn't do, an implementation walkthrough) | 1 |
| This is a TERTIARY or DERIVATIVE source: a pure repost, a summary without added insight, a "news roundup", or a mirrored press release | 0 |
| This is a community discussion that merely links to or quotes the primary source without adding verified new information | 0 |
authority >= 1 AND relevance >= 1primacy = 2 whenever possibleprimacy = 0, explicitly flag this as a "derivative only" evidence gapA:2 S:2 A:2 F:1 R:2 P:2 = 11/12)Before doing the full 6-dimension score, apply these instant-reject / instant-accept shortcuts:
| Shortcut | Action |
|---|---|
| Source is a social media post (Twitter/X, Reddit, HN) AND is not from a verified project maintainer account | Auto-score authority=0, stability=0; proceed with remaining 4 dims only |
| Source is a content farm, SEO spam, or AI-generated slop | Reject immediately; do not score |
| Source is the official GitHub release page of the EXACT project the user asked about | Auto-score authority=2, stability=2, primacy=2; score remaining 3 dims fresh |
| Source is a community forum (StackOverflow, Reddit thread) with an accepted answer from a recognized maintainer | Score normally; authority may be 1 for the maintainer's answer
For each claim, extract evidence items with:
claim_idsource_titlesource_urlsource_date_hint if availableevidence_snippetsource_scorestance: support, oppose, or partialDo not over-quote. Extract only the part needed to support the claim.
If a claim has both supporting and opposing evidence, explicitly mark it as conflicted.
Only use these conflict causes:
Do not invent a conflict explanation without support.
When a claim is conflicted, internally build this mini-structure before answering:
claimsupporting_evidenceopposing_evidenceconflict_causecurrent_best_explanationresidual_uncertaintyAssign confidence per key claim:
Before writing the answer, build this internal structure:
question_restatementprimary_modesecondary_mode if anynormalized_questionsubquestionsclaimsevidence_by_claimconflictsuncertaintiesfinal_conclusionsanswer_outlineFor predictive, market, macro, or outlook questions, the evidence map must also separate:
verified_factsinferenceDo not skip this step.
Default section order:
Question RestatementShort AnswerKey FindingsCross-Source NotesUncertainties or LimitsSourcesFor predictive, market, macro, or outlook questions, use this stricter order:
Question RestatementShort AnswerVerified FactsInferenceCross-Source NotesUncertainties or LimitsSourcesFor implementation or comparison questions, add a concise Recommendation block when useful.
In Short Answer:
In Key Findings:
In Cross-Source Notes:
In Verified Facts:
In Inference:
In Uncertainties or Limits:
In Sources:
Use fast path only when:
Even then:
If the user asks:
/net What is the best agent framework right now, and use it to help me design a game?Then:
Mode D with Mode C secondaryResearch first.
Model the question second.
Resolve conflicts third.
Answer last.