Claw Deep Research

Other

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、深度研究、深挖。

Install

openclaw skills install claw-deep-research

Open Deep Research

拒绝表面文章。用迭代搜索 + 递归深挖,像人类研究者一样层层深入,产出真正有深度的分析报告。

这是什么

一个给 AI Agent 用的深度研究工作流

灵感源自 dzhng/deep-research(17.8k ⭐)的广度×深度算法,并结合了 MiroMind/MiroThinker(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 的任务指令模板:

## 深度研究任务

研究主题:[用户问题]
研究深度:[深入/极致]

请严格按照 `claw-deep-research` 工作流执行:
1. 阶段1:全景扫描 — 先做3-5条宽搜索
2. 阶段2:矛盾识别 — 找矛盾点和盲区
3. 阶段3:定向深挖 — 针对矛盾精准搜索
4. 阶段4:交叉验证 — 关键数据多源验证
5. 阶段5:输出结构化报告

注意每轮搜索后必须暂停反思,不要机械重复。
完成后将完整报告返回。

子 Agent 执行的关键规则:

  1. sessions_spawncontext 设为 "isolated"(独立上下文,不继承父会话的对话历史)
  2. 给子 Agent 设置 labeldeep-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
- 置信度:高/中/低(数据质量评估)
- 矛盾点/异常:与该方向内其他发现不一致的地方
  1. 同时记录未覆盖维度初步矛盾

  2. 外化研究状态 — 为防止长流程中上下文滚动丢失信息,将研究状态写为临时文件:

    • 路径:~/.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:生成报告

基于全部认知卡片,生成结构化报告:

# [主题] — 深度研究报告

## 摘要
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根据实际发现的矛盾数量决定下一轮搜索量
遇到失败直接停掉整个流程跳过失败分支,其他分支继续执行
觉得搜够了就开始写报告完成所有阶段后再动笔

研究质量检查清单

最终交付前自检:

  • 每个维度是否有至少两个独立来源?
  • 关键数字是否标注了来源?
  • 矛盾/争议是否在报告中呈现?
  • 不确定性是否已标注置信度?
  • 研究范围和方法是否有说明?
  • 是否有"综合洞察"而非简单罗列?
  • 无明显的事实性错误
  • 来源列表完整可追溯