DeerFlow 2.0 · 从入门到精通 目录

§14 生成与报告能力

DeerFlow 不只是「聊天 + 搜网页」。它自带一类生成技能,能出图、出视频、出播客、出音乐,还能写结构化研究报告。

四类生成技能

技能 现有 provider 端点
image-generation Gemini(gemini-3-pro-image-preview generativelanguage.googleapis.com
video-generation Gemini Veo(veo-3.1 长任务轮询
podcast-generation 火山引擎 TTS openspeech.bytedance.com
music-generation MiniMax(新增) api.minimaxi.com

provider 怎么选

每个生成脚本里有 _resolve_provider(),判定顺序很讲理:

  1. 显式覆盖:环境变量 IMAGE_GENERATION_PROVIDER 等设了,直接用。
  2. 现有 provider 优先:原 provider 密钥齐全 → 用原来的,保证向后兼容。
  3. 回退 MiniMax:原 provider 没密钥但 MINIMAX_API_KEY 有 → 走 MiniMax。
  4. 都没有 → 抛清晰错误,告诉你两套环境变量怎么配。

默认行为不变——你原来配了 Gemini,一切照旧;只配了 MiniMax 的用户自动走新路。

研究报告与「压缩标记」

DeerFlow 继承了 v1 的 Deep Research 血统,能产出带引用的研究报告。这里有个细节体验很好:当运行中触发了上下文压缩,前端历史里会插入一个 [N messages condensed] 标记卡片,点开能看到被压缩成的摘要。

实现上,它包装了 LangChain 的 SummarizationMiddleware,在每次真正压缩时 adispatch_custom_event("summarization", ...),把 replaced_count 和摘要文本写进 event store,前端再在正确时间线位置渲染这张卡片。这样你不会疑惑「我前面的话怎么没了」。

标叔的结论:生成技能是 DeerFlow「产品感」的来源。你做个内容工作流,直接复用 image-generation / podcast-generation 比自己接 API 省太多事。记得用 <SKILL>_PROVIDER 锁定 provider,别让自动判断在半夜切了供应商。

定时跑任务,是自动化刚需。下一章讲。