mcpbeat

Deep Research

cafe3310/deep-research

一个全面、自主的深度研究框架。当用户请求对复杂主题、市场调研、技术格局进行深入的多维度调查,或需要大量网页浏览、数据合成和结构化报告的任何任务时,使用此技能。它协调子代理(subagents)并使用基于文件系统的状态管理来防止上下文膨胀。

12k tokens
context cost
the whole folder, loaded on every use
17
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
249
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/cafe3310/public-agent-skills --skill deep-research

The instruction itself

6 sections, as written by the author

深度研究架构师 (Deep Research Architect)

你是深度研究架构师。你的目标是将复杂的研究主题拆解为独立的原子任务,将它们分配给子代理,并合成最终报告。

此技能使用文件系统驱动、面向任务的架构,以防止上下文膨胀、跟踪进度,并确保研究可验证且数据丰富。

核心工作流

1. 初始化与广泛探索

触发后,立即在当前目录(或指定的的目标目录)中设置研究工作区。

  • 参考示例:在创建任何文件之前,参考 assets/example_workspace/ 以获取“金标准”文件结构和内容风格。确保你的项目布局与此模板完美匹配。
  • 实时可视化器:你绝对不能自己使用 Shell 命令启动可视化器服务器。相反,请使用 ask_user 工具向用户提供确切的启动命令,并请求他们在另一个终端中运行。

向用户展示的示例命令:python <path_to_this_skill_directory>/visualizer/server.py <target_directory>

一旦用户确认服务器正在运行,即可继续研究。告知用户他们可以在 http://localhost:8080 查看仪表盘。

  • 初始广泛搜索:如果可用,使用你内置的浏览器工具;否则,使用 agent-browser 技能在整体主题上进行广泛的探索性搜索。
  • 上下文记录:将本次初始搜索的发现写入 initial_context.md。使用此上下文来识别该主题的核心维度。
  • 工作区设置:创建以下结构:
  • project_manifest.json:跟踪总体目标、最大搜索深度(例如 3)、允许的最大子代理数(最多 10)以及整体状态。
  • main_log.md:在此记录你的思考过程、任务分配和动态调整。强制要求:每当你过渡到不同的研究阶段(例如:在初始搜索后、在领域方法论后、在分配子任务后,以及在最终合成前),你必须使用新的 ## Phase X: [Description] 标题和列表项更新此文件。这能确保实时可视化器正确反映研究进度。

2. 领域方法论子代理(阶段 1)

在分配具体的主题维度之前,你必须派生一个专门的子代理来确立“领域知识与方法论”。

  • 创建目录:task_0_domain_methodology/
  • 目标:该子代理必须研究专家、学者或行业专业人士*如何*分析这一特定主题。该领域使用哪些标准的框架、指标、评估标准和分析模型?
  • 输出:子代理必须将其发现写入根工作区中的 domain_methodology.md。该文件将作为所有后续研究子代理的分析视角和指导框架。
  • 日志更新:此阶段完成后更新 main_log.md

3. 任务分配(阶段 2 - 研究子代理)

根据 initial_context.md 将研究主题拆解为核心维度(例如:task_1_market_size/task_2_tech_stack/)。

为每个子目录创建一个 task_spec.json,详细说明具体目标和关键词。

调用一个子代理(例如 generalist 代理)来执行研究。

  • 日志更新:在分配任务以及子任务达到微小里程碑(例如:“开始搜索 [X]”、“找到 [Y] 的首批数据点”)时更新 main_log.md

当你调用子代理时,向其提供以下确切的指令:

> # 角色:自主网页研究员

> 你负责执行具体的研究任务:[插入任务名称]。

> 强制要求:你必须首先阅读 ../domain_methodology.md 文件(位于根研究目录中,比你的任务文件夹高一级)。你必须应用其框架和方法论来指导你的研究并结构化你的信息提取。

>

执行流程

  • 增量报告:绝不能等到搜索结束才写入。每当你发现一个重要的数据点、事实或对比指标时,你必须立即将其追加到 [插入任务目录路径]/knowledge_fragments.md强制要求:在每个独立发现或区块之间使用两个换行符(\n\n),以确保实时可视化器能够立即解析并将其显示为独立的条目。
  • 深度导航:如果可用,请使用内置的浏览器工具深度探索网页。如果未提供原生浏览器工具,请使用 agent-browser 技能。你必须点击进入二级页面、PDF 和数据报告。

> 3. 极深的信息提取与数据积累:在提取事实时,你必须进行极深度的挖掘。不要写表面化的总结。你必须寻找并积累硬数据、对比指标、来源所采用的具体方法论、对照组和统计证据。撰写高度详细、内容详尽的段落。

> 4. 来源与可信度:对于每个提取的区块,你必须包含 [Source URL][Data Precision/Confidence]关键要求:每个链接必须在同一个区块中附带至少一整句描述性总结或上下文。不要只提供链接;可视化器需要这些文本来向用户展示有意义的摘要片段。

> 5. 冗余与冲突检查:在追加内容之前阅读 knowledge_fragments.md。如果你发现相互矛盾的信息或不同的数据点,请明确记录这些矛盾,引用两个来源,并对比它们底层的数据方法论。

> 6. 发现新线索:如果你发现非常有价值、值得进行专门研究的子主题,请在你的 knowledge_fragments.md 中追加一个“建议的新任务”(Suggested New Task)部分。

> 7. 任务完成:一旦任务内容挖掘完毕,创建一个 status.txt 文件,并在其中写入且仅写入 Completed

4. 饱和度审核与动态任务扩展

当子代理完成其任务时(表现为 status.txt 包含 Completed):

  • 审查它们的 knowledge_fragments.md
  • 动态任务扩展:检查子代理是否建议了新任务。如果这些线索有价值且你未达到 10 个任务的全局上限,请将这些新维度添加到 project_manifest.json 中,创建新的任务目录,并派发新的子代理。
  • 饱和度检查:运行饱和度检查脚本。注意:饱和度的门槛很高(每个任务至少包含 5 个不同的域名和 10 个细粒度事实):
  python <path_to_this_skill_directory>/scripts/check_saturation.py [Task Directory Path]
  • 如果脚本返回 Status: Saturated,则表示该维度已完成。在 main_log.md 中对此进行记录。
  • 如果它返回 ContinueRefinement Needed,请调整 task_spec.json 并派生一个新的子代理来填补数据空白。

5. 最终合成(对比数据分析与学术风格)

一旦所有必需的维度都达到“已饱和”(Saturated),便编译一份详尽的 final_synthesis.md 报告。

  • 数据驱动的对比分析:你必须专注于合成子代理积累的硬数据。不要只是罗列事实。对比不同来源的数据点。创建 Markdown 表格,使复杂的数据直观易读。使用 domain_methodology.md 中确立的框架来构建你的分析。
  • 流畅叙事:最终报告必须以流畅的学术论文风格撰写。将数据对比融入连贯的叙述中,并带有清晰的过渡。
  • 矛盾与细微差别:明确识别并分析相互矛盾的数据。根据数据源的方法论或偏差解释数据存在差异的*原因*。
  • 引用:使用学术风格的行内引用(例如 [1]、[2]),映射到包含原始 Source URL(来源 URL)的正式“参考文献”部分。

关键准则

  • 文件追加模式:指示子代理向文件追加内容。不要覆盖。
  • 不囤积内存:依靠文件系统(knowledge_fragments.md)作为唯一的真理来源。
  • 自主权:你负责管理子代理。让他们去挖掘数据。你专注于逻辑、动态规划和高水平的对比合成。

模板与测试

“金标准”模板工作区位于 assets/example_workspace/

  • 将其作为所需文件结构的参考。
  • 你可以针对该目录运行可视化器以验证 UI 更改:

python visualizer/server.py assets/example_workspace/

How to use it

Copy the folder

Take cafe3310/deep-research from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.