DeerFlow 工具集成实战:搜索、知识库、MCP 与 REPL 一次配齐
【免费下载链接】deer-flowAn open-source long-horizon SuperAgent harness that researches, codes, and creates. With the help of sandboxes, memories, tools, skill, subagents and message gateway, it handles different levels of tasks that could take minutes to hours.项目地址: https://gitcode.com/GitHub_Trending/de/deer-flow
你让代理做深度研究,第一步就卡在取数上:网上查到的资料浅,内网文档它读不到,外部服务的接口它调不动,中间的计算还得人工去算。DeerFlow 的工具集成就是冲着这四道坎来的,一次研究任务里,搜索后端、私有知识库、MCP 外部工具、Python REPL 各管一段,配好就能跑。
🔍 信息从哪来:搜索后端切换与私有库接入
DeerFlow 用一个统一入口按配置动态创建搜索工具:改一行配置就能换搜索后端,代理侧代码不用动。
搜索后端怎么选?YAML 里改一个字段就行
后端候选有 tavily、brave_search、arxiv、duckduckgo、wikipedia,在 YAML 里写selected字段,配合环境变量替换生效:
SEARCH_ENGINE: selected: tavily include_domains: [] exclude_domains: []- Tavily:AI 原生搜索引擎。可调返回条数、搜索深度(basic / advanced)、域名黑白名单,还能开原始正文和图像返回,图像结果附带文字描述。
- Brave Search:隐私向的企业级搜索,必须给
BRAVE_SEARCH_API_KEY,结果条数精确可控。 - Arxiv:面向学术检索,一次取回论文的完整元数据。
不管走哪个后端,返回结果都会整理成同一套字段:type(page / image)、title、url、content、score,图像结果额外带image_url和image_description。上层解析逻辑因此保持稳定,换后端不会触发返工。
私有知识库怎么接?RAGFlow 和 VikingDB 两条路
两条路径都收在同一个Retriever接口后面,接口只暴露两件事:list_resources()列出可用资源,query_relevant_documents()按资源取回相关文档。代理的用法固定两步:先问有哪些知识库,再按资源标识去检索。
- RAGFlow 路线:开源 RAG 引擎,配
RAGFLOW_API_URL+RAGFLOW_API_KEY即可连上;默认取回 10 条;支持跨语言检索,中文问题能召回英文文档。 - VikingDB 路线:火山引擎的企业级知识库,认证走 AK/SK + HMAC-SHA256 请求签名,链路安全性更高;除检索数量外还暴露稠密检索权重、重排序开关、块分组等高级参数,适合对召回质量有要求的场景。
资源用统一标识描述:rag://dataset/{id}[#{doc}]。#后面的文档 id 可选,给了就精确到单篇文档。上层代码因此不用为不同知识库各写一套解析。
🧩 代理能做什么:用 MCP 扩工具、用 REPL 跑代码
一个 MCP 服务器怎么接进来?stdio / SSE / streamable_http 三选一
MCP(Model Context Protocol)是接外部工具的现成协议。DeerFlow 支持三种传输:
stdio:本地命令行进程,配command和args就能拉起来。sse:服务实时推送事件,适合持续更新的数据流。streamable_http:流式 HTTP 服务,配url和headers。
配好后 DeerFlow 自动向服务器要工具清单,拿到的工具直接注册进代理工具箱,不用手写胶水代码。
工具怎么精确管控?开关、白名单、按 agent 分发
MCP 默认关闭,ENABLE_MCP_SERVER_CONFIGURATION显式打开才生效,生产环境不会误露出 MCP 接口。全局开关之外还有两层精细控制:
enabled_tools:从这台服务器只加载哪些工具。add_to_agents:加载来的工具分发给哪些代理。
一个配置就能把某个工具只挂给 researcher:
{ "transport": "stdio", "command": "uvx", "args": ["mcp-github-trending"], "enabled_tools": ["get_github_trending_repositories"], "add_to_agents": ["researcher"] }默认超时 60 秒,首次连接要拉进程、建握手,留足初始化时间。MCP 侧的异常单独捕获,只会让对应工具调用失败,不会拖垮整个研究流程。
Python REPL 怎么跑代码?print 出来才看得到
REPL 由ENABLE_PYTHON_REPL控制,默认关闭。启用后,代理把要执行的代码交给它跑:输入先做类型校验,执行中的异常被捕获并以错误信息返回,不会把主流程带崩。结果要用print()显式输出,对话里才看得到。典型用途:数据统计、算法验证、复利这类金融计算。
🔒 安全与性能:这些细节都收敛在一处
- 异步 IO:搜索请求走 aiohttp 异步发出,不阻塞事件循环。
- 连接池:HTTP 调用复用连接,省掉反复建连的开销。
- 超时与重试:请求配超时,临时故障按指数退避重试。
- 结果缓存:高频查询直接命中缓存,省 API 调用。
- 异常隔离:搜索、知识库、MCP、REPL 的失败都只落到对应工具调用的返回里,研究任务本身不停摆。
- 沙箱与审计:Python 代码在受控环境里执行,默认禁用、生产环境谨慎开启;工具调用保留审计日志,出事可回查。
📋 配置速查
| 环境变量 | 默认值 | 必填 |
|---|---|---|
| SELECTED_SEARCH_ENGINE | tavily | 否 |
| TAVILY_API_KEY | 无 | 用 Tavily 时必填 |
| BRAVE_SEARCH_API_KEY | 无 | 用 Brave 时必填 |
| RAGFLOW_API_URL | 无 | 接 RAGFlow 时必填 |
| RAGFLOW_API_KEY | 无 | 接 RAGFlow 时必填 |
| RAGFLOW_RETRIEVAL_SIZE | 10 | 否 |
| RAGFLOW_CROSS_LANGUAGES | English,Chinese | 否 |
| VIKINGDB_KNOWLEDGE_BASE_API_URL / API_AK / API_SK | 无 | 接 VikingDB 时必填 |
| ENABLE_MCP_SERVER_CONFIGURATION | false | 否 |
| ENABLE_PYTHON_REPL | false | 否 |
更多字段的解释可参考仓库里的 backend/docs/CONFIGURATION.md。
MCP 工具一条配置就能挂上来,私有知识库配两三个变量就能用,搜索后端在 YAML 里换一行字。这四类能力拼起来,一个深度研究任务从取数、查内部资料到跑计算,不用再人工补位。
【免费下载链接】deer-flowAn open-source long-horizon SuperAgent harness that researches, codes, and creates. With the help of sandboxes, memories, tools, skill, subagents and message gateway, it handles different levels of tasks that could take minutes to hours.项目地址: https://gitcode.com/GitHub_Trending/de/deer-flow
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考