Technical Guide
07. Tools 原理:Agent 为什么需要工具
理解 Tool 的边界:模型负责判断和组织,Tool 负责执行动作;好工具要有清晰输入、输出和失败处理。
Tool 是 Agent 的手
模型会推理,但不能自己访问网页、读文件、执行命令或调用外部 API。
Tool 解决的就是这个问题:把一个确定动作暴露给 Agent。
Tool 和 prompt 不一样
prompt 是告诉模型怎么想。
Tool 是让模型能做一件事。
例如:
搜索网页
读取文件
展示图片
调用 MCP 工具
创建子 Agent
这些都不是靠 prompt 能可靠完成的。
好 Tool 的标准
一个好工具要清楚三件事:
输入是什么
输出是什么
失败时怎么表现
如果输入很随意,Agent 很容易乱传参数。
如果输出太长,模型会被噪声淹没。
如果失败信息不清楚,后续排错会很痛苦。
DeerFlow 里的工具位置
相关目录:
backend/packages/harness/deerflow/tools/
backend/packages/harness/deerflow/tools/builtins/
你能看到 clarification、task、tool_search、view_image、present_file、setup_agent、invoke_acp_agent 等内置工具。
这些工具覆盖了 Agent 执行中的基础动作:澄清、分派、查找工具、查看图片、展示文件、设置 Agent 等。
Tool 和 Skill 的区别
这两个很容易混。
Tool:一次具体动作
Skill:一套工作方法和约束
比如“抓取网页正文”是 Tool。
“写一篇有证据链的研究报告”更像 Skill。
这一篇你要记住
Agent 的能力不是来自模型本身,而是来自模型能安全、稳定地调用哪些工具。
下一篇看工具是怎么注册和调用的。
实践:动手检查
打开 backend/packages/harness/deerflow/tools/builtins/,任选一个本文提到的内置工具,只回答三个问题:输入是什么、输出是什么、失败时怎样表现。不要改实现。
完成标准
- 找到一个真实的内置工具文件;
- 分别记下输入、输出和一个失败分支;
- 能说明它为什么是 Tool,而不是 Skill。
多走一步(可选)
再选一个用途不同的内置工具,比较两者输出是否同样适合直接交回模型。