Technical Guide
08. Tools 源码:工具是怎么注册和调用的
从 deerflow/tools 目录看工具注册、内置工具、MCP 工具转换和工具调用的关键文件。
这一篇看哪些文件
工具源码主要在:
backend/packages/harness/deerflow/tools/
建议先看这些文件:
tools.py
types.py
sync.py
mcp_metadata.py
skill_manage_tool.py
builtins/
不要一上来把所有 builtins 都读完。先看工具的结构,再看具体工具。
types.py:先看工具长什么样
types.py 通常会定义工具相关的数据结构。
读源码时先找这些问题:
工具输入怎么描述?
工具输出怎么描述?
是否有 metadata?
错误信息怎么表达?
这比直接看某个工具实现更有效。
tools.py:工具怎么组织
tools.py 通常是工具集合和注册逻辑的核心位置。
你要看:
内置工具在哪里加载
外部工具怎么并入
工具列表如何提供给 Agent
如果以后要加一个自定义 Tool,大概率会从这里找到入口。
builtins:内置工具参考实现
内置工具目录:
backend/packages/harness/deerflow/tools/builtins/
这里的文件适合作为模板。
例如:
clarification_tool.py
task_tool.py
tool_search.py
view_image_tool.py
present_file_tool.py
读这些工具时,不要只看函数体。重点看它们如何定义参数、如何返回结果、如何把错误交给 Agent。
MCP 工具转换
MCP 不是直接变成 Agent 能用的 Python 函数。
中间需要转换和 metadata 处理。相关文件包括:
mcp_metadata.py
backend/packages/harness/deerflow/mcp/tools.py
这也是为什么 18、19 两篇会单独讲 MCP。
这一篇你要记住
加工具前,先弄清工具系统的三层:
类型定义
|
注册/聚合
|
具体工具实现
下一篇会动手设计一个给研究型 Agent 用的工具能力。