昨天晚上加班到凌晨两点,只为了把一个第三方API的对接文档啃下来。那种从一个接口跳到另一个接口、一边看示例代码一边复制粘贴的感觉,我猜每个开发都懂。最烦的是,每次遇到这种场景我就想:能不能有个AI Agent,帮我自动读完文档、写个demo、甚至把测试跑通?以前试过AutoGPT,折腾半小时它就卡在“正在思考”的死循环里。
今天刷GitHub热榜,看到字节跳动的DeerFlow(星标78k,Python语言)——它宣称是一个“long-horizon SuperAgent”,能研究、编码、创造,而且支持长期任务规划。我立刻决定:这回必须自己搭一遍,看看它到底能不能帮我搞定刚才的API对接问题。
什么是DeerFlow?一句话说清楚
如果你用过AutoGPT或BabyAGI,DeerFlow的架构其实不陌生:一个核心的Agent执行器(Harness),搭配各种工具(Tool),外加一个长期记忆和任务管理器。但它最大的不同是“长周期”的优化——它不是给你一个对话窗口,而是让你定义一个任务目标,它会分解成子任务,一步步执行,过程中可以调用代码解释器、搜索、文件读写等工具,甚至自己写代码、改代码、再运行测试,直到完成任务。
怎么装:比想象中麻烦一点
官方GitHub(bytedance/deer-flow)的README写得很干净,安装步骤基本就三步:
git clone https://github.com/bytedance/deer-flow.git
cd deer-flow
pip install -r requirements.txt
但如果你直接用pip install,很可能因为缺某个依赖报错。比如我一开始在Mac上装,提示sqlite3版本太低,实际上Python 3.11以上就没问题。另外它默认用了chromadb做向量存储,安装时会自动下载一些模型文件,网络不好容易超时。我建议用pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple加速。
【我遇到的坑】 安装时一直卡在pip install llama-index上,换源也没用。查issue发现是默认锁定了llama-index==0.10.44,新版有兼容性问题。解决办法:手动指定版本pip install llama-index==0.10.43。另外推荐用Python 3.10,3.12可能遇到numpy编译问题。
装完后配置模型。DeerFlow支持OpenAI、Claude、Gemini,也支持本地模型(比如通过Ollama)。我用的是OpenAI GPT-4o-mini作为推理主力,便宜又够快。配置文件在config.yaml里,把API Key填进去就行。
实际使用:让DeerFlow帮我写一个API Demo
我准备了一个真实场景:自动读取某个天气API的文档(OpenWeatherMap),然后生成一个Python脚本,调用API并解析返回的JSON,最后输出成漂亮的Markdown报告。这绝对是一个典型“长周期”任务——要先搜索→阅读→写代码→测试→改错→写报告。
启动DeerFlow很简单:
python run.py --task "访问 https://openweathermap.org/api 文档,学习如何获取当前天气数据,然后写一个Python脚本,输入城市名返回温度、湿度和风速,最后把测试结果生成一个Markdown文件" --max_steps 30
然后我就看着它的思考过程一行行打印出来:
Step 1: 解析任务,拆分子任务
- 子任务1: 获取OpenWeatherMap API文档
- 子任务2: 实现Python客户端
- 子任务3: 测试并生成报告
Step 2: 使用WebSearch工具获取API文档URL...
Step 3: 阅读文档,提取API Key申请方式、请求格式...
看到这里我就觉得靠谱了——它真的自己去网页上爬取内容,而不是简单调用个内置函数。大约3分钟后,它开始写代码:
def get_weather(city):
import requests
api_key = "YOUR_API_KEY" # 它会提醒我替换
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"
resp = requests.get(url)
return resp.json()
然后它自己跑了个测试(当然会因为没有真实API key报错),接着它居然读取报错信息,在终端里指导我输入密钥,再重新运行。最终它生成了一个完整的weather_report.md,里面不仅有代码,还有表格展示示例数据(用的是它虚构的测试结果)。
好用在哪:三个让我惊艳的设计
1. 长期记忆与任务回溯
大部分Agent跑着跑着就忘记前面做了什么。DeerFlow内置了一个“笔记本”,会把每次工具调用结果、代码输出、错误信息都记录下来,后续步骤可以引用之前的信息。比如写报告时,它直接调用了步骤12的JSON解析结果,我没看到任何上下文中断。
2. 自动修复代码
测试时返回HTTP 401(未授权),它没有直接放弃,而是重新阅读API文档中的认证部分,发现需要用?appid=xxx,而它写的代码确实正确。但我的问题是mac上requests库默认没开SSL验证?它自动加了verify=False。这种“在真实环境里会遇到的边界情况”让我意外。
3. 多工具并行调度
它同时使用了WebSearch、CodeInterpreter、FileWrite三个工具,而且把每次调用结果整合到同一个“工作空间”。我观察它的调度日志,发现它并不会笨笨地顺序执行,而是会并行探测是否有现成信息可以复用。
和竞品比怎么样?
我对比了同样热门(且我实际用过)的Dify(150k stars) 和 AutoGPT。
- vs Dify:Dify更偏向可视化搭建工作流,适合非程序员做RAG和Agent。但它的Agent能力相对弱,尤其是“自己写代码并调试”这个环节,Dify的代码节点只支持简单Python,无法自动修复。DeerFlow更接近“真正会用代码完成复杂任务的助理”。
- vs AutoGPT:AutoGPT在GitHub上已经很久没大更新了,而且经常陷入“思考循环”,需要手动干预。DeerFlow的“长周期”设计(long-horizon)通过任务分解和记忆压缩,减少了死循环。实测中,我设置最大30步,它用了22步完成,没有一次卡死。
- vs CowAgent(46k stars):我简单看了CowAgent的代码,它的核心思路和DeerFlow相似,但CowAgent更强调“超级助手”(Super AI Assistant),交互上更像聊天。DeerFlow更偏向“后台自主执行”,适合不需要你实时盯着的人。
踩的那些坑(不止一个)
虽然是篇测评,但必须说实话:它并不完美。
【我遇到的坑】
- 模型选择很关键:如果用免费模型(比如GPT-3.5),它经常会产生幻觉,写出的代码有语法错误。我换到GPT-4o-mini后准确率明显提升。理论上它支持本地模型,但用Llama 3.1 8B测试时,任务分解太慢,10分钟只走了3步。
- 工具依赖网络:WebSearch工具默认用的是
serpapi,需要额外API Key。如果不想申请,可以换成duckduckgo_search,但需要在源码里改一下。我一开始没注意,卡在第一步“搜索API文档”上,它报错API key missing。- 文件系统隔离:它默认把所有生成的文件放在
workspace目录,但你跑完一个任务想拿结果,发现路径是workspace/xxxx/results,且不会自动清理。跑几次后磁盘就满了(因为它的“日记”是纯文本保存)。建议在配置里开启auto_clean: true。- 长上下文消耗token:当任务超过15步后,记忆累积会导致token消耗剧增。我测试时,20步的任务花了约30万token(GPT-4o-mini),折合约1块钱人民币,还算能接受,但如果是GPT-4则可能十几块。注意控制
max_steps不要太大。- 不支持中断恢复:如果你中途关掉终端,之前的所有状态全部丢失。它没有持久化到数据库,只能从头再来。对于长时间的自动化(比如写一个完整的库),这是个痛点。
什么场景适合用DeerFlow?
经过这次实测,我觉得它最适合以下三类场景:
- 快速原型验证:比如你想知道某个API怎么调用,或者某个开源的库怎么安装配置,让DeerFlow帮你跑一遍。
- 数据清洗与文档生成:从网页抓数据→解析→写报告,它做得很好。
- 代码自查 & 调试:给你的代码一个错误日志,让它帮你分析并修改。(我后来试了让它修复自己的代码,成功把一处
requests.exceptions.ConnectionError处理了。)
不适合的场景:实时对话(它每一步都要思考几秒)、需要高安全性(它敢直接执行任何Python代码)、超大项目(它目前单次只支持几千行代码的上下文)。
结论:值不值得用?
我的结论是:如果你是一个经常需要“一键完成从调研到编码”的开发者,DeerFlow值得花一两个小时折腾一下。 它比AutoGPT更稳定,比Dify更智能,而且是开源可二次开发的。虽然仍有坑(我已经帮你踩了几个),但它的“长周期规划+自动修复代码”能力是目前开源Agent里少见的。
当然,如果你想直接用商业产品,可以等字节跳动的云服务(据说内测中)。但作为技术博主,我更喜欢能本地跑、能自定义工具的项目。我会把它加到我的开发工具箱里,下次遇到烦人的文档阅读任务,就扔给它——而我,正好可以边喝咖啡边当监工。
如果你也试了DeerFlow,或者有其他好用的Agent项目,欢迎留言讨论。