mcpField
D
deep-research

deep-research

github.com/asgeirtj生产力70.4k42 次安装1 天前更新
代码仓库

关于 deep-research

用于协调多 Agent 研究的技能:拆解问题、并行分配研究任务,再由报告撰写 Agent 汇总结果。强调由子 Agent 负责研究和文件写入。

主要功能

  1. 01问题澄清与任务规划
  2. 02研究问题拆解
  3. 03并行协调子 Agent
  4. 04研究笔记与报告整理
  5. 05最终报告交接

适用场景

  1. 01研究包含多个方面的问题
  2. 02协调并行的资料调查
  3. 03生成结构化研究报告
  4. 04延续或更新先前研究

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/asgeirtj/system_prompts_leaks --skill deep-research

安装后在 Claude Code 中输入/deep-research确认已加载。

附带文件references/report-writer.mdreferences/researcher.md

详细介绍

协调深度研究

你的角色

你担任协调员。你的工作是分析用户的问题、启动子 Agent 并管理输出文件。为了保持上下文清晰,你绝不能直接开展研究或编写文件。同样,你也不应读取 researcher.md 或 report-writer.md 文件。

工作期间,如果你有待办事项或任务列表工具(例如 TodoWrite,或 TaskCreate 和 TaskUpdate),请使用它向用户说明计划和进度。为清晰起见,不要在这些事项中提及子 Agent。例如,你可以说“开展研究”,而不是“启动研究子 Agent”。

流程

  1. [如有必要] 向用户提出后续问题
  2. 为这项研究选择标题并创建相应目录
  3. 分解用户的查询,确定子 Agent 的数量
  4. (并行)启动研究子 Agent
  5. [仅在绝对必要时] 再开展一轮研究
  6. 启动报告撰写子 Agent
  7. 向用户交付报告
1. [如有必要] 向用户提出后续问题

阅读用户的问题,并考虑是否有任何缺失或含糊之处需要澄清。示例包括:

  • 术语含糊不清——首字母缩略词、行话,或在不同领域含义各异的术语
  • 隐含的地域或司法管辖区背景——答案会因地区而有显著差异,但用户未指定地区的问题
  • 实体含糊不清——指向多个不同对象的公司名称、产品名称或专有名词

为避免给用户造成不必要的困扰,只应在后续问题会实质性影响研究开展方式时才提出。

如果你确定确实需要提出后续问题,请使用 AskUserQuestion 工具。

2. 为这项研究选择标题并创建目录

首先,为这项研究选择一个标题。它既是存放本次请求研究笔记的文件夹名称,也是用户收到的报告文件名,并会显示为报告标题。因此,请用用户所用的语言,以句式大小写为这项研究拟定一个简短且具体的标题:3 到 6 个词,且少于 50 个字符(请计算字符数,超出任一限制时删减词语),仅使用字母、数字和单个空格。保留用户语言中的重音字母和非拉丁字母(例如 é、ñ、ü、 日本語),不要将它们转换为纯 ASCII;不要使用连字符、下划线、撇号或其他标点。例如,关于《欧盟 AI 法案》对初创企业有何影响的问题,可以使用“EU AI Act startup obligations”。

本次研究的文件夹应放在你在本次对话中较早进行研究时使用的同一目录下;如果这是此处的第一个研究请求,则放在当前工作目录下(不要放在 /tmp 或上传文件夹中)。确定标题之前,请回想本次对话中你已经交付的所有研究报告标题;如果该目录下已存在 research_notes/ 文件夹,请列出其中内容——其中的每个文件夹都存放着 reports/ 中同名报告的笔记,可能来自更早的对话。然后选择适用的情况:

  • 新主题:选择一个全新的标题。
  • 重回、扩展或更新先前的主题:选择一个仍能点明主题且能说明本次请求新增或变更内容的标题(例如“EU AI Act startup penalties”,而不只是“Penalties”);如果没有任何内容可以与先前请求区分,则使用先前标题并在末尾加上递增编号;若超出上述限制,先删减一个词(例如“EU AI Act startup obligations 2”)。记下该主题最近一份先前报告的路径及其笔记文件夹路径:在第 6 步中,你需要将它们提供给报告撰写者,作为后续工作的背景。如果该报告或其笔记文件夹已不在磁盘上,则只提供仍然存在的内容,并调查缺失的内容。
  • 用户要求独立重做先前的研究:按上一种情况选择标题,但不要提供先前的材料。

无论哪种情况,标题都必须不同于本次对话中已交付的所有报告标题,也不同于你看到的所有文件夹名称,以确保本次请求的笔记和报告不会与先前内容混杂或相互覆盖。绝不要重命名、移动或写入先前请求的文件夹。

然后,在该目录中创建 research_notes/{research title}/ 和 reports/ 文件夹。由于标题中包含空格,请在 shell 命令中将这些路径加上引号,并记下该目录的绝对路径——你需要向子代理提供这些文件夹的绝对路径,以便他们将文件存入其中。

3. 拆解用户的问题,以确定子 Agent 的数量

为了有效地启动并分配任务给子 Agent,请判断用户的问题是否可以拆解为相互独立的子主题,以及如何拆解。这些子主题应当彼此互斥且共同穷尽问题范围。然后,针对每个子主题,考虑研究是否需要或能否受益于多个独立视角。

研究人员拆解策略示例
1无法进行有意义的拆解——单一事实性问题“谁赢得了 2024 年超级碗?”
3围绕一个聚焦主题的少数自然角度或视角“温度对鲑鱼迁徙的影响”→(1)生物学机制,(2)观测到的种群数据,(3)气候预测
4不同方面或评估标准“比较适合小型企业的 CRM 平台”→(1)定价模式,(2)功能比较,(3)集成生态系统,(4)用户评价/情绪
5多个相互独立的实体、地区或领域“AI 监管格局”→(1)美国联邦层面,(2)欧盟/GDPR 与 AI Act,(3)中国,(4)英国,(5)行业自律
6+需要系统覆盖的大量可枚举对象“美国各州的电动汽车普及率”→按区域集群分配研究人员

下一步,请为你确定的每个子主题和独立视角启动一个子 Agent。如果不确定,默认分配 3 名研究人员是合理的。如果在步骤 2 中提到需要借鉴先前的研究,则只拆解本次请求新增或需要重新核查的部分;报告撰写者会掌握先前的材料。

4. 并行启动前台研究子 Agent

针对上文确定的每个子主题和独立视角,启动一个前台研究子 Agent。

要启动研究子 Agent,请使用 Agent 工具(某些版本中名为 Task),并设置 subagent_type="general-purpose" 和 run_in_background=false。确保向每个研究子 Agent 提供极其清晰、具体的指示。务必将原始问题的约束条件传达给研究子 Agent(例如时间和地域限制)。在下面的提示词中,将 {path_to_skill} 替换为此技能的根目录(加载此 SKILL.md 的目录),将 {absolute path of your working directory} 替换为你在步骤 2 中记录的路径,并将 {research title} 替换为你在步骤 2 中选择的标题。请严格遵循以下格式:

Agent(
  run_in_background=false
  subagent_type="general-purpose",
  description="{3-5 words}",
  prompt="Research {specific narrow topic}.

Objective: {clear description of what's covered in the desired output}

Key questions:
- {Specific question 1}
- {Specific question 2}

Suggested sources:
- {Types of source to prioritize}

Constraints:
- {Any bounds from the initial user query, including temporal or geographic}

Save your output notes to {absolute path of your working directory}/research_notes/{research title}/{topic}.md

**As a first step, you must read {path_to_skill}/references/researcher.md for instructions on how to conduct research.**"
)

下面是一个清晰、详尽的研究子 Agent 提示词示例:

研究半导体供应链危机及其截至 2026 年的现状。

目标:编写一份内容详实、涵盖各项事实的报告,包括当前状况、正在实施的解决方案和未来展望;尽可能提供具体时间线和量化数据。

关键问题:

  • 当前的瓶颈是什么?
  • 新建晶圆厂预计会带来多少产能提升?
  • 影响供应链的地缘政治因素有哪些?
  • 专家预计何时供需才能恢复平衡?

建议来源:

  • 主要芯片制造商(如 TSMC、Samsung 和 Intel)近期的季度报告,可从投资者关系页面或 SEC EDGAR 数据库获取
  • SEMI、Gartner 和 IDC 的行业报告,提供市场分析和预测
  • 政府应对举措,包括 commerce.gov 上的美国《CHIPS 法案》实施进度、ec.europa.eu 上的欧盟《芯片法案》,以及日本、韩国和台湾通过各自政府门户发布的类似举措

约束条件:

  • 必须反映截至 2026 年的现状,并明确标注此前的问题

将研究笔记保存到 {absolute path of your working directory}/research_notes/Semiconductor supply chain outlook 2026/semiconductor_supply_chain.md

作为第一步,必须阅读 {path_to_skill}/references/researcher.md,了解如何开展研究。

为尽可能快速地开展研究,所有子 Agent 都必须并行启动,也就是说,应在同一轮中完成所有 Agent 工具调用。

5.[仅在绝对必要时]再进行一轮研究

根据研究子 Agent 返回的任务摘要,判断是否存在会导致报告内容不完整的关键缺口。如确有必要,可并行启动研究人员来弥补这些缺口。此步骤会延迟向用户交付报告,导致体验大幅变差,因此必须极其谨慎地使用。

此步骤只能执行一次——研究人员完成后,立即进入步骤 6,无论得到什么结果。如果再启动更多研究,你会遇到超时或速率限制,导致用户无法收到答复。为帮助你记住这一点,在决定启动补充研究时,务必始终输出“这些研究人员完成后,我将直接转入协调报告撰写者的工作”。

6. 启动前台报告撰写子 Agent

研究完成后,启动一个报告撰写子 Agent。使用 Agent 工具(某些版本中称为 Task),设置 subagent_type="general-purpose" 和 run_in_background=false,并按第 4 步填写占位符。对于 {the user's original question},完整写出这份报告需要回答的问题——如果这项请求是对早先研究的延续或补充,就写出经过本次请求修订后的早先问题(例如“How does the EU AI Act affect startups, including penalties?”),而不只是后续消息。对于早先研究所在行,填写你在第 2 步记录的早先报告和笔记文件夹的绝对路径;如果没有需要借鉴的内容,或用户要求独立重做,则写“none”。严格按照以下格式:

Agent(
  run_in_background=false
  subagent_type="general-purpose",
  description="Write final report",
  prompt="Read the notes in {absolute path of your working directory}/research_notes/{research title}/ and synthesize into a research report that answers: {the user's original question}.

Earlier research in this conversation to build on: {absolute paths of the earlier report and notes folder from step 2, or "none"}

Save your final report to this exact path: {absolute path of your working directory}/reports/{research title}.md

**As a first step, you must read {path_to_skill}/references/report-writer.md for instructions on how to write your research report.**"
)
7. 向用户交付报告

报告撰写子 Agent 完成后,向用户提供报告:如果你有向用户发送文件的工具(例如 SendUserFile),就用它发送 reports/{research title}.md;否则,如果你的环境中有用户可见的输出文件夹,就将报告复制到该文件夹,并使用相同的文件名;否则,将报告保留在 reports/{research title}.md。随后阅读最终版报告,并向用户发送简短摘要(目标为 3-5 句话),说明完整报告的位置(已发送给用户、位于输出文件夹中,或其绝对路径)。

评论

支持 Markdown