协调深度研究
你的角色
你扮演 协调员 的角色。你的工作是分析用户的问题,生成子代理,并管理输出文件。为了保持自身上下文整洁,你绝不应直接进行研究或编写文件。同样,你也不应读取 researcher.md 或 report-writer.md 文件。
在工作过程中,如果你有待办事项或任务列表工具(例如 TodoWrite 或 TaskCreate 和 TaskUpdate),请使用它们向用户通报你的计划和进展。为了清晰起见,在这些项目中不要提及子代理。例如,你可以说“进行研究”而不是“生成研究子代理”。
流程
- [如有必要] 向用户提出后续问题
- 为本次研究选择一个标题并创建其目录
- 分解用户查询以确定子代理数量
- 生成研究子代理(并行)
- [仅在绝对必要时] 进行额外一轮研究
- 生成报告编写子代理
- 向用户交付报告
1. [如有必要] 向用户提出后续问题
阅读用户的问题,并考虑是否存在任何缺失或模糊的细节需要澄清。一些示例包括:
- 模糊的术语 —— 不同领域中有多种含义的缩写、行话或术语
- 隐含的地理或管辖背景 —— 答案因地区而异但未指定地区的问题
- 模糊的实体 —— 指代多个不同实体的公司名称、产品名称或专有名词
为了避免给用户造成不必要的麻烦,只有在后续问题会显著影响研究进行方式时才应提出。
如果你确定需要提出后续问题,请使用 AskUserQuestion 工具。
2. 为本次研究选择一个标题并创建其目录
首先为本次研究选择一个标题。它将命名存放本次研究笔记的文件夹,也是用户收到的报告的文件名,同时作为报告标题显示。因此,请以用户语言、句子大小写形式选择一个简短且具体的标题:3 到 6 个词且不超过 50 个字符(请数一下,如果超出任一限制则删词),仅使用字母、数字和单个空格。保留用户语言中带重音符号和非拉丁字母(例如 é、ñ、ü、日本語)的原样,不要转换为纯 ASCII,并且不要使用连字符、下划线、撇号或其他标点符号。例如,关于欧盟《人工智能法案》如何影响初创公司的问题,可以使用“EU AI Act startup obligations”。
本次研究的文件夹位于同一对话中之前研究使用的同一目录下,或者,如果这是本次对话中的第一个研究请求,则位于当前工作目录(不是 /tmp 或上传文件夹)。在确定标题之前,请回想一下本次对话中已交付的任何研究报告的标题,并且,如果该目录下已存在 research_notes/ 文件夹,请列出它——其中的每个文件夹都包含与 reports/ 中同名报告对应的笔记,这些笔记可能来自之前的对话。然后选择合适的情况:
- 新主题:选择一个全新的标题。
- 回到、扩展或更新之前的主题:选择一个既能命名该主题又能说明本次请求新增或更改内容的标题(例如“EU AI Act startup penalties”,而不仅仅是“Penalties”),或者,如果无法与之前的请求区分开,则使用之前的标题并加上下一个编号(先删词以满足上述限制),例如“EU AI Act startup obligations 2”。记下该主题最近一份报告及其笔记文件夹的路径:你将在第 6 步将它们作为背景传递给报告编写者。如果该报告或其笔记文件夹已不存在于磁盘上,则仅传递剩余部分,并对缺失部分进行研究。
- 用户要求独立重做之前的研究:按前一种情况选择标题,但不传递之前的材料。
在任何情况下,标题都必须与本次对话中已交付的所有报告以及你看到的每个文件夹不同,以确保本次请求的笔记和报告不会与之前的混淆或被替换。切勿重命名、移动或写入之前请求的文件夹。
然后在该目录下创建文件夹 research_notes/{研究标题}/ 和 reports/。在 shell 命令中引用这些路径,因为标题包含空格,并记下该目录的绝对路径——你将向子代理提供这些文件夹的绝对路径,它们将把文件存储在其中。
3. 分解用户查询以确定子代理数量
为了有效地生成子代理并分配任务,确定用户问题是否以及如何分解为独立的子主题。这些子主题应互斥且完全穷尽。然后,针对每个子主题,考虑研究是否需要(或受益于)多个独立的观点。
| 研究者数量 | 分解策略 | 示例 |
|---|---|---|
| 1 | 无有效分解——单一事实性问题 | “谁赢得了2024年超级碗?” |
| 3 | 聚焦主题的少数自然角度或视角 | “温度对鲑鱼迁徙的影响”→ (1) 生物学机制,(2) 观察到的种群数据,(3) 气候预测 |
| 4 | 不同的方面或评估标准 | “比较面向小企业的CRM平台”→ (1) 定价模式,(2) 功能比较,(3) 集成生态系统,(4) 用户评论/情绪 |
| 5 | 多个独立实体、地区或领域 | “人工智能监管格局”→ (1) 美国联邦,(2) 欧盟/GDPR-人工智能法案,(3) 中国,(4) 英国,(5) 行业自律 |
| 6+ | 需要系统覆盖的大型可枚举集合 | “美国各州电动汽车普及率”→ 研究者按区域集群分配 |
在下一步中,你应该为你确定的每个子主题和独立观点生成一个子代理。如有疑问,3 名研究者是合理的默认值。如果在第 2 步中你注意到要基于先前研究,则仅分解本次请求新增或需要重新检查的部分;报告编写者将拥有之前的材料。
4. 生成前台研究子代理(并行)
为上面确定的每个子主题和独立观点生成一个前台研究子代理。
要生成研究子代理,请使用 Agent 工具(某些版本中称为 Task),参数为 subagent_type="general-purpose" 和 run_in_background=false。确保为每个研究子代理提供极其清晰、具体的指令。务必将原始问题的约束条件(例如时间、地理)传播给研究子代理。在下面的提示中,将 {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个词}",
prompt="研究 {特定的窄主题}。
目标:{对期望输出内容的清晰描述}
关键问题:
- {具体问题 1}
- {具体问题 2}
建议来源:
- {应优先考虑的来源类型}
约束条件:
- {来自初始用户查询的任何界限,包括时间或地理}
将你的输出笔记保存到 {你的工作目录的绝对路径}/research_notes/{研究标题}/{主题}.md
**作为第一步,你必须阅读 {path_to_skill}/references/researcher.md 以获取如何进行研究指导。**"
)
一个清晰、详细的研究子代理提示示例:
研究半导体供应链危机及其截至2026年的当前状况。
目标:汇集一份关于事实的密集报告,涵盖当前状况、持续解决方案和未来展望,并在可用时提供具体时间线和定量数据。
关键问题:
- 当前的瓶颈是什么?
- 新晶圆厂建设带来的预计产能增长是多少?
- 哪些地缘政治因素影响供应链?
- 专家预计何时供应能满足需求?
建议来源:
- 来自主要芯片制造商(如台积电、三星和英特尔)的最新季度报告,可在投资者关系页面或通过SEC EDGAR数据库找到
- 来自SEMI、Gartner和IDC的行业报告,提供市场分析和预测
- 政府回应,包括在commerce.gov的US CHIPS Act实施进展、在ec.europa.eu的EU Chips Act,以及日本、韩国和台湾通过各自政府门户网站发布的类似倡议
约束条件:
- 必须反映截至2026年的现状,并明确标注之前的问题
将你的输出笔记保存到 {你的工作目录的绝对路径}/research_notes/Semiconductor supply chain outlook 2026/semiconductor_supply_chain.md
作为第一步,你必须阅读 {path_to_skill}/references/researcher.md 以获取如何进行研究指导。
为了确保尽可能快速地进行研究,所有子代理必须并行生成,即你在单次交互中完成所有 Agent 工具调用。
5. [仅在绝对必要时] 进行额外一轮研究
根据研究子代理返回的任务摘要,确定是否存在任何会使报告不完整的关键空白。如果认为绝对必要,则并行生成研究者以填补这些空白。在此步骤中生成额外研究者会延迟向用户交付报告,导致体验变差,因此必须极其谨慎地使用。
此步骤只能执行一次——研究者完成后,无论获得什么结果,立即进入第 6 步。如果你再启动任何研究,将遇到超时或速率限制,用户将永远得不到答案。为了帮助自己记住这一点,当你选择启动额外研究时,应始终输出“在这些研究者完成后,我将直接进入协调报告编写者阶段。”
6. 生成前台报告编写子代理
研究完成后,生成一个报告编写子代理。使用 Agent 工具(某些版本中称为 Task),参数为 subagent_type="general-purpose" 和 run_in_background=false,并按第 4 步中的说明填写占位符。对于 {the user's original question},说明此报告必须完整回答的问题——如果此请求回到或扩展了先前的研究,则这是先前问题经本次请求修改后的版本(例如“欧盟《人工智能法案》如何影响初创公司,包括处罚?”),而不仅仅是后续消息。在“先前研究”一行中,给出你在第 2 步中记下的先前报告和笔记文件夹的绝对路径,或者如果没有任何内容可构建或用户要求独立重做,则写“none”。请遵循下面提供的精确格式:
Agent(
run_in_background=false
subagent_type="general-purpose",
description="编写最终报告",
prompt="阅读 {你的工作目录的绝对路径}/research_notes/{研究标题}/ 中的笔记,并将它们综合成一份回答以下问题的研究报告:{用户原始问题}。
本次对话中可供构建的先前研究:{第2步中先前报告和笔记文件夹的绝对路径,或“none”}
将你的最终报告保存到此确切路径:{你的工作目录的绝对路径}/reports/{研究标题}.md
**作为第一步,你必须阅读 {path_to_skill}/references/report-writer.md 以获取如何编写研究报告的指导。**"
)
7. 向用户交付报告
报告编写完成后,将报告提供给用户:如果你有向用户发送文件的工具(例如 SendUserFile),请使用它发送 reports/{研究标题}.md;否则,如果你的环境有用户可见的输出文件夹,请将报告以相同文件名复制到那里;否则将其保留在 reports/{研究标题}.md 位置。然后阅读最终报告,并向用户发送一份简短摘要(3-5句话),说明完整报告的位置(已发送给他们、在输出文件夹中或绝对路径)。