当工作流学会「自己拿主意」:聊聊 Dify 的 Agent 节点
固定工作流是你把每一步都画好;Agent 节点则把「下一步该干啥」交给模型自己判断。它带来灵活,也带来不可预测,关键是用对地方。
普通的工作流节点,干的是「固定动作」:你让它干啥它干啥,顺序也是你画死的。Dify 的 Agent 节点不一样,它把「这一步该怎么办、要不要调工具、调哪个」这种决策权,交给了大模型自己。一句话说,它给工作流装上了「自己拿主意」的能力。
它由两部分组成
Agent 节点本身是个「决策中心」,负责管理可用的资源、记录推理的过程;而真正定义「怎么推理、怎么用工具」的,是 Agent 策略——一个个可插拔的推理算法模块。Dify 内置了 ReAct(想一想—做一做—看结果,如此循环)和 Function Calling 两种策略,开发者也能自己实现 Tree-of-Thought、Chain-of-Thought 之类的玩法。这种把「决策中心」和「推理策略」解耦的设计,让推理方式可以不断演进,而不用动整个节点。
“固定节点是「照着剧本演」,Agent 节点是「给个目标,让它自己想办法」——灵活是它的优点,也是它的风险。
上手其实不难
对非技术的人,配置一个 Agent 节点是拖拽式的:选一个推理策略、把要用的工具挂上、把提示词配好,就能跑。更省心的是,它内置了日志,会把每一次的推理路径、执行轨迹、token 消耗都可视化出来——这点很重要,因为自主决策的东西,如果不能看到它「为什么这么做」,出了问题根本没法排查。整个过程就是:初始化 → 循环(模型判断要不要、要用哪个工具)→ 给出最终回答。
什么时候该用,什么时候别用
我们的原则和之前讲工作流 vs 智能体时一致:步骤固定、可预期的事,老老实实用普通节点串起来,稳定好排查;只有当一件事「下一步取决于上一步的结果、没法提前画死」时,才把它交给 Agent 节点。灵活是有代价的,代价就是不可预测、排查更费劲、token 也更费。
ReAct 和 Function Calling,怎么选
Dify 内置的两种策略,适用场景不太一样。ReAct 让模型「想一步、做一步、看结果」,推理过程透明、好排查,适合需要多步推理、你又想看清它思路的任务;Function Calling 借助模型原生的工具调用能力,通常更快、更省 token,适合工具明确、调用直接的场景。一句话:要可解释、可调试,偏 ReAct;要效率、要简洁,偏 Function Calling。拿不准就两个都试跑一下,看哪个在你的场景里更稳。
把工具的边界卡死
给 Agent 节点挂工具,是它强大的地方,也是最该当心的地方。既然「调不调、怎么调」交给了模型,你就得在配置层把每个工具能做什么、能传什么参数限定清楚——尤其是那些会改数据、调外部接口的工具。别指望提示词里写一句「请谨慎使用」就够,真正的护栏要架在工具的权限和参数校验上。模型可以自主,但它的自主必须待在一个安全的笼子里。
先看日志,再谈优化
Agent 节点最该用好的功能,是它的执行日志。每一次它「想了什么、为什么决定调这个工具、结果如何」,都被记录下来。出了问题别急着改提示词,先把几条出错的执行轨迹翻出来,看它到底在哪一步判断偏了。自主决策的东西,排查全靠这些轨迹——看懂它怎么想的,才知道该怎么调。
它的「自主」,是要付费的
用 Agent 节点前,得先有个心理准备:它的自主不是免费的。为了自己决定「下一步调哪个工具」,它往往要多跑几轮模型调用,每一轮都消耗 token、增加延迟。一个固定工作流可能一次调用就出结果,换成 Agent 节点,同样一件事可能要三四轮才收尾。在高频、对响应速度敏感的场景里,这笔账会很显眼。
所以我们的建议始终是:先问「这件事真的需要临场判断吗」。如果答案是否定的,用固定节点既快又省;只有当它确实需要根据上一步结果灵活决定下一步时,Agent 节点多花的那点成本和时间才花得值。别为了「显得智能」,给一件本可以确定下来的事,套上一个又慢又贵的自主循环。
Agent 节点是个好东西,但它不是用来显得「高级」的。把它用在真正需要临场判断的环节,工作流既保住了整体的可控,又在该灵活的地方灵活起来——这才是它最舒服的用法。



