deep-research
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseDeep Research — Iterative Research Engine
深度研究——迭代式研究引擎
An autonomous, multi-step research engine that performs exhaustive information
gathering and synthesis. Unlike a single , this skill implements an
iterative loop where the agent plans, searches, extracts, synthesizes, and
decides when to stop — producing a cited report with structured evidence,
source quality tiers, and explicit gaps/contradictions sections.
web_searchInspired by PewDiePie's Odysseus project, Alibaba/Tongyi's IterResearch
approach, and the sn-deep-research evidence-structuring architecture
(OpenSenseNova/SenseNova-Skills, MIT). The full 9-role sn pipeline was
evaluated and intentionally NOT adopted — only the evidence.json layer and
refute-polarity requirement were ported, based on empirical side-by-side
testing (July 2026). See .
references/structured-evidence-format.mdv1.2.0 changes (July 2026): overview-first report structure (comparison
table right after executive summary), language anchoring (BCP 47), structured
evidence step (3e), refute polarity requirement, source quality classification,
explicit contradictions + gaps sections. Architecture diagram corrected.
v1.3.0 changes (July 2026): source quality ranking and weighting —
primary (3×) > secondary (2×) > tertiary (1×). Conflict resolution by quality
tier. Quality distribution check (healthy/acceptable/weak) before writing.
Tertiary source overreliance pitfall. Source table now shows quality
distribution summary. Prompted by user noting too many tertiary sources in
the self-hosting vs API report.
v1.5.0 changes (July 2026): adaptive depth (complexity-based round caps),
optional clarification phase (Step 0), token budget awareness, numbered
citations, progressive empty-search refinement, explicit synthesis prompt
structure. Concepts adapted from DocsGPT's ResearchAgent (arc53/DocsGPT, MIT).
See for the concept mapping.
references/docsgpt-concepts.md这是一款自主式多步骤研究引擎,可进行全面的信息收集与合成。与单次不同,该技能实现了一个由Agent规划、搜索、提取、合成并决定停止时机的迭代循环,最终生成包含结构化证据、来源质量层级以及明确的空白/矛盾章节的引用报告。
web_search灵感来源于PewDiePie的Odysseus项目、阿里巴巴/通义的IterResearch方法,以及sn-deep-research的证据结构化架构(OpenSenseNova/SenseNova-Skills,MIT许可)。经过评估,未采用完整的9角色sn流水线——基于2026年7月的实证对比测试,仅移植了evidence.json层和反驳极性要求。详见。
references/structured-evidence-format.mdv1.2.0更新(2026年7月):优先展示概述的报告结构(执行摘要后直接附对比表格)、语言锚定(BCP 47标准)、结构化证据步骤(3e)、反驳极性要求、来源质量分类、明确的矛盾+空白章节。修正了架构图。
v1.3.0更新(2026年7月):来源质量排名与权重——一级来源(3倍权重)>二级来源(2倍权重)>三级来源(1倍权重)。按质量层级解决冲突。撰写前进行质量分布检查(健康/可接受/薄弱)。新增三级来源过度依赖陷阱提示。来源表格现在显示质量分布摘要。该更新源于用户指出在「自托管vs API」报告中存在过多三级来源的问题。
v1.5.0更新(2026年7月):自适应深度(基于复杂度的循环上限)、可选澄清阶段(步骤0)、token预算感知、编号引用、渐进式空搜索优化、明确的合成提示结构。概念改编自DocsGPT的ResearchAgent(arc53/DocsGPT,MIT许可)。概念映射详见。
references/docsgpt-concepts.mdWhen to use
使用场景
- User asks for "deep research", "research report", "comprehensive analysis"
- User wants a written report on a topic (not just a quick answer)
- Question requires multi-source synthesis with citations
- User says "look into X in depth" or "write a report on X"
- 用户提出「深度研究」「研究报告」「综合分析」等需求
- 用户需要针对某一主题的书面报告(而非快速答案)
- 问题需要多源合成并附带引用
- 用户提出「深入研究X」或「撰写关于X的报告」
When NOT to use
非使用场景
- Entity vetting/dossiers → use (has sanctions screening, structured lenses)
entity-research - Recurring news digests → use (has cron, dedup, multi-language)
news-monitoring - Source-grounded Q&A from collected sources → use (has vault + RAG)
notebooklm-mode - Quick factual question → just use directly
web_search - Single-source extraction → use +
web_searchweb_extract
- 实体审核/档案 → 使用(包含制裁筛查、结构化视角)
entity-research - 定期新闻摘要 → 使用(包含定时任务、去重、多语言支持)
news-monitoring - 基于已收集来源的问答 → 使用(包含知识库+RAG)
notebooklm-mode - 快速事实查询 → 直接使用
web_search - 单源提取 → 使用+
web_searchweb_extract
Architecture
架构
User question
→ Step 0: Clarification (optional — assess if question is too vague)
→ Step 1: Plan (sub-questions, key topics, success criteria, category, language, complexity)
→ Step 2: Date grounding + language anchor
→ Step 3: Iterative loop (max rounds = complexity cap: simple=2, moderate=3, complex=5)
├─ 3a: Generate gap-driven queries (incl. refute queries from round 2+, empty-search refinement)
├─ 3b: Search (web_search) + fetch (web_extract)
├─ 3c: Quality filter + extraction + source quality classification + numbered citations
├─ 3d: Synthesize into cumulative research state (with token budget check)
├─ 3e: Structured evidence (optional: evidence.json for 5+ sources)
└─ 3f: Stopping check (LLM evaluates coverage + token budget)
→ Step 4: Final report (overview-first structure, see template)
→ Step 5: Stats summaryReport output order (overview-first): Executive Summary → comparison/overview table → detailed analysis per sub-question → contradictions → gaps → conclusion → source table. Readers get the answer and the at-a-glance comparison before the detailed reasoning.
用户问题
→ 步骤0:澄清(可选——评估问题是否过于模糊)
→ 步骤1:规划(子问题、关键主题、成功标准、分类、语言、复杂度)
→ 步骤2:日期锚定 + 语言锚定
→ 步骤3:迭代循环(最大轮数=复杂度上限:简单=2、中等=3、复杂=5)
├─ 3a:生成针对空白的查询(从第2轮开始包含反驳查询、空搜索优化)
├─ 3b:搜索(web_search)+ 获取(web_extract)
├─ 3c:质量筛选 + 提取 + 来源质量分类 + 编号引用
├─ 3d:合成为累计研究状态(附带token预算检查)
├─ 3e:结构化证据(可选:当来源≥5个时生成evidence.json)
└─ 3f:停止检查(LLM评估覆盖范围 + token预算)
→ 步骤4:最终报告(优先展示概述的结构,详见模板)
→ 步骤5:统计摘要报告输出顺序(优先展示概述):执行摘要 → 对比/概述表格 → 按子问题划分的详细分析 → 矛盾 → 空白 → 结论 → 来源表格。读者可先获取答案和一目了然的对比内容,再查看详细推理过程。
Step 0 — Clarification (optional)
步骤0——澄清(可选)
Before planning, assess whether the question is specific enough to research productively. This step prevents wasting rounds on a question that's too vague.
When to clarify:
- The question is 1-5 words with no scope ("research AI", "tell me about quantum computing")
- The question could mean very different things depending on intent ("is X good?" — good for what? for whom?)
- The question lacks a clear angle ("look into climate change" — scientific? policy? economic?)
When NOT to clarify:
- The question already has sub-questions or specific parameters
- The user explicitly says "just research it" or "don't ask, just go"
- The question is specific enough to generate productive search queries immediately
- The question is a simple factual lookup ("what is the latest version of X?", "when did Y happen?") — even if short, if the intent is clear, proceed
- The user is responding to a prior clarification (don't loop)
How: Present 1-3 short questions to the user that would narrow the scope. Keep it brief — this is a scope check, not an interview:
"Before I start researching, I'd like to clarify:
- [narrowing question 1]
- [narrowing question 2]
Please provide these details and I'll begin."
If the question is already specific, skip this step entirely and proceed to Step 1.
在规划前,评估问题是否足够具体以开展高效研究。此步骤可避免在过于模糊的问题上浪费循环轮次。
需要澄清的情况:
- 问题仅1-5个词且无范围限定(如「研究AI」「告诉我量子计算的情况」)
- 问题因意图不同可能有截然不同的含义(如「X好不好?」——哪方面好?针对谁?)
- 问题缺乏明确角度(如「研究气候变化」——科学角度?政策角度?经济角度?)
无需澄清的情况:
- 问题已包含子问题或具体参数
- 用户明确表示「直接研究」或「别问了,开始吧」
- 问题足够具体,可直接生成有效的搜索查询
- 问题是简单的事实查询(如「X的最新版本是什么?」「Y发生在什么时候?」)——即使简短,但意图明确,可直接进行
- 用户正在回应之前的澄清(避免循环)
澄清方式:向用户提出1-3个简短问题以缩小范围。保持简洁——这是范围检查,而非访谈:
「在开始研究前,我想先澄清:
- [缩小范围的问题1]
- [缩小范围的问题2]
请提供这些细节,我将开始研究。」
如果问题已经足够具体,完全跳过此步骤,直接进入步骤1。
Step 1 — Research Plan
步骤1——研究规划
Before searching, break the question into a research plan. Output:
undefined在搜索前,将问题拆解为研究规划。输出格式如下:
undefinedResearch Plan
研究规划
Question: [user's question]
Date: [current date]
Language: [BCP 47 tag — e.g. en, zh-Hans, ja. Detect from query; user's explicit language preference overrides. Use consistently throughout the report.]
Sub-questions:
- [specific sub-question 1]
- [specific sub-question 2]
- [specific sub-question 3]
- [up to 6 total]
Key topics:
- [topic 1]
- [topic 2]
Success criteria:
- [what would comprehensive coverage look like?]
- [minimum: each sub-question has ≥1 source]
Report category: [factual | comparison | product | how-to | fact-check | explainer]
Complexity: [simple | moderate | complex]
**Complexity assessment and adaptive depth:**
Classify the question's complexity to determine the maximum number of research rounds. This prevents over-searching simple questions and under-searching complex ones.
| Complexity | Max rounds | When to use |
|---|---|---|
| **simple** | 2 | Single-factual question, narrow scope, 1-2 sub-questions. Example: "What is the latest version of Python?" |
| **moderate** | 3 | Multi-faceted question, 3-4 sub-questions, comparison or how-to. Example: "Compare Qdrant vs pgvector for RAG" |
| **complex** | 5 | Broad scope, 5-6 sub-questions, requires deep synthesis across domains. Example: "Comprehensive analysis of the self-hosting vs managed API tradeoff for AI infrastructure" |
The complexity cap is a **maximum**, not a target. The stopping check (Step 3f) still governs early termination. A simple question that finds comprehensive answers in 1 round should stop at 1 — the cap of 2 means it *can* go to 2 if needed, not that it *must*.
**Language anchoring:** Detect the output language from the query and normalize to a BCP 47 tag (e.g. `en`, `zh-Hans`, `zh-Hant`, `ja`). Use it consistently throughout — executive summary, analysis, contradictions, gaps, conclusion. Source titles, URLs, proper nouns, and code may stay in their original language; search queries may use any language that helps evidence gathering. If the user explicitly switches language mid-research, update the anchor and use the new language for all subsequent output.
**Report category detection:**
- "vs", "compare", "better than" → **comparison**
- "best", "top", "recommend", "buy" → **product**
- "how to", "guide", "steps" → **how-to**
- "is it true", "verify", "fact check" → **fact-check**
- "what is", "explain", "overview" → **explainer**
- default → **factual**问题:[用户的问题]
日期:[当前日期]
语言:[BCP 47标签——例如en、zh-Hans、ja。从查询中检测;用户明确的语言偏好优先。全程保持一致。]
子问题:
- [具体子问题1]
- [具体子问题2]
- [具体子问题3]
- [最多6个]
关键主题:
- [主题1]
- [主题2]
成功标准:
- [全面覆盖的判定标准是什么?]
- [最低要求:每个子问题至少有1个来源]
报告分类:[事实类 | 对比类 | 产品类 | 指南类 | 事实核查类 | 科普类]
复杂度:[简单 | 中等 | 复杂]
**复杂度评估与自适应深度**:
对问题的复杂度进行分类,以确定研究的最大循环轮数。这可避免对简单问题过度搜索,或对复杂问题搜索不足。
| 复杂度 | 最大轮数 | 使用场景 |
|---|---|---|
| **简单** | 2 | 单一事实问题、范围狭窄、1-2个子问题。示例:「Python的最新版本是什么?」 |
| **中等** | 3 | 多维度问题、3-4个子问题、对比类或指南类。示例:「对比Qdrant与pgvector在RAG中的表现」 |
| **复杂** | 5 | 范围广泛、5-6个子问题、需要跨领域深度合成。示例:「AI基础设施自托管vs托管API的综合分析」 |
复杂度上限是**最大值**,而非目标值。停止检查(步骤3f)仍会决定是否提前终止。如果简单问题在1轮内就找到全面答案,则应在1轮后停止——上限2意味着必要时可进行到2轮,而非必须进行2轮。
**语言锚定**:从查询中检测输出语言,并标准化为BCP 47标签(如`en`、`zh-Hans`、`zh-Hant`、`ja`)。全程保持一致——包括执行摘要、分析、矛盾、空白、结论。来源标题、URL、专有名词和代码可保留原语言;搜索查询可使用有助于收集证据的任意语言。如果用户在研究中途明确切换语言,更新锚定语言,并将后续所有输出使用新语言。
**报告分类检测**:
- 包含「vs」「compare」「better than」→ **对比类**
- 包含「best」「top」「recommend」「buy」→ **产品类**
- 包含「how to」「guide」「steps」→ **指南类**
- 包含「is it true」「verify」「fact check」→ **事实核查类**
- 包含「what is」「explain」「overview」→ **科普类**
- 默认 → **事实类**Step 2 — Date Grounding
步骤2——日期锚定
Inject the current date before any search. This is mandatory — LLMs default to training-cutoff years, producing stale queries.
Today's date is {current date as "DD Month YYYY"}. When a search query needs a year or refers to "latest"/"current"/"this year", use {current year} or relative wording — never a year inferred from training data.
在任何搜索前注入当前日期。这是强制性要求——LLM默认使用训练截止年份的数据,会生成过时的查询。
今日日期为{当前日期,格式为「DD Month YYYY」}。当搜索查询需要年份或提及「最新」「当前」「今年」时,使用{当前年份}或相对表述——绝不使用从训练数据推断出的年份。
Step 3 — Iterative Loop
步骤3——迭代循环
Round structure
轮次结构
Each round follows: Query → Search → Extract → Synthesize → Check Stop
Run max N rounds where N = complexity cap from Step 1 (simple=2, moderate=3, complex=5). Most topics converge in 2-3 rounds. The cap is a ceiling, not a target.
每一轮遵循:查询→搜索→提取→合成→停止检查
运行最多N轮,其中N=步骤1中的复杂度上限(简单=2、中等=3、复杂=5)。大多数主题在2-3轮内即可收敛。上限是天花板,而非目标值。
3a — Query Generation (gap-driven)
3a——查询生成(针对空白)
Generate 2-4 search queries per round. Round 1 targets the sub-questions from the plan. Round 2+ targets gaps identified in the previous synthesis.
Before generating queries, review:
- Original question and research plan
- Current research state (what's already found)
- Round number
- What's still missing
Generate queries that target the gaps, not repeat what's already found.
Refute polarity requirement: Round 2+ must include at least one query targeting counter-evidence, opposing viewpoints, or criticisms of the leading hypothesis. If no counter-evidence is found after searching, note it explicitly in the synthesis — refute count = 0 usually means you didn't search well, not that no counter-evidence exists. This prevents confirmation-biased research.
Progressive empty-search refinement: When a search returns no useful results, escalate the refinement strategy across consecutive empty results:
- First empty result: Try a broader query or different keywords (synonyms, related terms, different phrasing)
- Second consecutive empty: Try a fundamentally different angle — different domain, different language, or reframe the sub-question entirely. Inject: "Previous search also returned no results. Try a very different query with different keywords, or broaden your search terms."
- Third consecutive empty: Move on. This sub-question may not have publicly searchable answers. Document it as a gap in the synthesis rather than burning more rounds on dead-end queries.
每轮生成2-4个搜索查询。第1轮针对规划中的子问题。第2轮及以后针对上一轮合成中发现的空白。
生成查询前,需回顾:
- 原始问题和研究规划
- 当前研究状态(已找到的内容)
- 轮次编号
- 仍缺失的内容
生成针对空白的查询,而非重复已找到的内容。
反驳极性要求:第2轮及以后必须包含至少一个针对反证、对立观点或对主流假设的批评的查询。如果搜索后未找到反证,需在合成中明确说明——反驳次数=0通常意味着搜索不够充分,而非不存在反证。这可避免研究出现确认偏差。
渐进式空搜索优化:当搜索未返回有用结果时,在连续空结果中逐步升级优化策略:
- 首次空结果:尝试更宽泛的查询或不同关键词(同义词、相关术语、不同表述)
- 连续第二次空结果:尝试完全不同的角度——不同领域、不同语言,或重新构造子问题。注入提示:「之前的搜索也未返回结果。尝试使用完全不同的关键词或更宽泛的搜索词。」
- 连续第三次空结果:停止。该子问题可能没有公开可搜索的答案。在合成中将其记录为空白,而非在无效查询上浪费更多轮次。
3b — Search and Fetch
3b——搜索与获取
web_search(query="...", limit=10)Run one per query. From the results, pick 3-5 URLs per round to fetch in full:
web_searchweb_extract(urls=["url1", "url2", "url3"])Track URLs already fetched — do not re-fetch the same URL across rounds. Maintain a mental list of analyzed URLs.
web_search(query="...", limit=10)每个查询执行一次。从结果中每轮选取3-5个URL进行完整获取:
web_searchweb_extract(urls=["url1", "url2", "url3"])跟踪已获取的URL——不要在不同轮次中重复获取同一URL。维护已分析URL的列表。
3c — Quality Filter and Extraction
3c——质量筛选与提取
Before extracting content, discard low-quality results:
- Thin content: landing pages, aggregator stubs, <100 words of substantive text
- Irrelevant: keyword overlap without topical relevance. Use word-boundary matching for topic terms — "port" should not match "transport" or "support"
- Duplicate URLs: already fetched in a previous round
- Non-text: video-only pages, image boards, login walls with no preview
For each quality source, extract goal-relevant facts:
- What facts in this source address a sub-question from the research plan?
- Ignore noise, navigation, ads, boilerplate
- Prefer specific data, statistics, named sources, dates over vague claims
- Record the source URL and title with each extracted fact. Assign each unique source a numbered citation ,
[1], etc. on first encounter — reuse the same number for subsequent facts from the same source. This produces cleaner inline citations than full URLs (especially on mobile/messaging platforms) and matches academic/magazine citation style. Deduplicate by URL: the same URL seen twice gets the same number.[2] - Classify source quality for each source: (official docs, model cards, SEC filings, original papers),
primary(tech journalism, analyst reports, reviews),secondary(Wikipedia, aggregators, forum posts). This tier appears in the final source table and signals evidence strength to the reader.tertiary - Grade each fact's evidence basis as you extract (see below) — you can't tag a report you didn't grade while reading
在提取内容前,丢弃低质量结果:
- 内容单薄:着陆页、聚合器 stub、实质性文本不足100词
- 无关内容:仅关键词匹配但无主题相关性。对主题术语使用词边界匹配——「port」不应匹配「transport」或「support」
- 重复URL:上一轮已获取
- 非文本内容:纯视频页面、图片板、无预览的登录墙
对于每个高质量来源,提取与目标相关的事实:
- 该来源中的哪些事实可解决研究规划中的子问题?
- 忽略噪音、导航、广告、模板内容
- 优先选择具体数据、统计数据、命名来源、日期,而非模糊声明
- 为每个提取的事实记录来源URL和标题。首次遇到每个唯一来源时,分配一个编号引用、
[1]等——同一来源的后续事实重复使用同一编号。这比完整URL生成更简洁的inline引用(尤其在移动/消息平台上),且符合学术/杂志引用风格。按URL去重:同一URL多次出现使用同一编号。[2] - 为每个来源分类质量:(官方文档、模型卡片、SEC文件、原始论文)、
primary(科技新闻、分析师报告、评测)、secondary(维基百科、聚合器、论坛帖子)。该层级会显示在最终来源表格中,向读者传递证据强度信号。tertiary - 提取时为每个事实的证据依据评分(见下文)——未评分的报告是不完整的
Evidence basis — the four-label discipline
证据依据——四标签准则
Tag every material fact with the basis on which you're asserting it. A material fact is any substantive claim a reader would act on or challenge: a statistic, date, named entity or relationship, causal claim, or direct quote. This is deep-research's adaptation of pere-toolkit's canonical evidence discipline — the same four labels, applied to facts rather than financial figures.
| Label | A fact is |
|---|---|
| corroborated across ≥2 independent, cited, dated sources |
| stated by one named / cited source, not independently corroborated |
| your own analytical judgement or inference — not stated by any source |
| a calculation or stated assumption (e.g. a figure you derived from source data) |
Rules:
- Lead on /
[VERIFIED]. Present[SOURCED]/[REASONED]claims as indicative ("likely", "suggests", "on these figures") — never as hard fact.[ESTIMATED] - Use these four exact labels — never an improvised synonym (,
[Official],[Expert]→ these are[Consensus], or[SOURCED]only if independently corroborated).[VERIFIED] - Don't restate precision you don't have — a source's "about half" is , not
~50% [SOURCED].50.0% - Never fabricate to fill a gap — an unanswerable sub-question is a documented gap, not a guess dressed as fact.
[REASONED]
Relationship to source-quality tiers: the // tier (above) classifies the source; the /// label classifies the fact. They are orthogonal: a fact from a single primary source is (strong source, but uncorroborated); the same fact from two independent primary sources becomes . Use both: tier in the source table, label inline on each claim.
primarysecondarytertiary[VERIFIED][SOURCED][REASONED][ESTIMATED][SOURCED][VERIFIED]为每个重要事实标记断言的依据。重要事实是指读者会据此采取行动或提出质疑的实质性声明:统计数据、日期、命名实体或关系、因果声明或直接引语。这是深度研究对pere-toolkit标准证据准则的改编——相同的四个标签,应用于事实而非财务数据。
| 标签 | 事实被标记为 |
|---|---|
| 经≥2个独立、已引用、带日期的来源佐证 |
| 由一个已命名/已引用的来源声明,未被独立佐证 |
| 你自己的分析判断或推论——未被任何来源声明 |
| 计算或明确假设(例如从来源数据推导的数值) |
规则:
- 优先使用/
[VERIFIED]。将[SOURCED]/[REASONED]声明表述为指示性(如「可能」「表明」「基于这些数据」)——绝不作为确凿事实。[ESTIMATED] - 仅使用这四个精确标签——绝不使用即兴同义词(、
[Official]、[Expert]→这些属于[Consensus],或仅在被独立佐证时属于[SOURCED])。[VERIFIED] - 不要夸大未有的精度——来源中的「约一半」应标记为,而非
~50% [SOURCED]。50.0% - 绝不编造内容填补空白——无法回答的子问题应记录为空白,而非伪装成事实的猜测。
[REASONED]
与来源质量层级的关系://层级(上文)用于分类来源;///标签用于分类事实。二者相互独立:来自单个一级来源的事实是(来源可靠,但未被佐证);同一事实来自两个独立一级来源则变为。需同时使用二者:来源表格中标注层级,每个声明的inline标注标签。
primarysecondarytertiary[VERIFIED][SOURCED][REASONED][ESTIMATED][SOURCED][VERIFIED]3d — Synthesis
3d——合成
After extracting from all sources in the round, integrate findings into the cumulative research state:
Token budget awareness: Track approximate context consumption across rounds. If the cumulative research state + extracted content is approaching the model's context window or a self-imposed budget (suggested: ~50K tokens for moderate, ~100K for complex), prioritize synthesis and stopping over gathering more sources. When the budget is tight, summarize earlier rounds' findings more aggressively rather than carrying full extracts forward.
Rough estimation heuristic: You can't count tokens precisely, but you can estimate: each returning ~5K characters contributes ~1.5K tokens; the research state after N rounds with 3-5 sources per round is roughly N × 8-12K tokens. If you're on round 3+ of a complex topic and the last returned >10K characters, you're likely past 50K — summarize aggressively and head toward synthesis. When in doubt, treat any round-3+ complex research as budget-tight.
web_extractweb_extractundefined在提取完本轮所有来源的内容后,将发现整合到累计研究状态中:
Token预算感知:跟踪各轮次的上下文消耗近似值。如果累计研究状态+提取内容接近模型的上下文窗口或自行设定的预算(建议:中等复杂度约50K token,复杂约100K token),优先进行合成和停止,而非收集更多来源。当预算紧张时,更积极地总结前几轮的发现,而非保留完整提取内容。
粗略估算方法:无法精确计数token,但可估算:每个返回约5K字符的贡献约1.5K token;经过N轮、每轮3-5个来源后的研究状态约为N×8-12K token。如果处于复杂主题的第3轮及以后,且最后一次返回超过10K字符,则可能已超过50K token——需积极总结并转向合成。如有疑问,将第3轮及以后的复杂研究视为预算紧张。
web_extractweb_extractundefinedResearch State (after Round N)
研究状态(第N轮后)
[evolving synthesis of all findings so far]
[截至目前所有发现的逐步合成内容]
Sub-question 1: [question]
子问题1:[问题]
Status: [answered / partially answered / unanswered]
Findings: [synthesized facts, each with a numbered inline citation [N] matching the source table, and an evidence-basis tag, e.g. "adoption grew 40% in 2025 [1] [VERIFIED]"]
状态:[已回答 / 部分回答 / 未回答]
发现:[合成的事实,每个事实带有与来源表格匹配的编号inline引用[N],以及证据依据标签,例如「2025年采用率增长40% [1] [VERIFIED]」]
Sub-question 2: [question]
子问题2:[问题]
Status: [...]
Findings: [...]
状态:[...]
发现:[...]
Gaps identified:
已识别的空白:
- [what's still missing for round N+1 to target]
Synthesis rules:
- **Deduplicate** — if multiple sources say the same thing, cite the best one (or cite both for corroboration)
- **Resolve contradictions** — if sources disagree, present both with attribution. Do not arbitrate silently.
- **Inline citations** — every factual claim references its source using the numbered citation `[N]` assigned in §3c, matching the source table
- **Evidence basis** — tag each material fact `[VERIFIED]` / `[SOURCED]` / `[REASONED]` / `[ESTIMATED]` (see §3c). A fact becomes `[VERIFIED]` only once ≥2 *independent* sources corroborate it; a single source is `[SOURCED]`. Corroboration during dedup is what promotes `[SOURCED]` → `[VERIFIED]`.
- **Update gap list** — what sub-questions are still unanswered or thin?- [第N+1轮需要针对的缺失内容]
合成规则:
- **去重**——如果多个来源表述相同,引用最佳来源(或同时引用两个以佐证)
- **解决矛盾**——如果来源存在分歧,同时呈现双方观点并注明出处。不要默默仲裁。
- **Inline引用**——每个事实声明使用§3c中分配的编号引用`[N]`引用其来源,与来源表格匹配
- **证据依据**——为每个重要事实标记`[VERIFIED]`/`[SOURCED]`/`[REASONED]`/`[ESTIMATED]`(见§3c)。只有当≥2个*独立*来源佐证时,事实才变为`[VERIFIED]`;单个来源的事实为`[SOURCED]`。去重过程中的佐证会将`[SOURCED]`升级为`[VERIFIED]`。
- **更新空白列表**——哪些子问题仍未回答或内容单薄?3e — Structured Evidence (recommended for reports with 5+ sources)
3e——结构化证据(建议来源≥5个的报告使用)
Before writing the final report, structure the extracted evidence into a lightweight intermediate. This separates evidence gathering from report writing and makes fabrication detectable. See for the schema, source quality ranking/weighting rules, and worked example.
evidence.jsonreferences/structured-evidence-format.mdWhen to use: reports with 5+ sources, comparison/fact-check categories, or when the user may want to verify claims. Skip for quick 2-3 source reports.
Benefits validated in side-by-side testing (July 2026):
- Forced claim precision (every assertion gets a kind + polarity + snippet)
- Refute polarity requirement surfaced counter-evidence the iterative loop missed
- Source quality tiers revealed evidence-strength gaps (too many tertiary sources)
- Explicit gaps + contradictions sections in the final report
- Full traceability: claim ID → snippet → source URL
Source quality ranking and weighting (see for full rules):
references/structured-evidence-format.md- primary (3× weight): official docs, model cards, SEC filings, API pricing pages, original papers
- secondary (2× weight): tech journalism, analyst reports, benchmark aggregators
- tertiary (1× weight): Reddit, forums, Wikipedia, blog aggregators — useful for refute polarity and real-world anecdotes, but never the sole support for a factual claim if a primary/secondary source exists
Quality distribution check before writing the report:
- Healthy: ≥30% primary, ≤30% tertiary → proceed
- Acceptable: ≥1 primary for key claims, <50% tertiary → note thin primary coverage as a gap
- Weak: 0 primary, >50% tertiary → flag in Gaps section and attempt to fetch primary sources (official docs, model cards, pricing pages) before finalizing. If primary sources are unavailable, qualify tertiary-sourced claims explicitly ("community reports suggest..." not "X is true")
Conflict resolution by quality: When sources disagree, primary > secondary > tertiary. 2 independent secondary sources ≈ 1 primary. Tertiary cannot override secondary/primary — it becomes refute counter-evidence or writing_context instead.
在撰写最终报告前,将提取的证据整理为轻量级的中间文件。这将证据收集与报告撰写分离,并可检测编造内容。架构、来源质量排名/权重规则及示例详见。
evidence.jsonreferences/structured-evidence-format.md使用场景:来源≥5个的报告、对比/事实核查类报告,或用户可能需要验证声明的情况。快速的2-3个来源报告可跳过此步骤。
2026年7月对比测试验证的优势:
- 强制声明精确性(每个断言都有类型+极性+片段)
- 反驳极性要求发现了迭代循环遗漏的反证
- 来源质量层级揭示了证据强度空白(过多三级来源)
- 最终报告中明确的空白+矛盾章节
- 完整可追溯性:声明ID→片段→来源URL
来源质量排名与权重(完整规则详见):
references/structured-evidence-format.md- primary(3倍权重):官方文档、模型卡片、SEC文件、API定价页面、原始论文
- secondary(2倍权重):科技新闻、分析师报告、基准聚合器
- tertiary(1倍权重):Reddit、论坛、维基百科、博客聚合器——可用于反驳极性和真实世界轶事,但如果存在一级/二级来源,绝不能作为事实声明的唯一支撑
撰写报告前的质量分布检查:
- 健康:≥30%一级来源,≤30%三级来源→继续
- 可接受:关键声明至少有1个一级来源,三级来源<50%→将一级来源覆盖不足标记为空白
- 薄弱:0个一级来源,三级来源>50%→在空白章节中标记,并在定稿前尝试获取一级来源(官方文档、模型卡片、定价页面)。如果无法获取一级来源,需明确限定三级来源支撑的声明(如「社区报告表明...」而非「X是真实的」)
按质量解决冲突:当来源存在分歧时,一级>二级>三级。2个独立二级来源≈1个一级来源。三级来源不能推翻二级/一级来源——只能作为反驳反证或写作背景。
3f — Stopping Check
3f——停止检查
After synthesis (and optional evidence structuring), evaluate whether the report is comprehensive enough:
Given the research plan's success criteria:
- Are all key sub-questions addressed with at least one source?
- Are there significant gaps or unanswered aspects?
- Is the evidence sufficient and corroborated?
- Am I approaching the token budget? (tight context = prioritize synthesis)
Reply YES (stop) or NO (continue) + one-sentence reason.
Stop if:
- All sub-questions have ≥1 source → YES
- Most of the complexity cap used (e.g. round 2 of 2 for simple, round 3 of 3 for moderate) and remaining gaps are minor → YES
- Complexity cap reached (simple=2, moderate=3, complex=5) → YES
- Token budget approaching limit → YES (synthesize with what you have)
- Web search returning diminishing returns (same URLs, no new info) → YES
Continue if:
- Major sub-questions unanswered → NO
- Contradictions unresolved → NO
- Only 1-2 rounds done and topic is broad → NO
合成(及可选的证据结构化)后,评估报告是否足够全面:
根据研究规划的成功标准:
- 所有关键子问题是否都至少有1个来源支撑?
- 是否存在重大空白或未解决的方面?
- 证据是否充分且已佐证?
- 是否接近token预算?(上下文紧张=优先合成)
回复YES(停止)或NO(继续)+一句话理由。
停止的情况:
- 所有子问题都有≥1个来源→YES
- 已使用大部分复杂度上限(如简单问题的第2轮、中等问题的第3轮),且剩余空白无关紧要→YES
- 达到复杂度上限(简单=2、中等=3、复杂=5)→YES
- 接近token预算→YES(使用已有内容合成)
- Web搜索收益递减(相同URL、无新信息)→YES
继续的情况:
- 主要子问题未回答→NO
- 矛盾未解决→NO
- 仅完成1-2轮,且主题范围广泛→NO
Step 4 — Final Report
步骤4——最终报告
Produce the final report. Minimum 800 words (scale with topic complexity).
Output order is overview-first: the reader gets the answer and the at-a-glance comparison before the detailed reasoning. Do not bury the comparison table after the per-topic analysis.
Carry each material fact's evidence-basis tag inline (§3c), lead on / , keep / claims framed as indicative, and paste the Evidence key legend below the Sources table so the tags decode.
[VERIFIED][SOURCED][REASONED][ESTIMATED]Synthesis prompt structure: When writing the final report, explicitly consult: (1) the original question, (2) the research plan (sub-questions, success criteria), (3) the cumulative research state from all rounds, (4) the evidence.json if produced, and (5) the numbered source list. Do not rely on the cumulative state alone if it has been compressed across many rounds — go back to the per-round findings to verify key claims. This prevents detail loss when the research state was aggressively summarized due to token budget pressure.
生成最终报告。最少800词(随主题复杂度调整)。
输出顺序优先展示概述:读者先获取答案和一目了然的对比内容,再查看详细推理过程。不要将对比表格放在按主题划分的分析之后。
每个重要事实的证据依据标签需inline保留(§3c),优先使用/,将/声明表述为指示性,并在来源表格下方粘贴证据说明图例以解释标签含义。
[VERIFIED][SOURCED][REASONED][ESTIMATED]合成提示结构:撰写最终报告时,需明确参考:(1)原始问题,(2)研究规划(子问题、成功标准),(3)所有轮次的累计研究状态,(4)生成的evidence.json(如有),(5)编号来源列表。如果累计状态经过多轮压缩,不要仅依赖累计状态——回到每轮的发现以验证关键声明。这可避免因token预算压力对研究状态进行积极总结时丢失细节。
Structure
结构
markdown
undefinedmarkdown
undefined[Report Title]
[报告标题]
Research date: [date] · Rounds: [N] · Sources: [N] · Category: [type]
研究日期:[日期] · 轮次:[N] · 来源:[N] · 分类:[类型]
Executive Summary
执行摘要
[2-3 paragraph overview of key findings — the answer up front. If using structured evidence, note claim count and refute count here so the reader knows the evidence base.]
[2-3段关键发现概述——直接给出答案。如果使用结构化证据,在此处注明声明数量和反驳数量,以便读者了解证据基础。]
[Comparison Table | Overview | Key Findings at a Glance]
[对比表格 | 概述 | 关键发现一览]
[For comparison reports: a markdown table comparing options/entities across criteria. For factual/explainer reports: a numbered list of key findings with claim references. This section gives the reader the complete picture in one screen — the detailed analysis below is the supporting reasoning, not the main event. If using structured evidence, cite claim IDs like [c1], [c3] in table cells or list items.]
[对比类报告:使用markdown表格按标准对比选项/实体。事实类/科普类报告:列出带声明引用的关键发现编号列表。此部分让读者在一屏内获取完整信息——下方的详细分析是支撑推理,而非核心内容。如果使用结构化证据,在表格单元格或列表项中引用声明ID,如[c1]、[c3]。]
[## Section per sub-question]
[## 按子问题划分的章节]
[Detailed analysis with inline citations — this is the supporting reasoning for the overview above. Each section traces back to the overview claims.]
[带inline引用的详细分析——这是上述概述的支撑推理。每个章节都与概述中的声明对应。]
[### Subsections as needed]
[### 按需设置子章节]
[...]
[...]
Contradictions
矛盾
[If sources disagree, present both sides with attribution. Do not silently arbitrate. If no contradictions found, state "No direct contradictions between sources." This section is REQUIRED — its absence is a quality signal that counter-evidence wasn't searched.]
[如果来源存在分歧,同时呈现双方观点并注明出处。不要默默仲裁。如果未发现矛盾,声明「来源间无直接矛盾」。此章节为必填项——缺失此章节意味着未搜索反证,是质量问题信号。]
Gaps
空白
[What couldn't be determined from available sources. Each gap should note: what's unknown, why it matters, and whether it could be resolved with more research. If using structured evidence, reference the writing_context items. If no gaps, state "No significant gaps identified."]
[现有来源无法确定的内容。每个空白应注明:未知内容、重要性、是否可通过更多研究解决。如果使用结构化证据,参考写作背景项。如果无空白,声明「未发现重大空白」。]
Conclusion
结论
[Synthesis of findings, implications, remaining uncertainties — ties back to the executive summary and overview. The conclusion confirms or qualifies the overview, it doesn't introduce new analysis.]
[发现的合成、影响、剩余不确定性——与执行摘要和概述呼应。结论确认或限定概述内容,不引入新分析。]
Sources
来源
Quality distribution: [N] primary · [N] secondary · [N] tertiary — [healthy/acceptable/weak]
| # | Title | URL | Quality | Accessed |
|---|---|---|---|---|
| 1 | [title] | [url] | primary/secondary/tertiary | [date] |
Citation format: Inline citations use matching the source table above. On first mention of a source, include — subsequent mentions may use alone. For claims from the same source, cite the number once per paragraph unless the source is paginated.
[N][N][N]Evidence key — corroborated across ≥2 independent, cited, dated sources · from one named source, not independently corroborated · analytical judgement / inference · calculation or stated assumption.
[VERIFIED][SOURCED][REASONED][ESTIMATED]undefined质量分布:[N]个一级来源 · [N]个二级来源 · [N]个三级来源 — [健康/可接受/薄弱]
| # | 标题 | URL | 质量 | 获取日期 |
|---|---|---|---|---|
| 1 | [标题] | [url] | primary/secondary/tertiary | [日期] |
引用格式:Inline引用使用与上方来源表格匹配的。首次提及来源时,包含——后续提及可仅使用。同一来源的声明,除非来源分页,否则每段引用一次编号即可。
[N][N][N]证据说明—— 经≥2个独立、已引用、带日期的来源佐证 · 来自一个已命名来源,未被独立佐证 · 分析判断/推论 · 计算或明确假设。
[VERIFIED][SOURCED][REASONED][ESTIMATED]undefinedCategory-specific overview sections
分类专属概述章节
| Category | Overview section format |
|---|---|
| comparison | Markdown table comparing options across criteria, with a verdict row or column. The detailed sections below provide the reasoning per option. |
| product | Ranked list with pros/cons, price range, and a "top pick" callout. Detailed sections cover each product. |
| how-to | Numbered overview of the steps. Detailed sections cover prerequisites, execution, and troubleshooting per step. |
| fact-check | Evidence for/against the claim in a two-column table, with a preliminary verdict. Detailed sections assess source credibility and reasoning. |
| explainer | Numbered key findings or a "progressive depth" overview (simple → deep). Detailed sections go deeper per concept. Glossary if technical. |
| factual | Numbered key findings with claim references. Detailed sections provide the supporting evidence per finding. |
| 分类 | 概述章节格式 |
|---|---|
| 对比类 | Markdown表格按标准对比选项,附带结论行或列。下方的详细章节提供每个选项的推理过程。 |
| 产品类 | 带优缺点、价格范围和「首选推荐」标注的排名列表。详细章节介绍每个产品。 |
| 指南类 | 步骤编号概述。详细章节介绍每个步骤的前提条件、执行方法和故障排除。 |
| 事实核查类 | 两列表格展示支持/反对声明的证据,附带初步结论。详细章节评估来源可信度和推理过程。 |
| 科普类 | 关键发现编号列表或「渐进式深度」概述(简单→深入)。详细章节深入讲解每个概念。如需技术内容,添加术语表。 |
| 事实类 | 带声明引用的关键发现编号列表。详细章节为每个发现提供支撑证据。 |
Fallback report
备用报告
If LLM synthesis fails (timeout, error, garbled output), compile raw findings into a basic report:
- List all findings grouped by sub-question
- Include source URLs and keep each finding's evidence-basis tag
- Add note: "This is a raw findings compilation; synthesis was not completed."
- Never output "No information could be gathered" if any sources were fetched — always compile what exists.
如果LLM合成失败(超时、错误、输出混乱),将原始发现整理为基础报告:
- 按子问题分组列出所有发现
- 包含来源URL并保留每个发现的证据依据标签
- 添加说明:「这是原始发现汇编;未完成合成。」
- 如果已获取任何来源,绝不要输出「无法收集到任何信息」——始终整理已有内容。
Step 5 — Research Stats
步骤5——研究统计
After the report, output a compact stats block:
---
📊 Research stats: [duration] · [N] rounds · [N] queries · [N] URLs fetched · [N] sources cited报告完成后,输出简洁的统计块:
---
📊 研究统计:[时长] · [N]轮 · [N]个查询 · [N]个已获取URL · [N]个已引用来源Follow-on Investment Analysis (optional)
后续投资分析(可选)
When the research report covers a real estate or investment question and the
user subsequently provides specific deal parameters (price, area, location),
build a quantitative pro-forma using . The pattern:
execute_code- Benchmark the asking price against recent transaction comparables (Cushman & Wakefield, CBRE, Savills, JLL — cap rates + price per tsubo)
- Model alternative uses (e.g., office as-is vs hotel converted) with full P&L: revenue → operating expenses → NOI
- Estimate conversion costs (per-tsubo renovation rates, per-room costs)
- Compute return metrics: NOI yield vs market cap rates, payback period
- Sensitivity table: 3 revenue scenarios × 3 cost scenarios
- Break-even analysis: what price/ADR/occupancy achieves market yield?
Critical: Always model the as-is use case as a baseline. If the
alternative-use NOI exceeds the converted-use NOI, the conversion destroys
value at that acquisition price — say so clearly.
See for the full template,
Japan-specific data sources, renovation cost benchmarks, and cap rate ranges.
references/real-estate-investment-analysis.mdSee for the evidence.json schema,
claim rules, writing-context vs claims distinction, and the side-by-side test
results that validated the structured-evidence approach (July 2026).
references/structured-evidence-format.md当研究报告涉及房地产或投资问题,且用户随后提供具体交易参数(价格、面积、位置)时,使用构建量化预测表。流程如下:
execute_code- 对标要价:与近期可比交易对比 (参考Cushman & Wakefield、CBRE、Savills、JLL——资本化率+每坪价格)
- 模拟替代用途(如现有办公空间vs改造为酒店),包含完整损益表:收入→运营费用→净营业收入(NOI)
- 估算改造成本(每坪翻新费率、每间客房成本)
- 计算回报指标:NOI收益率vs市场资本化率、投资回收期
- 敏感性表格:3种收入场景×3种成本场景
- 盈亏平衡分析:达到市场收益率所需的价格/平均每日房价(ADR)/入住率?
关键要求:始终将现有用途作为基准场景建模。如果替代用途的NOI低于改造后的NOI,则该收购价格下的改造会破坏价值——需明确说明。
完整模板、日本特定数据源、翻新成本基准和资本化率范围详见。
references/real-estate-investment-analysis.md结构化证据格式的evidence.json schema、声明规则、写作背景与声明的区别,以及验证结构化证据方法的对比测试结果(2026年7月)详见。
references/structured-evidence-format.mdVault Integration (optional)
知识库集成(可选)
For larger research tasks (10+ sources) or when the user may want to follow up with grounded Q&A:
- Create a vault per at
notebooklm-mode<project_folder>/research-<topic>/ - Save each source as a numbered file in with verbatim extracts
sources/ - Use to write + index atomically
ingest_source.py - After the report, tell the user: "Sources saved to vault at [path]. You can ask follow-up questions grounded in these sources — say 'notebooklm mode' to query the vault."
This is optional — the skill works fully without a vault for one-off reports.
对于大型研究任务(来源≥10个)或用户可能需要后续基于来源的问答的情况:
- 按在
notebooklm-mode创建知识库<project_folder>/research-<topic>/ - 将每个来源保存为中的编号文件,包含完整提取内容
sources/ - 使用自动写入并索引
ingest_source.py - 报告完成后,告知用户:「来源已保存至知识库[路径]。您可基于这些来源提出后续问题——说出'notebooklm mode'即可查询知识库。」
此步骤为可选——该技能无需知识库即可完成一次性报告。
Subagent Mode (optional)
子Agent模式(可选)
For genuinely parallel research across distinct sub-topics (e.g. researching 3 unrelated companies):
delegate_task(
goal="Research [sub-topic] as part of a deep-research project. Run web searches, extract content, and return findings with source URLs and titles.",
context="You are a research subagent. Topic: [sub-topic]. Sub-questions: [list]. Use web_search and web_extract. Return structured findings with citations.",
toolsets=["web"]
)Rules:
- Only use subagents when sub-topics are genuinely independent
- Collect results from all subagents, then synthesize yourself
- Never delegate the synthesis step — the orchestrator must see all findings
- Subagent summaries are self-reports — verify source URLs exist before citing
针对完全独立的子主题进行并行研究(如研究3家不相关的公司):
delegate_task(
goal="作为深度研究项目的一部分,研究[子主题]。执行web搜索,提取内容,并返回带来源URL和标题的发现。",
context="您是研究子Agent。主题:[子主题]。子问题:[列表]。使用web_search和web_extract。返回带引用的结构化发现。",
toolsets=["web"]
)规则:
- 仅当子主题完全独立时使用子Agent
- 收集所有子Agent的结果,然后自行合成
- 绝不委托合成步骤——协调者必须查看所有发现
- 子Agent的总结为自我报告——引用前需验证来源URL是否存在
Concurrency and Rate Limits
并发与速率限制
- Fetch 3-5 URLs per round (not all 10 search results) to avoid rate-limiting
- If fails on a URL, note it and move on — don't retry endlessly
web_extract - If returns no results, apply the progressive empty-search refinement protocol (§3a) — first try broader keywords, then a fundamentally different angle, then move on
web_search - Track fetched URLs across rounds to avoid re-processing
- 每轮获取3-5个URL(而非所有10个搜索结果)以避免速率限制
- 如果对某URL失败,记录并继续——不要无限重试
web_extract - 如果未返回结果,应用渐进式空搜索优化协议(§3a)——先尝试更宽泛的关键词,再尝试完全不同的角度,最后停止
web_search - 跟踪各轮次已获取的URL以避免重复处理
Pitfalls
常见陷阱
- Skipping the research plan — without sub-questions, the loop has no direction and the stopping check has no baseline. Always plan first.
- Stale year in queries — always inject date grounding. Models default to training-cutoff years.
- Re-fetching same URLs — track analyzed URLs across rounds. Wastes time and tokens.
- Over-searching — most topics converge in 2-3 rounds. Don't pad to the complexity cap if the stopping check says YES at round 1 or 2. The cap is a ceiling, not a target.
- Under-searching — broad topics with 1 round produce shallow reports. If the stopping check says NO, continue.
- No quality filter — including thin/irrelevant sources dilutes the report. Filter before extraction.
- Listing instead of synthesizing — the report should synthesize findings, not list them. Resolve contradictions, identify themes, draw conclusions.
- Missing citations — every factual claim in the final report must have an inline citation — either matching the source table, or
[N]for claims from sources not in the numbered table.(Source: URL, "Title") - Missing evidence-basis tags — a material fact with a citation but no /
[VERIFIED]/[SOURCED]/[REASONED]tag is half-graded. Tag it, and include the Evidence key so the tags decode.[ESTIMATED] - Improvised evidence labels — use only the four canonical tags. A synonym like ,
[Official], or[Confirmed]breaks the discipline; map it to one of the four.[Consensus] - Overclaiming basis — don't tag a single-source fact , and don't restate precision the source didn't give. When torn between two labels, pick the weaker one.
[VERIFIED] - Synthesis failure produces nothing — always use the fallback report if synthesis fails. Raw findings > no output.
- Ignoring contradictions — if sources disagree, present both. Don't silently pick one.
- Fabricating sources — never invent URLs, titles, or facts. If a sub-question can't be answered, document it as a gap — never a guess dressed as a sourced fact.
[REASONED] - No counter-evidence search — only searching for supporting evidence produces biased research. Round 2+ must include at least one counter-evidence query. If none found, say so explicitly.
- Missing gaps/contradictions sections — the report must surface what's unknown and where sources disagree. Omitting these sections hides uncertainty from the reader and signals incomplete research.
- No source quality classification — unclassified sources make it impossible to judge evidence strength. Always tag primary/secondary/tertiary in the source table.
- Tertiary source overreliance — if 0 primary sources and >50% tertiary, the evidence base is weak. Flag it in the Gaps section and attempt to fetch primary sources (official docs, model cards, pricing pages) before finalizing. Tertiary sources are valuable for refute polarity and real-world anecdotes, but should never be the sole support for a factual claim when primary/secondary sources exist. Qualify tertiary-sourced claims: "Community reports suggest..." not "X is true."
- Conflating claims with context — facts about the research subject (claims) vs boundary conditions (scope limits, methodology notes, availability gaps) are different things. Use the writing_context concept from the structured evidence format to separate them.
- Burying the comparison table — the overview/comparison table goes right after the executive summary, not after the detailed analysis. Readers need the at-a-glance picture first; the detailed sections are supporting reasoning. Putting the table last forces readers to scroll through analysis before seeing the answer.
- Subagent synthesis — never delegate the synthesis step. The orchestrator must see all findings to synthesize honestly.
- CBD rents for non-CBD locations — when modeling real estate income, do not apply Marunouchi/Otemachi Grade A office rents (¥70K–100K/tsubo) to secondary locations like Koto-ku. Use submarket-appropriate rents (¥20K–30K/tsubo for mid-tier Koto-ku). This single mistake can inflate projected NOI by 3× and make a bad deal look good.
- Clarification loop — if the user responds to a clarification with more vagueness, do not clarify again. Proceed to research with the best interpretation of intent. At most one clarification round.
- Complexity misclassification — don't classify as "complex" just because the topic sounds impressive. A 6-sub-question plan on a narrow factual topic is "moderate." Complexity is about the breadth of synthesis needed, not the perceived importance of the topic.
- Token budget complacency — the budget check is not a formality. On complex multi-round research with long web extractions, context can fill up before the complexity cap is reached. Summarize aggressively when the budget is tight.
- 跳过研究规划——没有子问题,循环就没有方向,停止检查也没有基准。始终先规划。
- 查询中使用过时年份——始终注入日期锚定。模型默认使用训练截止年份。
- 重复获取同一URL——跟踪各轮次已分析的URL。浪费时间和token。
- 过度搜索——大多数主题在2-3轮内收敛。如果停止检查在第1或2轮就说YES,不要为了达到复杂度上限而继续。上限是天花板,而非目标值。
- 搜索不足——广泛主题仅1轮会生成浅层报告。如果停止检查说NO,继续搜索。
- 未进行质量筛选——包含单薄/无关来源会稀释报告质量。提取前先筛选。
- 罗列而非合成——报告应合成发现,而非简单罗列。解决矛盾、识别主题、得出结论。
- 缺失引用——最终报告中的每个事实声明都必须有inline引用——要么是与来源表格匹配的,要么是针对未列入编号表格的来源使用
[N]。(来源:URL,"标题") - 缺失证据依据标签——带有引用但无/
[VERIFIED]/[SOURCED]/[REASONED]标签的重要事实是未完整评分的。添加标签,并包含证据说明以解释标签含义。[ESTIMATED] - 使用即兴证据标签——仅使用四个标准标签。、
[Official]或[Confirmed]等同义词会破坏准则;需映射到四个标准标签之一。[Consensus] - 夸大依据——不要将单个来源的事实标记为,也不要夸大来源未提及的精度。如果在两个标签间犹豫,选择较弱的那个。
[VERIFIED] - 合成失败无输出——如果合成失败,始终使用备用报告。原始发现>无输出。
- 忽略矛盾——如果来源存在分歧,同时呈现双方观点。不要默默选择一方。
- 编造来源——绝不编造URL、标题或事实。如果子问题无法回答,记录为空白——绝不伪装成有来源的猜测。
[REASONED] - 未搜索反证——仅搜索支持性证据会产生有偏差的研究。第2轮及以后必须包含至少一个反证查询。如果未找到,明确说明。
- 缺失空白/矛盾章节——报告必须披露未知内容和来源分歧。省略这些章节会向读者隐藏不确定性,且表明研究不完整。
- 未分类来源质量——未分类的来源无法判断证据强度。始终在来源表格中标记primary/secondary/tertiary。
- 过度依赖三级来源——如果0个一级来源且三级来源>50%,证据基础薄弱。在空白章节中标记,并在定稿前尝试获取一级来源(官方文档、模型卡片、定价页面)。三级来源对反驳极性和真实世界轶事有价值,但如果存在一级/二级来源,绝不能作为事实声明的唯一支撑。限定三级来源支撑的声明:「社区报告表明...」而非「X是真实的」。
- 混淆声明与背景——关于研究主题的事实(声明)与边界条件(范围限制、方法说明、可用性空白)是不同的。使用结构化证据格式中的写作背景概念将二者分离。
- 对比表格后置——概述/对比表格应紧跟执行摘要,而非在详细分析之后。读者需要先获取一目了然的内容;详细章节是支撑推理。将表格放在最后会迫使读者在看到答案前先浏览分析内容。
- 子Agent合成——绝不委托合成步骤。协调者必须查看所有发现以进行诚实合成。
- 非CBD区域使用CBD租金——建模房地产收入时,不要将丸之内/大手町甲级写字楼租金(7万-10万日元/坪)应用于江东区等次级区域。使用子市场适用租金(江东区中端区域2万-3万日元/坪)。这一错误会使预计NOI膨胀3倍,让糟糕的交易看起来不错。
- 澄清循环——如果用户对澄清的回应更模糊,不要再澄清。基于对意图的最佳理解进行研究。最多进行一轮澄清。
- 复杂度分类错误——不要仅因主题听起来高端就分类为「复杂」。针对狭窄事实主题的6个子问题规划属于「中等」。复杂度取决于所需合成的广度,而非主题的感知重要性。
- 对token预算掉以轻心——预算检查不是形式。在复杂多轮研究且web提取内容较长的情况下,上下文可能在达到复杂度上限前就已满。预算紧张时积极总结。
Related Work
相关研究
Odysseus — PewDiePie's self-hosted AI workspace — includes a "Deep Research" feature with multi-step web research and source reading, conceptually similar to this skill's Think → Search → Extract → Synthesize → Stop loop. This skill is a pure-prompt workflow (no UI, no server) designed to run inside any agent's tool loop.
DocsGPT (arc53, MIT) — Private AI platform with a ResearchAgent () that implements a Plan → Research → Synthesize pipeline with adaptive depth (complexity caps), clarification phase, token budget tracking, citation deduplication, and progressive empty-search refinement. v1.5.0 of this skill adapted these concepts from DocsGPT's ResearchAgent; see for the mapping.
application/agents/research_agent.pyreferences/docsgpt-concepts.mdOdysseus — PewDiePie的自托管AI工作区——包含「深度研究」功能,支持多步骤web研究和来源阅读,与本技能的「思考→搜索→提取→合成→停止」循环概念相似。本技能是纯提示工作流(无UI、无服务器),设计用于在任何Agent的工具循环中运行。
DocsGPT(arc53,MIT许可)——私有AI平台,包含ResearchAgent(),实现了「规划→研究→合成」流水线,支持自适应深度(复杂度上限)、澄清阶段、token预算跟踪、引用去重和渐进式空搜索优化。本技能的v1.5.0版本改编自DocsGPT的ResearchAgent的这些概念;映射关系详见。
application/agents/research_agent.pyreferences/docsgpt-concepts.mdEvals
评估
evals/routing-fixtures.jsonentity-researchnotebooklm-modenews-monitoringtests/test_routing_fixtures.pyevals/routing-fixtures.jsonentity-researchnotebooklm-modenews-monitoringtests/test_routing_fixtures.py