关于 deep-research
Deep Research 是用于生成经核实、带引用研究报告的技能,采用分阶段研究与审查流程。它面向复杂分析,提供从快速探索到深入调查的模式,并涵盖来源、验证和报告整理指引。
主要功能
- 01多阶段研究流程
- 02来源可信度评分
- 03引用与报告验证
- 04从快速到 UltraDeep 的研究模式
- 05Markdown、HTML 和 PDF 报告指引
适用场景
- 01调查复杂的技术问题
- 02使用多方佐证来源比较选项
- 03编写引用经过验证的报告
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ rebyteai-template/ rebyte-skills --skill deep-research安装后在 Claude Code 中输入/deep-research确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitignoreARCHITECTURE_REVIEW.mdAUTONOMY_VERIFICATION.mdCOMPETITIVE_ANALYSIS.mdCONTEXT_OPTIMIZATION.mdQUICK_START.mdREADME.mdrequirements.txtWORD_PRECISION_AUDIT.mdreference/methodology.mdscripts/citation_manager.pymd_to_html.pyresearch_engine.pysource_evaluator.pyvalidate_report.pyverify_citations.pyverify_html.pytemplates/mckinsey_report_template.htmlreport_template.mdtests/fixtures/invalid_report.mdvalid_report.md详细介绍
深度研究
核心系统指令
目的: 通过 8 阶段流程(界定范围 → 制定计划 → 检索 → 交叉验证 → 综合 → 评议 → 优化 → 整理),提供带有引用依据且经过验证的研究报告,并对来源可信度进行评分,同时逐步管理上下文。
上下文策略: 此技能采用 2025 年上下文工程最佳实践:
- 缓存静态指令(本节)
- 渐进式披露(仅在需要时加载参考资料)
- 避免“中间丢失”(将关键信息放在开头或结尾,而不是埋在中间)
- 使用明确的章节标记进行上下文导航
决策树(首先执行)
Request Analysis
├─ Simple lookup? → STOP: Use WebSearch, not this skill
├─ Debugging? → STOP: Use standard tools, not this skill
└─ Complex analysis needed? → CONTINUE
Mode Selection
├─ Initial exploration? → quick (3 phases, 2-5 min)
├─ Standard research? → standard (6 phases, 5-10 min) [DEFAULT]
├─ Critical decision? → deep (8 phases, 10-20 min)
└─ Comprehensive review? → ultradeep (8+ phases, 20-45 min)
Execution Loop (per phase)
├─ Load phase instructions from [methodology](./reference/methodology.md#phase-N)
├─ Execute phase tasks
├─ Spawn parallel agents if applicable
└─ Update progress
Validation Gate
├─ Run `python scripts/validate_report.py --report [path]`
├─ Pass? → Deliver
└─ Fail? → Fix (max 2 attempts) → Still fails? → Escalate
工作流(澄清 → 规划 → 执行 → 验证 → 报告)
自主性原则: 此技能独立运行。根据查询上下文推断假设。仅在出现关键错误或查询难以理解时停止。
1. 澄清(极少需要——优先自主处理)
默认:自主推进。根据查询信号推导假设。
仅在存在关键歧义时提问:
- 查询难以理解(例如,“研究那个东西”)
- 要求相互矛盾(例如,“快速完成 50 个来源的超深度分析”)
如有疑问:按标准模式继续。若结果不正确,用户会进行调整。
默认假设:
- 技术类查询 → 假设受众是技术人员
- 比较类查询 → 假设需要平衡的观点
- 趋势类查询 → 除非另有说明,否则假设关注最近 1–2 年
- 大多数查询默认使用标准模式
2. 规划
模式选择标准:
- 快速(2–5 分钟):探索、概览、时间敏感的查询
- 标准(5–10 分钟):适用于大多数场景,兼顾深度与速度[默认]
- 深度(10–20 分钟):重要决策,需要全面验证
- 超深度(20–45 分钟):关键分析,严谨性最高
宣布计划并执行:
- 简要说明:所选模式、预计耗时、来源数量
- 示例:“开始标准模式研究(5–10 分钟,15–30 个来源)”
- 无需等待批准,直接继续
3. 执行(阶段执行)
所有模式均执行:
Standard/Deep/UltraDeep 均执行:
- 阶段 2:PLAN——制定策略
- 阶段 4:TRIANGULATE——每项主张至少核验 3 个来源
- 阶段 4.5:OUTLINE REFINEMENT——根据证据调整结构(WebWeaver 2025)(方法)
- 阶段 5:SYNTHESIZE——生成新见解
Deep/UltraDeep 均执行:
- 阶段 6:CRITIQUE——红队分析
- 阶段 7:REFINE——弥补不足
关键:避免“中间信息丢失”
- 将关键发现放在各部分的开头和结尾,不要埋在中间
- 使用明确的标题和标记
- 结构:摘要 → 详情 → 结论(而不是把详情夹在中间)
渐进式上下文加载:
反幻觉协议(关键):
- 基于来源:每项事实性主张都必须立即引用具体来源 [N]
- 明确区分:区分事实(来自来源)和综合分析(你的分析)
- 明确标记:对于基于来源的陈述,使用“根据 [1]……”或“[1] 报告称……”
- 未经标注不得推测:将推断标注为“这表明……”,而不是“研究表明……”
- 引用前核验:如果不确定来源是否确实提到 X,切勿伪造引用
- 不确定时:应说明“未找到关于 X 的来源”,而不是编造参考资料
并行执行要求(对速度至关重要):
阶段 3 RETRIEVE——必须并行搜索:
- 拆分查询:在进行任何搜索之前,将查询拆分为 5-10 个相互独立的搜索方向
- 同时启动所有搜索:在一条消息中通过多次工具调用启动所有搜索(不得顺序执行)
- 监控 FFS 模式的质量阈值:
- 跟踪来源数量和平均可信度评分
- 达到阈值后继续执行(按模式而异,详见方法论)
- 在后台继续搜索,以获取更多深入信息
- 使用 Task 工具启动 3-5 个并行 Agent,开展深入调查
正确执行示例:
[Single message with 8+ parallel tool calls]
WebSearch #1: Core topic semantic
WebSearch #2: Technical keywords
WebSearch #3: Recent 2024-2025 filtered
WebSearch #4: Academic domains
WebSearch #5: Critical analysis
WebSearch #6: Industry trends
Task agent #1: Academic paper analysis
Task agent #2: Technical documentation deep dive
❌ 错误(顺序执行):
WebSearch #1 → wait for results → WebSearch #2 → wait → WebSearch #3...
✅ 正确(并行执行):
All searches + agents launched simultaneously in one message
4. 核验(始终执行)
步骤 1:引用核验(捕获伪造来源)
python scripts/verify_citations.py --report [path]
检查项:
- DOI 解析(核验引用是否确实存在)
- 标题/年份匹配(检测元数据是否不匹配)
- 标记可疑条目(2024 年及之后但没有 DOI、没有 URL 或核验失败)
如果发现可疑引用:
- 手动检查已标记条目
- 删除或替换伪造来源
- 重新运行,直到检查无误
步骤 2:结构与质量验证
python scripts/validate_report.py --report [path]
8 项自动检查:
- 执行摘要长度(50-250 个词)
- 必需章节齐全(另建议包含:主张表、反面证据)
- 引用格式为 [1]、[2]、[3]
- 参考文献与引用相匹配
- 不含占位文本(TBD、TODO)
- 字数合理(500-10000)
- 至少 10 个来源
- 不含失效的内部链接
如果检查失败:
- 尝试 1:自动修复格式/链接
- 尝试 2:手动检查并更正
- 失败 2 次后:停止 → 报告问题 → 询问用户
5. 报告
关键:生成全面、详尽的 Markdown 报告
文件组织(关键——确保易于访问): 1. 在 /code 中创建有序文件夹:
- 始终创建专用文件夹:
/code/[TopicName]_Research_[YYYYMMDD]/ - 从研究问题中提取简洁的主题名称(移除特殊字符,使用下划线或 CamelCase)
- 示例:
- “psilocybin research 2025” →
/code/Psilocybin_Research_20251104/ - “compare React vs Vue” →
/code/React_vs_Vue_Research_20251104/ - “AI safety trends” →
/code/AI_Safety_Trends_Research_20251104/
- “psilocybin research 2025” →
- 如果文件夹已存在,则使用该文件夹;如果不存在,则创建该文件夹
- 这样可以确保文件井然有序,便于访问
2. 将所有格式保存到同一文件夹:
Markdown(主要来源):
- 保存到:
[Documents folder]/research_report_[YYYYMMDD]_[topic_slug].md - 同时将副本保存到:
/code/research_output/(内部跟踪) - 提供包含所有发现的完整详细报告
HTML(McKinsey 风格 — 始终生成):
- 保存到:
[Documents folder]/research_report_[YYYYMMDD]_[topic_slug].html - 使用 McKinsey 模板:mckinsey_template
- 设计原则:锐利转角(无 border-radius)、低调的企业配色(navy #003d5c、gray #f8f9fa)、超紧凑布局、信息优先的结构
- 在顶部放置关键指标仪表板(提取 3-4 项关键量化发现)
- 使用数据表展示密集信息
- 基础字号 14px,间距紧凑,不使用装饰性渐变或颜色
- **归因渐变(2025):**将每个引用 [N] 包裹在
<span class="citation">中,并嵌套显示来源详情的工具提示 div - 生成后自动在浏览器中打开
PDF(专业打印版 — 始终生成):
- 保存到:
[Documents folder]/research_report_[YYYYMMDD]_[topic_slug].pdf - 使用 generating-pdf skill(通过 Task 工具和 general-purpose agent)
- 采用专业排版,包含页眉和页码
- 生成后在默认 PDF 查看器中打开
3. 文件命名规范: 所有文件使用相同的基本名称,便于匹配:
research_report_20251104_psilocybin_2025.mdresearch_report_20251104_psilocybin_2025.htmlresearch_report_20251104_psilocybin_2025.pdf
长度要求(通过渐进式组装,不限长度):
- 快速模式:2,000+ 字(基准质量门槛)
- 标准模式:4,000+ 字(全面分析)
- 深度模式:6,000+ 字(深入调查)
- 超深度模式:10,000-50,000+ 字(无上限 — 根据证据所需,尽可能全面)
不限长度的实现方式: 渐进式文件组装允许生成任意长度的报告,方法是逐节生成。 每个章节都会立即写入文件(避免输出 token 限制)。 复杂主题有很多发现?生成 20、30、50 项以上发现都不受限制!
内容要求:
- 将 template 作为精确结构
- 按适当深度生成每个章节(深度由证据决定,而非字数目标)
- 包含具体数据、统计数字、日期和数值(避免含糊表述)
- 每项发现都要用证据展开多个段落(按需撰写)
- 为每个章节投入专注的生成精力
- 不要写摘要 — 撰写完整分析
写作标准:
- **叙事驱动:**使用流畅的散文写作。每项发现都要讲述一个完整的故事:开篇交代背景,中段呈现证据,结尾说明影响
- **精准:**精心斟酌每个词语,让其承载明确意图
- **精炼:**不写冗余内容,避免花哨语法和不必要的修饰语
- **清晰:**将精确数字融入句子中(“该研究表明,死亡率降低了 23%”),而不是单独列在项目符号中
- **直接:**直接陈述发现,不加修饰
- **高信噪比:**信息密集,尊重读者的时间 要点符号政策(防疲劳执行):
- 谨慎使用项目符号:仅用于不同类别的列表(产品名称、公司名录、编号步骤)
- 绝 NEVER 将项目符号用作主要内容呈现方式——它们会割裂思路
- 每个发现部分都需要实质性的散文段落(至少 3–5 段)
- 示例:不要写“• 市场规模:24 亿美元”,而应写“2023 年,全球市场规模达到 24 亿美元,这得益于消费者需求增长和监管利好因素 [1]。”
防疲劳质量检查(应用于每个部分): 完成一个部分前,请确认:
- 段落数:主要部分(## 标题)至少包含 3 段
- 散文优先:项目符号内容占比低于 20%(流畅散文须占至少 80%)
- 无占位内容:不含“Content continues”“Due to length”“[Sections X-Y]”
- 证据充分:包含具体数据点、统计数字和引述(而非笼统表述)
- 引文密度:主要论点所在句子中包含引文
**如果任一项未通过:**在进入下一部分前重新生成该部分。
来源归属标准(防止捏造的关键要求):
- 即时引用:每项事实性陈述后都须在同一句中附上 [N] 引文
- 直接引用来源:事实性陈述使用“根据 [1]……”或“[1] 报告称……”等表述
- 区分事实与综合分析:
- ✅ 正确:“治疗组的死亡率下降了 23%(p<0.01)[1]。”
- ❌ 错误:“研究显示死亡率显著改善。”
- 避免模糊归属:
- ❌ 绝不使用:“研究表明……”“研究显示……”“专家认为……”
- ✅ 始终使用:“Smith 等人(2024)发现……”[1]、“根据 FDA 数据……”[2]
- 明确标示推测:
- ✅ 正确:“这表明可能存在一种作用机制……”(分析,而非事实)
- ❌ 错误:“其作用机制是……”(未附引文却作为事实陈述)
- 承认不确定性:
- ✅ 正确:“未找到直接涉及 X 的来源。”
- ❌ 错误:为填补空缺而捏造引文
- 模板模式:“[包含数字/数据的具体论点] [引文]。[分析/影响]。”
交付给用户:
- 执行摘要(直接在聊天中提供)
- 整理后的文件夹路径(例如:“所有文件已保存至:/code/Psilocybin_Research_20251104/”)
- 确认已生成以下三种格式:
- Markdown(源文件)
- HTML(麦肯锡风格,已在浏览器中打开)
- PDF(专业打印版,已在查看器中打开)
- 来源质量评估摘要(来源数量)
- 后续步骤(如适用)
生成工作流:渐进式文件组装(长度不限)
阶段 8.1:设置
# Extract topic slug from research question
# Create folder: /code/[TopicName]_Research_[YYYYMMDD]/
mkdir -p /code/[folder_name]
# Create initial markdown file with frontmatter
# File path: [folder]/research_report_[YYYYMMDD]_[slug].md
阶段 8.2:渐进式章节生成
**关键策略:**使用 Write/Edit 工具逐节生成内容并写入文件。 这样既可以生成不限长度的报告,又能让每次生成都保持适度。
输出令牌数限制保护措施(关键——Claude Code 默认值:32K):
Claude Code 默认限制:32,000 个输出令牌(每次技能执行总计约 24,000 个单词) 这是一个硬性限制,无法在技能内更改。
这意味着:
- 总输出(你的文本 + 所有工具调用内容)必须少于 32,000 个令牌
- 32,000 个令牌约等于最多 24,000 个单词
- 留出安全余量:总输出目标不超过 20,000 个单词
各模式下报告的实际篇幅:
- Quick 模式:2,000–4,000 个单词 ✅(远低于限制)
- Standard 模式:4,000–8,000 个单词 ✅(远低于限制)
- Deep 模式:8,000–15,000 个单词 ✅(谨慎控制即可完成)
- UltraDeep 模式:15,000–20,000 个单词 ⚠️(接近限制,需密切监控)
对于超过 20,000 个单词的报告: 用户必须多次运行技能:
- 第 1 次运行:“生成第 1 部分(第 1–6 节)”→ 保存为 part1.md
- 第 2 次运行:“生成第 2 部分(第 7–12 节)”→ 保存为 part2.md
- 用户手动合并文件,或要求 Claude 合并文件
自动续写策略(真正不限长度): 当单次运行生成的报告超过 18,000 个单词时:
- 生成第 1–10 节(保持在 18K 个单词以内)
- 保存续接状态文件,并保留上下文
- 通过 Task 工具启动续接 Agent
- 续接 Agent:读取状态 → 生成下一批内容 → 如有需要,启动下一个 Agent
- 递归续接,直到全部完成
这样即可实现无限长度,同时遵守每个 Agent 32K 的限制
初始化引用追踪:
citations_used = [] # Maintain this list in working memory throughout
章节生成循环:
模式: 生成章节内容 → 使用 Write/Edit 工具写入该内容 → 继续下一节 每次 Write/Edit 调用只包含一个章节(≤2,000 个单词)
-
执行摘要(200–400 个单词)
- 生成章节内容
- 工具:Write(file, content=frontmatter + 执行摘要)
- 追踪已使用的引用
- 进度:"✓ 执行摘要"
-
引言(400–800 个单词)
- 生成章节内容
- 工具:Edit(file, old=last_line, new=old + 引言章节)
- 追踪已使用的引用
- 进度:"✓ 引言"
-
发现 1(600–2,000 个单词)
- 生成完整发现内容
- 工具:Edit(file, append 发现 1)
- 追踪已使用的引用
- 进度:"✓ 发现 1"
-
发现 2(600–2,000 个单词)
- 生成完整发现内容
- 工具:Edit(file, append 发现 2)
- 追踪已使用的引用
- 进度:"✓ 发现 2"
... 对所有发现继续执行(每项发现调用一次 Edit 工具,每次 ≤2,000 个单词)
重要: 如果有 10 项发现,每项 1,500 个单词,则发现部分共计 15,000 个单词 这没有问题,因为每次 Edit 调用只有 1,500 个单词(低于每次工具调用 2,000 个单词的限制) 文件总长度会达到 15,000 个单词,但没有任何单次工具调用超出限制
-
综合与洞见
- 生成:源陈述之外的新颖洞见(综合所需篇幅不限)
- 工具:Edit(追加到文件)
- 追踪:提取引用,并追加到 citations_used
- 进度:"已生成综合 ✓"
-
局限与注意事项
- 生成:反面证据、缺漏、不确定性(深度适当)
- 工具:Edit(追加到文件)
- 追踪:提取引用,并追加到 citations_used
- 进度:"已生成局限 ✓"
-
建议
- 生成:即时行动、后续步骤、研究需求(深度适当)
- 工具:Edit(追加到文件)
- 追踪:提取引用,并追加到 citations_used
- 进度:"已生成建议 ✓"
-
参考文献(重要——包含所有引用)
- 生成:完整的参考文献,包含 citations_used 列表中的每条引用
- 格式:[1]、[2]、[3]……[N]——每条引用都要有完整条目
- 核验:检查 citations_used 列表;如果列表包含 [1] 至 [73],就生成全部 73 条
- 不得使用范围([1-50])、占位符("其他引用")或截断
- 工具:Edit(追加到文件)
- 进度:"已生成参考文献 ✓(N 条引用)"
-
方法论附录
- 生成:研究流程、核验方法(深度适当)
- 工具:Edit(追加到文件)
- 进度:"已生成方法论 ✓"
阶段 8.3:自动续接决策点
生成章节后,检查字数:
如果总输出 ≤18,000 个单词: 正常完成
- 生成参考文献(包含所有引用)
- 生成方法论
- 核验报告完整性
- 保存副本到 /code/research_output/
- 完成!✓
如果总输出将超过 18,000 个单词: 自动续接协议
步骤 1:保存续接状态
创建文件:/code/research_output/continuation_state_[report_id].json
{
"version": "2.1.1",
"report_id": "[unique_id]",
"file_path": "[absolute_path_to_report.md]",
"mode": "[quick|standard|deep|ultradeep]",
"progress": {
"sections_completed": [list of section IDs done],
"total_planned_sections": [total count],
"word_count_so_far": [current word count],
"continuation_count": [which continuation this is, starts at 1]
},
"citations": {
"used": [1, 2, 3, ..., N],
"next_number": [N+1],
"bibliography_entries": [
"[1] Full citation entry",
"[2] Full citation entry",
...
]
},
"research_context": {
"research_question": "[original question]",
"key_themes": ["theme1", "theme2", "theme3"],
"main_findings_summary": [
"Finding 1: [100-word summary]",
"Finding 2: [100-word summary]",
...
],
"narrative_arc": "[Current position in story: beginning/middle/conclusion]"
},
"quality_metrics": {
"avg_words_per_finding": [calculated average],
"citation_density": [citations per 1000 words],
"prose_vs_bullets_ratio": [e.g., "85% prose"],
"writing_style": "technical-precise-data-driven"
},
"next_sections": [
{"id": N, "type": "finding", "title": "Finding X", "target_words": 1500},
{"id": N+1, "type": "synthesis", "title": "Synthesis", "target_words": 1000},
...
]
}
步骤 2:启动续接 Agent
使用通用 Agent 调用 Task 工具:
Task(
subagent_type="general-purpose",
description="Continue deep-research report generation",
prompt="""
CONTINUATION TASK: You are continuing an existing deep-research report.
CRITICAL INSTRUCTIONS:
1. Read continuation state file: /code/research_output/continuation_state_[report_id].json
2. Read existing report to understand context: [file_path from state]
3. Read LAST 3 completed sections to understand flow and style
4. Load research context: themes, narrative arc, writing style from state
5. Continue citation numbering from state.citations.next_number
6. Maintain quality metrics from state (avg words, citation density, prose ratio)
CONTEXT PRESERVATION:
- Research question: [from state]
- Key themes established: [from state]
- Findings so far: [summaries from state]
- Narrative position: [from state]
- Writing style: [from state]
YOUR TASK:
Generate next batch of sections (stay under 18,000 words):
[List next_sections from state]
Use Write/Edit tools to append to existing file: [file_path]
QUALITY GATES (verify before each section):
- Words per section: Within ±20% of [avg_words_per_finding]
- Citation density: Match [citation_density] ±0.5 per 1K words
- Prose ratio: Maintain ≥80% prose (not bullets)
- Theme alignment: Section ties to key_themes
- Style consistency: Match [writing_style]
After generating sections:
- If more sections remain: Update state, spawn next continuation agent
- If final sections: Generate complete bibliography, verify report, cleanup state file
HANDOFF PROTOCOL (if spawning next agent):
1. Update continuation_state.json with new progress
2. Add new citations to state
3. Add summaries of new findings to state
4. Update quality metrics
5. Spawn next agent with same instructions
"""
)
步骤 3:报告续接状态 告知用户:
📊 Report Generation: Part 1 Complete (N sections, X words)
🔄 Auto-continuing via spawned agent...
Next batch: [section list]
Progress: [X%] complete
阶段 8.4:续接 Agent 质量协议
续接 Agent 启动时: 上下文加载(关键):
- 读取 continuation_state.json → 加载所有上下文
- 读取现有报告文件 → 查看最后 3 个章节
- 提取以下模式:
- 句子结构复杂度
- 使用的技术术语
- 引用的位置模式
- 段落过渡风格
生成前检查清单:
- 已加载研究上下文(主题、问题、叙事脉络)
- 已查看前文,确保行文连贯
- 已加载引用编号(从 N+1 开始)
- 已加载质量目标(字数、密度、风格)
- 已了解叙事脉络所处阶段(开头/中段/结尾)
逐节生成:
- 生成章节内容
- 质量检查:
- 字数:在目标值 ±20% 范围内
- 引用密度:与既定比例一致
- 正文比例:≥80%
- 主题关联:与 key_themes 相关
- 风格匹配:与 quality_metrics.writing_style 保持一致
- 如果任意一项检查未通过:重新生成该章节
- 如果全部通过:写入文件并更新状态
交接决策:
- 计算:当前字数 + 剩余章节数 × 每节平均字数
- 如果总字数 < 18K:生成所有剩余章节并完成
- 如果总字数 > 18K:生成部分批次,更新状态,并启动下一个 Agent
最终 Agent 的职责:
- 生成最后的内容章节
- 使用 state.citations.bibliography_entries 中的所有引用生成完整参考文献
- 阅读组装完成的整篇报告
- 运行验证:python scripts/validate_report.py --report [path]
- 删除 continuation_state.json(清理)
- 向用户报告完成情况及指标
内置防疲劳机制: 每个 Agent 只生成适量内容(≤18K 字),以保持质量。 保留上下文,确保跨续接边界的内容连贯一致。
生成 HTML(McKinsey 风格)
-
从
./templates/mckinsey_report_template.html读取 McKinsey 模板 -
从研究发现中提取 3-4 个关键量化指标,用于仪表板
-
使用 Python 脚本将 MD 转换为 HTML:
cd ~/.claude/skills/deep-research python scripts/md_to_html.py [markdown_report_path]脚本会返回两部分:
- Part A ({{CONTENT}}): 除参考文献外的所有章节,已正确转换为 HTML
- Part B ({{BIBLIOGRAPHY}}): 仅参考文献章节,已格式化为 HTML
关键: 脚本会自动处理所有转换:
- 标题:## →
<div class="section"><h2 class="section-title">,### →<h3 class="subsection-title"> - 列表:Markdown 项目符号 →
<ul><li>,并正确处理嵌套 - 表格:Markdown 表格 →
<table>,包含 thead/tbody - 段落:将文本包裹在
<p>标签中 - 粗体/斜体:text →
<strong>,text →<em> - 引用:保留 [N],以便在步骤 4 中转换为工具提示
-
添加引用工具提示(归因渐变): 对于 {{CONTENT}} 中的每个 [N] 引用(不包括参考文献),可选择添加交互式工具提示:
<span class="citation">[N] <span class="citation-tooltip"> <div class="tooltip-title">[Source Title]</div> <div class="tooltip-source">[Author/Publisher]</div> <div class="tooltip-claim"> <div class="tooltip-claim-label">Supports Claim:</div> [Extract sentence with this citation] </div> </span> </span>注意:为节省时间,此步骤可选。使用基本的 [N] 引用即可。
-
替换模板中的占位符:
- {{TITLE}} - 报告标题(从 MD 中的第一个 ## 标题提取)
- {{DATE}} - 生成日期(YYYY-MM-DD 格式)
- {{SOURCE_COUNT}} - 唯一来源的数量
- {{METRICS_DASHBOARD}} - 步骤 2 生成的指标 HTML
- {{CONTENT}} - Part A 的 HTML(脚本输出)
- {{BIBLIOGRAPHY}} - Part B 的 HTML(脚本输出)
-
关键:不得包含表情符号 - 从最终 HTML 中移除所有表情符号
-
保存到:
[folder]/research_report_[YYYYMMDD]_[slug].html -
验证 HTML(必须):
python scripts/verify_html.py --html [html_path] --md [md_path]- 检查通过:继续步骤 9
- 检查未通过:修复错误并重新运行验证
-
在浏览器中打开:
open [html_path]
生成 PDF
- 使用 Task 工具和通用 Agent
- 调用 generating-pdf 技能,并以 Markdown 作为输入
- 保存到:
[folder]/research_report_[YYYYMMDD]_[slug].pdf - 完成后会自动打开 PDF
输出规范
格式: 严格按照模板撰写全面的 Markdown 报告
必需章节(均须详尽):
- 执行摘要(2–3 个简洁段落,50–250 个单词)
- 引言(2–3 个段落:问题、范围、方法、假设)
- 主要分析(4–8 项发现,每项 300–500 个单词,并附上引用 [1]、[2]、[3])
- 综合与洞见(500–1000 个单词:模式、新颖洞见、影响)
- 局限性与注意事项(2–3 个段落:缺口、假设、不确定性)
- 建议(3–5 项即时行动、3–5 项后续步骤、3–5 项进一步研究)
- 参考文献(至关重要——请参阅以下规则)
- 方法附录(2–3 个段落:流程、来源、核验)
参考文献要求(零容忍——缺少完整参考文献,报告即不可用):
- ✅ 必须列出报告正文中使用的每一条引用 [N](如果报告中有 [1]–[50],就必须列出全部 50 条)
- ✅ 格式:[N] 作者/机构(年份)。“标题”。出版物。URL(检索日期:日期)
- ✅ 每条独占一行,并包含所有元数据
- ❌ 不得使用占位内容:绝不能写“[8-75] 其他引用”、“……继续……”、“等等”或“[继续列出来源……]”
- ❌ 不得使用范围:必须逐条写出 [3]、[4]、[5]……,不得写成“[3-50]”
- ❌ 不得截断:如果引用了 30 个来源,就必须完整列出全部 30 条
- ⚠️ 如果参考文献包含占位内容或缺少引用,验证将失败
- ⚠️ 没有完整参考文献,报告就毫无价值——主张无法核验
严格禁止:
- 占位文本(TBD、TODO、[citation needed])
- 未引用来源的重要主张
- 无效链接
- 缺少必需章节
- 以简短摘要代替详细分析
- 没有具体证据的含糊表述
写作标准(至关重要):
- 叙述驱动: 使用流畅的文字和完整句子,循序渐进地帮助读者理解
- 精准: 审慎选择每个词语,每个词都必须有明确用意
- 精简: 删除赘述、不必要的形容词和花哨的语法
- 清晰: 使用精确的技术术语,避免歧义。将具体数字写入句子,而非项目符号
- 直截了当: 清楚陈述发现,不加修饰
- 信息密度: 提高信息密度,尊重读者的时间
- 项目符号规范: 仅在列举不同项目(产品、公司、步骤)时使用项目符号。默认使用段落
- 精准示例:
- 不佳:“显著改善了结果” → 良好:“死亡率降低了 23%(p<0.01)”
- 不佳:“多项研究表明” → 良好:“5 项 RCT(n=1,847)显示”
- 不佳:“可能有益” → 良好:“生物标志物 X 增加了 15%”
- 不佳:“• 市场:24 亿美元” → 良好:“2023 年,受消费者需求推动,市场规模达到 24 亿美元 [1]。”
质量门槛(由验证器强制执行):
- 至少 2,000 个单词(标准模式)
- 平均可信度评分 >60/100
- 每项重要主张至少 3 个来源
- 明确区分事实与分析
- 包含所有章节且内容详尽
错误处理与停止规则
出现以下情况时立即停止:
- 同一错误导致验证失败 2 次 → 暂停、报告并询问用户
- 穷尽搜索后来源仍少于 5 个 → 报告限制并请求指示
- 用户中断或更改范围 → 确认新的方向
妥善降级处理:
- 来源为 5–10 个 → 在局限性中说明,并加强核验后继续
- 达到时间限制 → 整理部分结果并记录缺口
- 出现高优先级批评意见 → 立即处理
错误格式:
⚠️ Issue: [Description]
📊 Context: [What was attempted]
🔍 Tried: [Resolution attempts]
💡 Options:
1. [Option 1]
2. [Option 2]
3. [Option 3]
质量标准(始终执行)
每份报告都必须:
- 至少包含 10 个来源(不足时须说明)
- 每项重要主张至少有 3 个来源
- 执行摘要少于 250 个单词
- 引用完整并包含 URL
- 评估可信度
- 包含局限性章节
- 记录方法
- 不含占位内容
优先级: 完整性高于速度。质量高于速度。
输入与假设
必需:
- 研究问题(字符串)
可选:
- 模式(quick/standard/deep/ultradeep)
- 时间限制
- 所需视角/来源
- 输出格式
假设:
- 用户需要经过核实且有引用支持的信息
- 该主题有 10-50 个可用来源
- 时间投入:5-45 分钟
适用场景 / 不适用场景
适用于:
- 综合分析(需要 10 个以上来源)
- 比较技术/方法/策略
- 前沿技术综述
- 多角度调查
- 技术决策
- 市场/趋势分析
不适用于:
- 简单查询(使用 WebSearch)
- 调试(使用标准工具)
- 只需 1-2 个搜索答案
- 需要快速回答的时效性问题
脚本(仅使用离线 Python 标准库)
位置: ./scripts/
- research_engine.py - 编排引擎
- validate_report.py - 质量验证(8 项检查)
- citation_manager.py - 引用跟踪
- source_evaluator.py - 可信度评分(0-100)
无需外部依赖。
渐进式参考资料(按需加载)
不要将以下内容内联,仅作参考:
上下文管理: 仅按需加载当前阶段所需的文件。不要预加载所有内容。
动态执行区域
用户查询处理: [执行期间将在此处插入用户研究问题]
检索到的信息: [此处将汇总搜索结果和来源]
生成的分析: [此处将生成发现、综合分析和报告内容]
注意: 此部分在技能定义中保持为空,仅在运行时填充内容。