深度研究
<!-- STATIC CONTEXT BLOCK START - 针对提示缓存优化 --> <!-- 所有静态指令、方法论和模板位于此行以下 --> <!-- 动态内容(用户查询、结果)在此块之后添加 -->
核心系统指令
**目的:**通过8阶段流水线(范围 → 计划 → 检索 → 三角测量 → 综合 → 批评 → 细化 → 打包)提供引用支持、经过验证的研究报告,包括源可信度评分和渐进式上下文管理。
**上下文策略:**此技能使用2025年上下文工程最佳实践:
- 静态指令缓存(本节)
- 渐进式披露(仅在需要时加载引用) -避免“中间丢失”(关键信息位于开始/结束,不埋没) -为上下文导航使用明确的部分标记
决策树(首先执行)
请求分析
├─ 简单查找?→ 停止:使用WebSearch,不是这个技能
├─ 调试?→ 停止:使用标准工具,不是这个技能
└─ 需要复杂分析?→ 继续
模式选择
├─ 初步探索?→ 快速(3阶段,2-5分钟)
├─ 标准研究?→ 标准(6阶段,5-10分钟)[默认]
├─ 重要决策?→ 深入(8阶段,10-20分钟)
└─ 全面审查?→ 超深入(8+阶段,20-45分钟)
执行循环(每阶段)
├─ 从[methodology](./reference/methodology.md#phase-N)加载阶段指令
├─ 执行阶段任务
├─ 如适用,生成并行代理
└─ 更新进度
验证门
├─ 运行`python scripts/validate_report.py --report [path]`
├─ 通过?→ 交付
└─ 失败?→ 修复(最多2次尝试)→ 仍然失败?→ 升级
工作流程(澄清 → 计划 → 行动 → 验证 → 报告)
**自主原则:**此技能独立运行。从查询上下文中推断假设。仅在发生严重错误或无法理解的查询时停止。
1. 澄清(很少需要 - 优先自主)
**默认:**自主进行。从查询信号中派生假设。
仅在极度模糊时询问:
- 查询无法理解(例如,“研究事物”)
- 矛盾的要求(例如,“快速50源超深入分析”)
**有疑问时:**继续使用标准模式。如果不正确,用户将重新定向。
默认假设:
- 技术查询 → 假设需要技术受众
- 比较查询 → 假设需要平衡的观点
- 趋势查询 → 假设最近1-2年,除非另有说明
- 标准模式是大多数查询的默认
2. 计划
模式选择标准:
- 快速(2-5分钟):探索,广泛概述,时间敏感
- 标准(5-10分钟):大多数用例,平衡深度/速度[默认]
- 深入(10-20分钟):重要决策,需要彻底验证
- 超深入(20-45分钟):关键分析,最大严谨性
宣布计划并执行:
- 简要说明:选定的模式,估计时间,来源数量
- 示例:“开始标准模式研究(5-10分钟,15-30来源)”
- 无需等待批准即可继续
3. 行动(阶段执行)
所有模式执行:
标准/深入/超深入执行:
- 第2阶段:计划 - 策略制定
- 第4阶段:三角测量 - 验证每个声明的3+来源
- 第4.5阶段:大纲细化 - 根据证据适应结构(WebWeaver 2025)(method)
- 第5阶段:综合 - 生成新见解
深入/超深入执行:
- 第6阶段:批评 - 红队分析
- 第7阶段:细化 - 填补空白
关键:避免“中间丢失”
- 将关键发现放在各节的开始和结束,不埋没
- 使用明确的标题和标记
- 结构:摘要 → 细节 → 结论(不是夹在细节中的)
渐进式上下文加载:
- 按需加载methodology节
- 仅在第8阶段加载模板
- 不要内联所有内容 - 引用外部文件
反幻觉协议(关键):
- 源接地:每个事实声明后必须立即引用特定来源[N]
- 明确界限:区分事实(来自来源)和综合(你的分析)
- 明确标记:使用“根据[1]…”或“[1]报告…”用于有源支持的陈述
- 无标签不推测:将推断标记为“这表明…”,而不是“研究表明…”
- 引用前验证:如果不确定来源是否确实说X,不要捏造引用
- 不确定时:说“没有找到关于X的来源”,而不是编造参考
并行执行要求(速度关键):
第3阶段检索 - 强制并行搜索:
- 将查询分解成5-10个独立搜索角度,然后进行任何搜索
- 在单条消息中启动所有搜索,使用多个工具调用(不是顺序的)
- 质量阈值监控以进行FFS模式:
- 跟踪来源数量和平均可信度分数
- 达到阈值时继续(模式特定,见方法论)
- 继续后台搜索以获得额外深度
- 生成3-5个并行代理使用任务工具进行深入调查
正确执行示例:
[单条消息中包含8+并行工具调用]
WebSearch #1:核心主题语义
WebSearch #2:技术关键词
WebSearch #3:最近2024-2025过滤
WebSearch #4:学术领域
WebSearch #5:关键分析
WebSearch #6:行业趋势
任务代理 #1:学术论文分析
任务代理 #2:技术文档深入研究
❌ 错误(顺序执行):
WebSearch #1 → 等待结果 → WebSearch #2 → 等待 → WebSearch #3...
✅ 正确(并行执行):
所有搜索+代理同时启动
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. 在文档中创建有组织的文件夹:
- 总是创建专用文件夹:
~/Documents/[TopicName]_Research_[YYYYMMDD]/ - 从研究问题中提取干净的主题名称(删除特殊字符,使用下划线/驼峰)
- 示例:
- “psilocybin研究2025” →
~/Documents/Psilocybin_Research_20251104/ - “比较React与Vue” →
~/Documents/React_vs_Vue_Research_20251104/ - “AI安全趋势” →
~/Documents/AI_Safety_Trends_Research_20251104/
- “psilocybin研究2025” →
- 如果文件夹存在,则使用它;如果不存在,则创建它
- 这确保了清洁的组织和易访问性
2. 保存所有格式到同一文件夹:
Markdown(主要来源):
- 保存到:
[Documents folder]/research_report_[YYYYMMDD]_[topic_slug].md - 也在:
~/.claude/research_output/(内部跟踪)保存副本 - 包含所有发现的完整详细报告
HTML(麦肯锡风格 - 总是生成):
- 保存到:
[Documents folder]/research_report_[YYYYMMDD]_[topic_slug].html - 使用麦肯锡模板:mckinsey_template
- 设计原则:锋利的角落(无边框半径),柔和的企业色彩(海军蓝#003d5c,灰色#f8f9fa),超紧凑布局,信息优先结构
- 顶部放置关键指标仪表板(提取3-4个关键定量发现)
- 使用数据表呈现密集信息
- 14px基础字体,紧凑间距,无装饰性渐变或颜色
- **归属梯度(2025):**将每个引用[N]包装在
<span class="citation">中,嵌套工具提示div显示来源详细信息 - 生成后自动在浏览器中打开
PDF(专业打印 - 总是生成):
- 保存到:
[Documents folder]/research_report_[YYYYMMDD]_[topic_slug].pdf - 使用生成PDF技能(通过任务工具与通用代理)
- 专业格式,带标题,页码
- 生成后在默认PDF查看器中自动打开
3. 文件命名约定: 所有文件使用相同的基础名称,便于匹配:
research_report_20251104_psilocybin_2025.mdresearch_report_20251104_psilocybin_2025.htmlresearch_report_20251104_psilocybin_2025.pdf
长度要求(无限长度与渐进式组装):
- 快速模式:2000+字(基线质量阈值)
- 标准模式:4000+字(全面分析)
- 深入模式:6000+字(彻底调查)
- 超深入模式:10000-50000+字(无上限 - 证据保证尽可能全面)
无限长度如何工作: 渐进式文件组装允许任何报告长度,通过逐节生成。 每个部分立即写入文件(避免输出令牌限制)。 复杂主题有许多发现?生成20、30、50+发现 - 无限制!
内容要求:
- 使用模板作为确切结构
- 生成每个部分到适当深度(由证据决定,而不是字数目标)
- 包括特定数据、统计数据、日期、数字(不是模糊陈述)
- 每个部分有多个段落的证据(需要时尽可能多)
- 每个部分得到集中生成关注
- 不要写摘要 - 写完整分析
写作标准:
- 叙事驱动:用流畅的散文写作。每个发现都讲述了一个故事,有开始(上下文)、中间(证据)、结束(影响)
- 精确:每个字都经过精心选择,带有意图
- 经济:没有废话,消除不必要的形容词、花哨的语法
- 清晰:在句子中嵌入确切的数字(“研究表明治疗组死亡率降低了23%(p<0.01)”),而不是孤立在项目符号中
- 直接:明确陈述发现,不加修饰
- 高信噪比:信息密度高,尊重读者的时间
- 项目符号政策(反疲劳执行):
- 使用项目符号谨慎:仅用于不同列表(产品名称、公司名单、列举步骤)
- 从不使用项目符号作为主要内容交付 - 它们会分散思维
- 每个发现部分需要实质性散文段落(每个主要部分至少3-5段落)
- 示例:不是“•市场规模:$2.4B”,而是“2023年全球市场达到$2.4亿,受消费者需求增加和监管顺风推动[1]。”
反疲劳质量检查(每个部分都应用): 在认为一个部分完成之前,验证:
- [ ] 段落计数:主要部分(##标题)≥3段落
- [ ] 散文优先:<20%的内容是项目符号(≥80%必须是流畅散文)
- [ ] 无占位符:零实例的“内容继续”,“由于长度”,“[部分X-Y]”
- [ ] 证据丰富:特定数据点、统计数据、引用(不是模糊陈述)
- [ ] 引用密度:主要声明在同一句子中引用
**如果任何检查失败:**在移动到下一个部分之前重新生成该部分。
源归属标准(防止捏造的关键):
- 立即引用:每个事实声明后都跟着[N]引用在同一句子中
- 直接引用来源:使用“根据[1]…”或“[1]报告…”用于事实陈述
- 区分事实与综合:
- ✅ 好的:“治疗组死亡率降低了23%(p<0.01)[1]。”
- ❌ 坏的:“研究表明死亡率显著提高。”
- 无模糊归属:
- ❌ 从不:“研究表明…”,“研究表明…”,“专家认为…”
- ✅ 总是:“Smith等人(2024)发现…”[1],“根据FDA数据…”[2]
- 明确标记推测:
- ✅ 好的:“这表明一个潜在的机制…”(分析,不是事实)
- ❌ 坏的:“机制是…”(作为事实呈现,没有引用)
- 承认不确定性:
- ✅ 好的:“没有找到直接涉及X的来源。”
- ❌ 坏的:填补空白捏造引用
- 模板模式:“[具体声明与数据/数字] [引用]。[分析/影响]。”
交付给用户:
- 执行摘要(内联聊天)
- 有组织的文件夹路径(例如,“所有文件保存到:~/Documents/Psilocybin_Research_20251104/”)
- 确认生成了所有三种格式:
- Markdown(源)
- HTML(麦肯锡风格,在浏览器中打开)
- PDF(专业打印,在查看器中打开)
- 来源质量评估摘要(来源计数)
- 下一步(如果相关)
生成工作流程:渐进式文件组装(无限长度)
第8.1阶段:设置
# 从研究问题中提取主题slug
# 创建文件夹:~/Documents/[TopicName]_Research_[YYYYMMDD]/
mkdir -p ~/Documents/[folder_name]
# 创建初始markdown文件,带有前matter
# 文件路径:[folder]/research_report_[YYYYMMDD]_[slug].md
第8.2阶段:渐进式部分生成
**关键策略:**逐个部分生成并使用Write/Edit工具写入文件。 这允许无限报告长度,同时保持每个生成易于管理。
输出令牌限制安全保障(关键 - Claude代码默认:32K):
Claude代码默认限制:32,000输出令牌(≈24,000总字数每次技能执行) 这是硬限制,不能在技能内更改。
这意味着:
- 总输出(你的文本+所有工具调用内容)必须<32,000令牌
- 32,000令牌≈24,000字最大
- 留安全边际:目标≤20,000字总输出
实际报告大小每模式:
- 快速模式:2000-4000字✅(远低于限制)
- 标准模式:4000-8000字✅(舒适低于限制)
- 深入模式:8000-15000字✅(小心可实现)
- 超深入模式:15000-20000字⚠️(达到限制,密切监控)
对于>20000字的报告: 用户必须多次运行技能:
- 运行1:“生成第1部分(第1-6节)”→保存到part1.md
- 运行2:“生成第2部分(第7-12节)”→保存到part2.md
- 用户手动合并或要求Claude合并文件
自动延续策略(真正的无限长度):
当报告超过18,000字时:
- 生成第1-10节(保持在18K字以下)
- 保存延续状态文件,带有上下文保存
- 通过任务工具生成延续代理
- 延续代理:读取状态→生成下一批→如果需要,生成下一个代理
- 链继续递归,直到完成
这实现了无限长度,同时尊重每个代理的32K限制
初始化引用跟踪:
citations_used = [] # 在整个工作记忆中维护此列表
部分生成循环:
**模式:**生成部分内容→使用Write/Edit工具,带该内容→移动到下一部分 每个Write/Edit调用包含一个部分(每次调用≤2000字)
-
执行摘要(200-400字)
- 生成部分内容
- 工具:Write(file, content=frontmatter + 执行摘要)
- 跟踪使用的引用
- 进度:“✓ 执行摘要”
-
引言(400-800字)
- 生成部分内容
- 工具:Edit(file, old=last_line, new=old + 引言部分)
- 跟踪使用的引用
- 进度:“✓ 引言”
-
发现1(600-2000字)
- 生成完整发现
- 工具:Edit(file, append 发现1)
- 跟踪使用的引用
- 进度:“✓ 发现1”
-
发现2(600-2000字)
- 生成完整发现
- 工具:Edit(file, append 发现2)
- 跟踪使用的引用
- 进度:“✓ 发现2”
… 继续为所有发现(每个发现=一个Edit工具调用,每个调用≤2000字)
**关键:**如果你有10个发现×每个发现1500字=15000字的发现 这是可以的,因为每个Edit调用只包含1500字(低于2000字限制) 文件增长到15000字,但没有单个工具调用超过限制
-
综合与见解
- 生成:超出来源陈述的新见解(综合所需的尽可能长)
- 工具:Edit(附加到文件)
- 跟踪:提取引用,追加到citations_used
- 进度:“生成综合 ✓”
-
限制与警告
- 生成:反证据、空白、不确定性(适当深度)
- 工具:Edit(附加到文件)
- 跟踪:提取引用,追加到citations_used
- 进度:“生成限制 ✓”
-
建议
- 生成:立即行动、下一步、研究需求(适当深度)
- 工具:Edit(附加到文件)
- 跟踪:提取引用,追加到citations_used
- 进度:“生成建议 ✓”
-
参考文献(关键 - 所有引用)
- 生成:使用citations_used列表中的每个引用的完整参考文献
- 格式:[N]作者/组织(年份)。“标题”。出版物。URL(检索日期)
- 每个条目都单独一行,包含所有元数据
- 验证:检查citations_used列表 - 如果列表包含[1]到[73],生成所有73个条目
- 无范围([1-50]),无占位符(“其他引用”),无截断
- 工具:Edit(附加到文件)
- 进度:“生成参考文献 ✓(N引用)”
-
方法论附录
- 生成:研究过程、验证方法(适当深度)
- 工具:Edit(附加到文件)
- 进度:“生成方法论 ✓”
第8.3阶段:自动延续决策点
生成部分后,检查字数:
**如果总输出≤18,000字:**正常完成
- 生成参考文献(所有引用)
- 生成方法论
- 验证完整报告
- 保存副本到~/.claude/research_output/
- 完成!✓
**如果总输出将超过18,000字:**自动延续协议
第1步:保存延续状态
创建文件:~/.claude/research_output/continuation_state_[report_id].json
{
"version": "2.1.1",
"report_id": "[unique_id]",