把"深度调研"当作一个可复用、可并行的生产流程来执行:主控负责澄清目标、拆解子目标、调度子进程、聚合与精修;子进程负责采集/抽取/局部分析并输出结构化 Markdown 素材;最终交付物必须是独立成品文件而不是聊天贴文。
关键约束(必须遵守)
--allowedTools 控制可用工具;仅在必要时启用网络等权限。firecrawl,其次 exa;确实无法满足时再考虑 WebFetch/WebSearch。claude -p 子进程;<3 个子目标时可由主进程直接执行,但仍需记录完整目录结构和原始数据。claude -p 子进程,并为其分配合适权限(通过 --allowedTools 参数)。.research//aggregated_raw.md ),在成品中仅吸收关键洞察/证据。1) 检查是否真的是"分章节、多轮整合"产出;若只是一次性生成,退回按章节重写。
2) 评估是否足够细致;若偏单薄,先判断是"子任务素材不足"还是"统稿时压缩过度":前者驱动补充/追加调研,后者在既有素材上继续扩展润色,直至达到详细标准。
根据子目标数量选择执行路径:
| 规模 | 子目标数 | 执行方式 | 目录要求 |
|---|---|---|---|
| ------ | ---------- | ---------- | ---------- |
| 微型 | 1-2 | 主进程直接执行 | 仍需 raw/、logs/、final_report.md |
| 小型 | 3-5 | 启动子进程,串行或少量并行 | 完整目录结构 |
| 中型 | 6-15 | 并行子进程(默认 8 并发) | 完整目录结构 + 调度脚本 |
| 大型 | >15 | GNU Parallel + 分批调度 | 完整目录结构 + 多阶段调度 |
注意:即使是微型任务,也必须:
raw/ 目录logs/dispatcher.logfirecrawl,其次 exa;若都不可用,记录原因并选择替代方案(必要时再降级到 WebFetch/WebSearch)。name(建议:-<短题>-<随机后缀> ,全小写、短横线分隔、无空格)。.research// ,并把所有产物都保存到该目录下(子目录如 prompts/、logs/、child_outputs/、raw/、cache/、tmp/)。.research//run_children.sh ),要求:claude -p 调用,推荐要点:claude -p "prompt" --allowedTools "Read,Write,Edit,Bash,WebFetch,WebSearch,mcp__firecrawl__*"(以 claude --help 为准)。firecrawl,其次 exa;确实没办法才用 WebFetch/WebSearch;不使用 plan 工具与"人工交互等待"。.research//child_outputs/.md )。```bash
timeout 600 claude -p "$(cat "$prompt_file")" \
--allowedTools "Read,Write,Edit,Bash,Glob,Grep,WebFetch,WebSearch,mcp__firecrawl__firecrawl_scrape,mcp__firecrawl__firecrawl_search" \
--output-format json \
> "$output_file" 2>&1
```
--allowedTools 中追加对应工具名。timeout 300),较大任务可放宽到最多 15 分钟(timeout 900),通过外部 timeout 命令兜底。首次命中 5 分钟超时时,结合任务实际判断是否拆分/改参数再重试;15 分钟仍未完成则视为 prompt 或流程需要排查。xargs/GNU Parallel,但必须先用小规模验证参数展开。默认并行 8 个,可按硬件或配额调整。stdbuf -oL -eL claude -p … 2>&1 | tee .research//logs/.log 等方式保证实时刷新,便于 tail -f 观察进度。firecrawl → exa)→ WebFetch/WebSearch。printf/逐行写入注入变量,避免 Bash 3.2 在多字节字符场景下 cat < 截断变量的已知问题。 .research//child_prompt_template.md )以便审计与复用。cat .research//prompts/.md ),确认变量替换正确、指令完整后再派发任务。tail -f .research//logs/.log 追踪实时输出。.research//aggregate.py )读取 .research//child_outputs/ 下所有 Markdown,按预设顺序聚合为初版主文档(例如 .research//final_report.md )。.research//final_report.md 与关键子输出。.research//polish_outline.md ),明确目标受众、章节顺序与每章核心论点。.research//polished_report.md ),按大纲逐章撰写;每写完一章立刻自查事实、引用与语言要求,必要时回溯子稿核实。.research// );通过提供文件路径与必要摘要向用户回报,禁止在聊天中贴出完整成稿。.research// ,避免覆盖旧文件。.research//raw/ 等缓存目录,后续处理优先读取本地缓存以减少重复请求。.research//tmp/ 、.research//raw/ 、.research//cache/ 等子目录,必要时在流程结束后按需清理。firecrawl,其次 exa;缺少 MCP 时再退回 WebFetch/WebSearch。# 基本非交互调用
claude -p "Your prompt here"
# 指定允许的工具(无需人工确认)
claude -p "Your prompt" --allowedTools "Read,Write,Edit,Bash"
# JSON 格式输出(便于脚本解析)
claude -p "Your prompt" --output-format json
# 流式 JSON 输出
claude -p "Your prompt" --output-format stream-json
# 继续上一次对话
claude -p "Follow up question" --continue
# 继续指定会话
claude -p "Follow up" --resume <session_id>
#!/bin/bash
# 子进程调度示例
prompt_file="$1"
output_file="$2"
log_file="$3"
# 读取 prompt 并执行
timeout 600 claude -p "$(cat "$prompt_file")" \
--allowedTools "Read,Write,Edit,Bash,Glob,Grep,WebFetch,WebSearch,mcp__firecrawl__firecrawl_scrape,mcp__firecrawl__firecrawl_search,mcp__firecrawl__firecrawl_map" \
--output-format json \
2>&1 | tee "$log_file" > "$output_file"
exit_code=${PIPESTATUS[0]}
echo "Exit code: $exit_code" >> "$log_file"
#!/bin/bash
# 并行执行多个子任务
max_parallel=8
research_dir=".research/$name"
# 使用 GNU Parallel(推荐)
cat "$research_dir/tasks.txt" | parallel -j $max_parallel \
"timeout 600 claude -p \"\$(cat $research_dir/prompts/{}.md)\" \
--allowedTools 'Read,Write,Edit,Bash,WebFetch,WebSearch' \
--output-format json > $research_dir/child_outputs/{}.json 2>&1"
# 或使用后台任务
for task_id in $(cat "$research_dir/task_ids.txt"); do
(
timeout 600 claude -p "$(cat "$research_dir/prompts/$task_id.md")" \
--allowedTools "Read,Write,Edit,Bash,WebFetch,WebSearch" \
--output-format json \
> "$research_dir/child_outputs/$task_id.json" 2>&1
) &
# 控制并行数量
while [ $(jobs -r | wc -l) -ge $max_parallel ]; do
sleep 1
done
done
wait # 等待所有后台任务完成
realpath/test -d 等确认关键路径(如 venv、资源目录)存在;必要时用 dirname "$0" 推导仓库根路径并通过参数传入,避免硬编码。.research//dispatcher.log ;子任务单独写 .research//logs/.log ,失败时直接 tail 对应日志定位 MCP/调用细节。failed_ids 列表并在收尾阶段统一提示后续建议。.research//child_outputs/.md 是否已合法存在;存在则跳过,减少配额消耗与重复访问。来源),避免把链接集中到段尾,便于即时查证。先思考再动手:追求有深度、有独立思考、超出预期的洞见(但不要在回答里提到"惊喜");揣摩用户为什么会问这个问题、背后的假设是什么、有没有更本质的问法;同时明确你的答案应满足的成功标准,再围绕标准组织内容。
保持协作:你的目标不是机械执行指令、也不是在信息不足时强行给出确定答案;而是与用户共同推进,逐步逼近更好的问题与更可靠的结论。
写作风格要求:
执行本技能时,在每一步输出清晰的决策与进度日志。
在提交最终报告前,必须核对以下清单:
.research// 目录已创建logs/dispatcher.log 包含完整执行记录(非事后补写)raw/ 目录包含原始搜索/抓取结果prompts/、child_outputs/ 目录存在且有内容claude -p 子进程如有以下情况,应在报告中明确说明:
共 1 个版本