8.1 KiB
8.1 KiB
DeerFlow 上游升级对比与回合建议
对比对象:
bytedance/deer-flow(上游,HEAD9f3be2a@ 2026-05-30)vs 本仓库 fork。 生成日期:2026-05-31。 说明:按用户要求,多语言 (i18n) 与 播客 / TTS (podcast) 不在本次升级范围内,已剔除。
0. 背景与对比结论
| 项 | 结论 |
|---|---|
| fork 切出时间 | ≈ 2026-05-12(与目录名 offline-backend-20260512 吻合) |
| 上游当前 HEAD | 9f3be2a @ 2026-05-30,完整历史 2186 提交 |
| fork 之后上游新增 | 95 个提交(7 feat / 1 perf / 60 fix / 依赖与文档若干) |
后端核心框架 packages/harness/deerflow/ |
高度同源、目录结构完全一致,差异主要来自这 95 个提交 |
| 前端 | 技术栈已分道扬镳:上游仍是 Next.js,本仓库已迁到 Vite + React Router,文件几乎全不同 |
「升级」分两类,本文都覆盖:
- A 类:fork 之后上游真正新增的(95 提交)——同源、可 cherry-pick,优先回合。
- B 类:fork 时就裁掉/换了路线、上游一直保留的能力——成本高、按业务取舍。
1. 后端升级(A 类:fork 后上游新增)
1.1 新能力(feat / perf)
| 日期 | 升级 | 提交 | 说明 |
|---|---|---|---|
| 05-29 | ToolOutputBudgetMiddleware | #3303 | 给超大工具输出做预算保护,防止单个结果撑爆上下文 |
| 05-28 | MiMo reasoning 支持 | #3298 | 兼容小米 MiMo 模型思维链回传 |
| 05-21 | 链路追踪命名优化 | #3101 | 图名改 lead_agent、用自定义 agent 名作 run_name |
| 05-21 | 循环检测延迟告警 | #2752 | 警告延迟注入,减少对正常多轮对话的误打断 |
| 05-20 | Sandbox 下载文件接口 | #3038 | 可把沙箱内产物取回 |
| 05-15 | Discord 渠道增强 | #2842 | 仅@提及、thread 路由、typing 指示 |
| 05-13 | 子代理 token 用量流式上报 | #2882 | subagent 消耗实时汇总到 header,利于展示/计费 |
| 05-12 | perf:线程元数据过滤下推 SQL | #2865 | 线程列表筛选走 SQL,性能提升 |
能力性增强(fix 前缀实为增强):MCP 跨调用持久化会话、支持有状态 server(#3089 / #3203);摘要触发阈值调优(#3174)。
1.2 重要稳定性修复
| 主题 | 提交 | 价值 |
|---|---|---|
| 摘要压缩后保留消息 | #3280 | 数据正确性关键 |
| 重启后从持久化恢复 runs / interrupted 状态 | #2932(破坏性)、#2989、#3152、#3155 | 网关重启不丢运行 |
| JWT secret 持久化、多 worker 共享网关 token | #2933、#3184 | 重启/多进程登录态不失效 |
| memory 更新按 agent 隔离 + 包裹 JSON 解析健壮性 | #2941、#3252 | 记忆串号/解析修复 |
| MCP 配置接口脱敏 | #2667 | 防密钥泄露 |
| 阻塞 IO 移出事件循环 | #3311、#2822(+检测门禁 #3229) | 消除事件循环阻塞 |
1.3 依赖升级
- Python:
langsmith 0.7.36 → 0.8.0、idna 3.13 → 3.15
1.4 怎么做(回合 A 类后端升级)
前提:本仓库
packages/harness/deerflow/与上游高度同源,cherry-pick 冲突面小。
- 加上游为远程并拉取历史(在后端所在 git 仓库根执行):
git remote add upstream https://github.com/bytedance/deer-flow.git git fetch upstream - 逐条预览某个提交的改动范围:
git show <commit_hash> --stat git show <commit_hash> -- backend/packages/harness/deerflow/... - 单条回合(推荐用
-x记录来源;如路径前缀不一致需先确认):git cherry-pick -x <commit_hash> # 冲突时:解决后 git cherry-pick --continue注意:上游后端在
backend/子目录,本仓库后端在offline-backend-20260512/backend/。若 cherry-pick 因路径不匹配失败,改用按文件打补丁:git show <hash> -- backend/<path> | git apply --directory=offline-backend-20260512/backend -p2 -3 - 回合后必跑校验(在
offline-backend-20260512/backend/):
重点确认make test # PYTHONPATH=. uv run pytest tests/ -v make linttests/test_harness_boundary.py(harness→app 防火墙)与中间件链顺序未被破坏。 - 依赖升级:同步上游
pyproject.toml对应行后执行uv lock && make install;离线环境需同步更新requirements-offline.txt/wheelhouse。
2. 前端升级(B 类:上游有、本仓库缺)
已剔除多语言、播客。下表为关键词核验结果(本仓库 vs 上游命中文件数)。
| 功能 | 本仓库 | 上游 | 状态 |
|---|---|---|---|
| Prose 文本润色 | 0 | 8 | 上游独有 |
| Replay 研究回放 | 2 | 29 | 上游完整,本仓库近乎无 |
| PPT / PPTX 生成 | 2 | 14 | 上游完整,本仓库近乎无 |
| Landing 落地页 | 0 | 11 | 上游独有(营销/介绍页,按需) |
| 静态 demo 模式 | 无 | #3170 | fork 后上游新增 |
前端体验类修复(可参考实现):流式渲染、消息去重、历史消息 Mermaid 预览、新建会话即时入侧栏。
前端依赖升级:brace-expansion 1.x → 5.0.5(安全)、uuid 10 → 14。
2.1 怎么做(前端能力移植)
前端技术栈已不同(Next.js → Vite + React Router),不能直接 cherry-pick,需按"读上游实现 → 适配到本仓库"的方式重写。
通用步骤:
- 在上游
frontend/src/定位目标功能的页面/组件/hook 与对应的后端 API 调用。 - 后端能力是否具备:Prose / PPT / Replay 依赖后端相应接口,先确认本仓库后端有无对应路由(多为 deep_research/skills 相关),没有则前端无法独立完成,需连带回合后端。
- 适配差异点:
- 路由:上游 app router (
src/app/...) → 本仓库src/pages/+PageRoutes.tsx/WorkspaceRoutes.tsx。 - 导航 API:用本仓库
src/shims/(next/link、next/navigation已 polyfill)。 - 数据流:沿用本仓库 TanStack Query +
@langchain/langgraph-sdk流式。
- 路由:上游 app router (
- 验证:
pnpm typecheck+pnpm dev实测。
3. 推荐升级清单(按优先级)
P0 — 强烈建议(低风险、高价值,A 类)
- 摘要压缩后保留消息 #3280 —— 数据正确性,直接影响长对话可用性。
- 重启后恢复 runs / interrupted #2932 #2989 #3152 #3155 —— 生产稳定性核心。
- JWT secret 持久化 / 多 worker 共享 token #2933 #3184 —— 否则重启或多进程部署会掉登录态。
- 阻塞 IO 移出事件循环 #3311 #2822 —— 并发吞吐与响应延迟改善。
P1 — 建议(实用增强)
- ToolOutputBudgetMiddleware #3303 —— 防超大工具输出拖垮上下文,对 agent 稳定性有实际帮助。
- MCP 持久化会话 / 有状态 server #3089 #3203 —— 若用到有状态 MCP server 则必需。
- MCP 配置接口脱敏 #2667 —— 安全加固。
- 子代理 token 用量流式上报 #2882 —— 计费/可观测。
- 线程元数据过滤下推 SQL #2865(perf) —— 列表性能。
P2 — 按需(看是否用到对应模型/渠道)
- MiMo reasoning #3298(用小米模型才需要)
- Discord 渠道增强 #2842(用 Discord 才需要)
- Sandbox 下载文件接口 #3038、追踪命名 #3101、循环检测延迟告警 #2752
前端(按业务价值)
- Replay 研究回放 —— 对"深研/写作"类产品体验提升明显,建议优先(需后端配合)。
- Prose 文本润色 —— 与写作工作台契合,建议评估接入。
- PPT 生成 —— 若有汇报/导出诉求再做。
- Landing 落地页 —— 仅当面向外部用户时考虑。
暂不做
- 多语言 i18n(本次明确排除)
- 播客 / TTS(本次明确排除)
4. 建议执行节奏
- 先做 P0 后端 4 项 + 跑全量测试,单独提交一个"上游稳定性回合"分支。
- 再做 P1,逐条 cherry-pick、逐条验证。
- 前端 Replay / Prose 立项评估(确认后端依赖),单独排期重写适配。
- 依赖升级随回合同步,离线包 (
wheelhouse/requirements-offline.txt) 一并更新。