Claw Deep Research — 自动迭代深度研究。Turn your AI agent into a real research assistant with multi-phase iterative search, contradiction mining, cross-verification,...
---
name: claw-deep-research
description: "Claw Deep Research — 自动迭代深度研究。Turn your AI agent into a real research assistant with multi-phase iterative search, contradiction mining, cross-verification, and structured reports. Zero extra API keys. 触发词:/deep、深度研究、深挖。"
metadata:
{
openclaw: {
emoji: "🔬",
os: ["darwin", "linux", "win32"],
tags: ["research", "deep-research", "analysis", "report", "search"],
categories: ["research", "productivity"],
},
}
---
# Open Deep Research
> 拒绝表面文章。用迭代搜索 + 递归深挖,像人类研究者一样层层深入,产出真正有深度的分析报告。
## 这是什么
一个给 AI Agent 用的**深度研究工作流**。
灵感源自 [dzhng/deep-research](https://github.com/dzhng/deep-research)(17.8k ⭐)的广度×深度算法,并结合了 [MiroMind/MiroThinker](https://dr.miromind.ai)(GAIA 80.8%/BrowseComp 88.2 的 SOTA 深度研究模型)的架构思路——**多轮多阶段迭代 + 交叉验证 + 矛盾驱动深挖**。
与纯算法驱动的研究模型不同,本 Skill:
- **不需要额外的 API Key** — 复用 OpenClaw 已有的 `web_search` + `web_fetch`
- **不需要额外部署** — 一份 SKILL.md,放到 skills 目录就能用
- **模型无关** — 你用什么 LLM 就跑什么模型,当前对话的模型就是引擎
## 前置条件
任何正常运行且配置了 `web_search` 提供商的 OpenClaw 实例:
- `web_search` — 已配置(MiniMax / Tavily / Brave / Perplexity / Google 均可)
- `web_fetch` — 可用(默认开启)
- 以上,没有其他依赖。
**不挑搜索提供商,不挑 LLM,不挑操作系统。**
---
## 核心算法:多阶段迭代研究
**核心思想:不是"搜几次"的问题,而是"搜完之后怎么用"的问题。**
MiroMind 的研究模型(MiroThinker-1.7,235B 参数)有三大核心特征:
1. **交互式扩展** — 把"工具交互深度"作为独立于模型规模和上下文长度的第三维度
2. **步进可验证推理** — 每一步生成的中间结果都经过验证,确认后再进入下一步
3. **长链工具调用** — 单次任务支持最多 **300-400 次**工具调用
我们虽然不能匹配模型级别的优化,但可以通过**结构化的工作流**来逼近同样的效果。
### 五阶段流水线
```
阶段1: 全景扫描 ──→ 阶段2: 矛盾识别 ──→ 阶段3: 定向深挖 ──→ 阶段4: 交叉验证 ──→ 阶段5: 综合报告
(3-5条宽搜索) (找矛盾/盲区) (6-10条精准搜索) (验证关键数据) (完整报告)
```
不同于传统的 breadth×depth 树形递归,这是**流水线式多轮迭代**——每轮结束后暂停、反思、规划下一轮,而非机械地递归。
---
## 执行模式
提供两种执行模式,根据环境和用户偏好选择:
### 模式 A:内联执行(默认,首次使用建议)
在当前会话中逐步执行各阶段,用户实时看到进展。
- **优点**:透明,可随时打断追问
- **缺点**:会话时间长,深度研究时可能被其他消息中断
- **适用场景**:话题明确、范围中等、首次体验 skill
### 模式 B:子 Agent 执行(推荐,有并发模型能力时)
使用 `sessions_spawn` 创建专用的研究子 Agent,让研究在后台异步执行。
**什么时候用:**
- 当前 OpenClaw 实例有可用的子 Agent 并发能力
- 研究深度为「深入」或「极致」(即预计研究时间较长)
- 用户没有要求实时查看进展
**执行流程:**
```
当前会话 子 Agent(后台研究)
│ │
├─ sessions_spawn ───────→ │
│ 任务:完整研究流程 │
│ 上下文:研究计划 │
│ 标签:deep-research-xxx │
│ ├─ 阶段1:全景扫描
│ ├─ 阶段2:矛盾识别
│ ├─ 阶段3:定向深挖
│ ├─ 阶段4:交叉验证
│ ├─ 阶段5:综合报告
│ │
│ 子 Agent 自动返回结果 │
│←─────────────────────────┤
│ 收到报告,呈现给用户 │
│ │
```
**子 Agent 的任务指令模板:**
```markdown
## 深度研究任务
研究主题:[用户问题]
研究深度:[深入/极致]
请严格按照 `claw-deep-research` 工作流执行:
1. 阶段1:全景扫描 — 先做3-5条宽搜索
2. 阶段2:矛盾识别 — 找矛盾点和盲区
3. 阶段3:定向深挖 — 针对矛盾精准搜索
4. 阶段4:交叉验证 — 关键数据多源验证
5. 阶段5:输出结构化报告
注意每轮搜索后必须暂停反思,不要机械重复。
完成后将完整报告返回。
```
**子 Agent 执行的关键规则:**
1. `sessions_spawn` 时 `context` 设为 `"isolated"`(独立上下文,不继承父会话的对话历史)
2. 给子 Agent 设置 `label` 为 `deep-research-<话题英文缩写>`,方便后续追踪
3. 子 Agent 的任务描述要把本 SKILL.md 的工作流完整传过去(或引用 skill 名称,由子 Agent 自己加载)
4. 子 Agent 完成任务后会自动返回结果到父会话
5. 用户可通过 `subagents list` 查看研究进度
**优点:**
- 当前会话不阻塞,用户可以继续做其他事
- 长时间的研究不会被其他消息打断
- 可以同时运行多个研究任务
---
## 执行模式选择逻辑
```
if 用户明确要求「先看结果」或「后台研究」:
按用户要求选择
elif 子 Agent 并发可用 AND 研究深度 >= "深入":
自动选择 模式B(子 Agent 执行)
通知用户:「🔬 研究将在后台进行,完成后通知你」
else:
选择 模式A(内联执行)
```
---
## 完整工作流
### 阶段 0:解析输入
用户触发后,提取:
- **主题** — 研究的核心对象
- **范围** — 关注的维度(技术/商业/政策/历史/竞品/学术……)
- **格式偏好** — 报告/对比/时间线/列表/问答……(默认结构化报告)
- **研究深度** — 标准/深入/极致(影响轮次数量,默认"深入")
| 深度级别 | 总搜索次数 | 说明 |
|----------|-----------|------|
| 标准 | ~5-8 次 | 1-2 轮,适合话题范围明确 |
| 深入 | ~12-20 次 | 3 轮(全景→深挖→验证),默认 |
| 极致 | ~25-40 次 | 4-5 轮,适合复杂跨界主题 |
**输出:** 研究计划(大纲 + 深度级别)
### 阶段 1:全景扫描
目标:快速覆盖话题的各个维度,建立全局认知地图。
1. 根据主题生成 **3-5 条独立搜索方向**,覆盖不同维度
2. 每条调用 `web_search(query, count=5)`
3. 对有价值的结果条目用 `web_fetch(url)` 获取详细信息
4. 从所有结果中提炼:
**认知卡片(Research Cards)** — 每条卡片包含:
```
- 方向:[命题/维度名称]
- 发现:关键信息(含具体实体、数字、日期)
- 来源:URL
- 置信度:高/中/低(数据质量评估)
- 矛盾点/异常:与该方向内其他发现不一致的地方
```
5. 同时记录**未覆盖维度**和**初步矛盾**
6. **外化研究状态** — 为防止长流程中上下文滚动丢失信息,将研究状态写为临时文件:
- 路径:`~/.openclaw/workspace/.deep-research-cache/[topic-hash]-learnings.json`
- 内容:全部认知卡片(JSON 数组)
- 每完成一轮搜索后更新该文件
- 下一轮开始时优先从文件恢复已有认知,避免重复搜索
- 研究完成后清理缓存文件
### 阶段 2:矛盾识别与分析
这是区别于普通"搜索+总结"的关键步骤。
在完成全景扫描后,**不要立刻继续搜索**。先对已有材料做三件事:
**① 找矛盾(Contradiction Mining)**
- 同一话题的不同来源给出了不同结论?
- 数据和宣传不一致?
- 时间线上的变化?
**② 找盲区(Gap Detection)**
- 哪些维度完全没有覆盖到?
- 哪些数据只有单一来源?
- 哪些环节逻辑链不完整?
**③ 定优先级(Priority Ranking)**
- 哪些矛盾/盲区对理解话题最重要?
- 哪些方向可能只需要一次搜索就能澄清?
- 哪些方向需要多轮深挖?
**输出:** 一张清晰的"剩余问题清单",每条标注优先级
### 阶段 3:定向深挖
基于阶段 2 的剩余问题清单,精准打击。
**特点与阶段 1 不同:**
- 搜索方向更窄、更具体(不再是大维度,而是具体问题)
- 搜索词更精准(包含矛盾的关键词、实体名、排除词)
- 对低置信度的认知做针对性求证
- 每条搜索后有明晰的判断:是解决了问题?还是发现了新的矛盾?
**为什么比简单的"递归减半"更好?**
原版算法:breadth/2, depth-1,机械地降低宽度进入子层。
改进后:不按固定比例减半,而是根据实际发现的矛盾点数量和质量决定下一轮搜索数量和方向。
### 阶段 4:交叉验证
在报告初稿之前,对关键数据进行来源交叉验证。
验证规则:
- **关键数据/数字**:至少两个独立来源支持(不同媒体、不同立场)
- **趋势判断**:需要时序数据支撑(不仅说"增长",还要说"从X到Y")
- **争议性结论**:需要正反双方的观点
- **单一来源的认知**:标记为"待确认",在报告中注明局限性
验证工具:
- `web_search(query, count=3)` 带上原文关键词+补充关键词搜索
- 如果多个来源一致 → 提升置信度
- 如果来源矛盾 → 记录为争议点,报告中呈现双方观点
- 如果找不到第二个来源 → 报告中标注"仅单一来源"
### 阶段 5:生成报告
基于全部认知卡片,生成结构化报告:
```markdown
# [主题] — 深度研究报告
## 摘要
300-500 字综述,涵盖所有关键发现和结论
## 研究范围与方法
- 搜索轮次、搜索量、覆盖维度说明
- 置信度说明(哪些数据经过交叉验证,哪些仅单一来源)
## 核心发现
### 子主题一(置信度:高)
发现 + 数据 + 分析 + 来源标注
### 子主题二(置信度:中)
发现 + 数据 + 分析 + 来源标注
...
## 矛盾与争议
呈现研究过程中发现的数据矛盾或观点分歧
## 综合洞察
跨维度的趋势判断、矛盾点分析、独特见解
## 局限性
- 研究范围的限制
- 未充分覆盖的维度
- 不确定性较高的结论
## 来源
- [标题](url)
- [标题](url)
...
```
**报告产出格式:** Markdown
---
## 研究记忆
如果用户对**同一个话题**再次发起深度研究,自动检查上次的研究成果:
1. 使用 `memory_search` 搜索当前话题相关的历史记录
2. 如果找到之前同一话题的研究报告,在开始时提示用户:
「📂 发现该话题的历史研究报告([日期]),需要在此基础上继续深挖,还是重新开始?」
3. 如果用户选择继续深挖,把上次的研究认知卡片作为阶段1的输入起点
4. 标记新增和更新的发现,最终报告中标注「本次新增 vs 上次已有」
---
## 自适应参数
不再使用固定的 breadth 和 depth 数值,而是根据话题特征动态调整:
| 话题特征 | 阶段1扫描 | 阶段3深挖 | 总搜索量 |
|----------|-----------|-----------|---------|
| 窄话题:如「某公司季度营收」 | 3条(覆盖业绩/对比/原因) | 3-5条(验证关键数字) | ~8次 |
| 中等话题:如「新能源汽车竞争」 | 4条(技术/市场/政策/玩家) | 6-8条(深挖矛盾/争议) | ~15次 |
| 宽话题:如「Token出海生态」 | 5条(多维度覆盖) | 8-12条(多个矛盾点深挖) | ~20次 |
| 学术/争议性话题 | 4条(不同立场) | 10-15条(多角度验证) | ~20次 |
---
## 交互反馈
根据执行模式,呈现方式不同:
### 模式A(内联执行)— 实时进展
1. **起步** → 「🔬 开始深度研究:[主题],覆盖 5 个维度,预计搜索 15-20 次」
2. **阶段1完成** → 「📊 全景扫描完成,获取 N 条认知,发现 M 处矛盾/盲区」
3. **阶段2完成** → 「🎯 矛盾分析完成,锁定 P 个关键问题需深挖」
4. **阶段3完成** → 「⛏ 定向深挖完成,补充获取 Q 条新认知」
5. **阶段4完成** → 「✅ 交叉验证完成,R 个关键数据已验证,S 个标记为单一来源」
6. **完成** → 交付报告(见下方「交付规则」)
### 模式B(子Agent执行)— 一次性交付
1. **启动** → 「🔬 已启动后台深度研究:[主题],预计研究时间 3-5 分钟,完成后自动通知你」
2. **完成** → 子 Agent 返回完整报告
3. **交付** → 按下方「交付规则」处理
4. 用户可通过 `subagents list` 查看活跃的研究任务
---
## 交付规则
**总原则:聊天窗口只给摘要,完整报告存到文件。**
对话场景(尤其是微信、Telegram 等 IM 渠道)的长文本阅读体验差,因此无论哪种执行模式,报告交付方式统一如下:
### 第一步:发送简短摘要
在聊天窗口中仅发送:
```
🔬 [主题] — 深度研究报告
📊 覆盖 N 个维度,搜索 M 次,获取 X 条认知
核心发现:
• 要点一
• 要点二
• 要点三
关键结论:一句话总结
📁 完整报告已保存至:[文件路径]
```
摘要要点:
- 研究覆盖范围(几个维度、几次搜索)
- 3-5 个最重要的发现
- 一个关键结论
- 文件保存位置
- 不超过 15 行(适配手机屏幕)
### 第二步:保存完整报告
完整报告写入本地文件。
**保存规则(含降级):**
1. 优先保存到用户桌面。Agent 自动根据运行平台选择正确路径:
- macOS / Linux → `~/Desktop/`
- Windows → `%USERPROFILE%\Desktop`
2. 如果桌面路径不可写(权限不足/不存在)→ 降级到 `~/.openclaw/workspace/`
3. 如果工作区也不可写 → 降级到系统临时目录 `/tmp/`
4. 如果全都不可写 → 报告摘要中直接附上完整报告内容
- 如果用户此前指定过路径,用上次的路径
- 文件名不超过 50 字符,去除特殊符号
### 第三步:主动告知位置
摘要末尾标注文件路径,用户知道去哪打开。
### 特殊场景
- 渠道字符限制极短(如短信)→ 仅发「🔬 [主题] 研究完成,报告已存桌面」
- 无法写文件(如云端 sandbox)→ 摘要中附带完整报告
---
## 触发规则
### 显式触发
- ` /deep <topic>`
- ` /deep research <topic>`
### 隐式触发
- 「帮我深度研究一下 X」
- 「深度调研 X」
- 「深挖一下 X」
- 「出一份关于 X 的研究报告」
- 「做个关于 X 的深度分析」
### 不触发场景
- 随手查事实:「帮我查一下 X」
- 简单问答:「X 是什么」
- 单次搜索请求:「搜一下 X」
---
## 无障碍适配
- 中文用户 → 中文搜索词、中文报告
- 英文用户 → 英文搜索词、英文报告
- 混合输入 → 按用户输入语言自动适配
---
## 常见反模式
| ❌ 反模式 | ✅ 正确做法 |
|----------|------------|
| 一次性搜很多方向但不反思 | 每轮结束必须做矛盾/盲区分析 |
| 忽略矛盾数据 | 矛盾是最有价值的研究方向 |
| 报告只列点没有分析 | 每个子主题必须有「洞察」段落 |
| 不验证关键数据 | 核心数字至少两个来源交叉验证 |
| 隐瞒不确定性 | 在报告中明确标注置信度 |
| 机械递归 breadth/2 | 根据实际发现的矛盾数量决定下一轮搜索量 |
| 遇到失败直接停掉整个流程 | 跳过失败分支,其他分支继续执行 |
| 觉得搜够了就开始写报告 | 完成所有阶段后再动笔 |
---
## 研究质量检查清单
最终交付前自检:
- [ ] 每个维度是否有至少两个独立来源?
- [ ] 关键数字是否标注了来源?
- [ ] 矛盾/争议是否在报告中呈现?
- [ ] 不确定性是否已标注置信度?
- [ ] 研究范围和方法是否有说明?
- [ ] 是否有"综合洞察"而非简单罗列?
- [ ] 无明显的事实性错误
- [ ] 来源列表完整可追溯
don't have the plugin yet? install it then click "run inline in claude" again.