01. Agent 和普通 Workflow 有什么区别?

整理 Agent 与 Workflow 的核心区别、适用边界与工程取舍。

简单回答

Workflow 是预定义好的固定流程,每一步做什么、下一步去哪都是开发者写死的;Agent 是由 LLM 驱动的自主决策系统,能根据当前状态动态选择下一步行动。核心区别在于"谁在做决策"——Workflow 中是代码逻辑在决策,Agent 中是 LLM 在决策。Agent 更灵活但也更不可控,Workflow 更可靠但不够灵活。

详细解释

从控制流的角度理解

这个区别用"控制流由谁决定"来理解最清晰。

Workflow(工作流)本质上是一段编排好的程序逻辑。开发者在代码里定义了"先做 A,如果 A 的结果满足条件 X 就做 B,否则做 C"。每一步调用什么工具、传什么参数、下一步去哪里,全部是确定性的。LLM 在 Workflow 中可能扮演某个节点的角色(比如"总结这段文本"、"提取关键信息"),但 LLM 不决定流程走向——流程走向由 if-else、switch-case 这类代码逻辑决定。

Agent 的控制流由 LLM 自主决定。LLM 看到当前状态(用户的问题、已有的信息、可用的工具),自己判断下一步应该做什么——是调用搜索工具、还是查数据库、还是直接回答用户。做完一步之后,LLM 再看结果,再决定下一步。这个*"观察→思考→行动"*的循环是 Agent 的核心特征。

打个比方:Workflow 像一条铁轨上的火车,路线是固定的,到了岔路口由信号灯(代码逻辑)决定方向。Agent 像一个开着车的司机,他有地图、有导航、有方向盘,每个路口他自己决定转不转弯。

什么时候用 Workflow,什么时候用 Agent

这个选择不是越高级越好,而是看场景的确定性程度。

如果任务的步骤是明确的、可枚举的、不需要根据中间结果做复杂判断的——用 Workflow。比如"用户上传简历 → OCR 提取文字 → 结构化解析 → 存入数据库",这个流程几乎不需要 LLM 做决策,用 Workflow 更可靠、更快、更省钱。

如果任务的步骤不确定、需要根据中间结果做灵活调整、或者工具组合方式多样——考虑 Agent。比如"帮我调研一下某个技术方向的最新进展,整理出一份报告",这个任务需要搜索、阅读、筛选、追查引用、对比分析,每一步做什么取决于前一步发现了什么,很难用固定流程覆盖所有情况。

实际项目中很多系统是混合的——主体流程用 Workflow 保证可靠性,某些需要灵活判断的节点嵌入 Agent 能力。比如一个客服系统的主流程是 Workflow(意图识别 → 查知识库 → 生成回复),但在"知识库没有匹配到结果"的分支里引入 Agent,让它自主决定是搜外部知识库、还是转人工、还是换个角度检索。

可控性和可靠性的权衡

Agent 的最大问题是不可控。LLM 的决策是概率性的,同一个问题两次可能走不同路径。这在生产环境中意味着延迟不可预测、结果不可复现、错误难以定位。Workflow 则完全确定——给定同样的输入,永远走同样的路径,出了问题可以精确定位到哪个节点。

所以在大多数生产系统中,Workflow 的使用频率远高于纯 Agent 架构。很多时候开发者一开始想做 Agent,最后发现业务场景可以被几条 Workflow 规则覆盖,反而更稳定。Anthropic 自己的建议也是"从 Prompt 开始,不够再加 Workflow,最后才考虑 Agent"。

和 Agentic Workflow 的关系

近年来有一个中间地带的概念叫 Agentic Workflow——在 Workflow 框架内引入 Agent 式的决策能力。比如 LangGraph 允许你定义状态图(Graph),其中某些边的转移由 LLM 决定。这样既有 Workflow 的结构化和可控性,又有一定的动态决策能力。可以理解为"有导轨的 Agent"——Agent 可以做选择,但选择范围被 Graph 的结构限定了。

面试时可以这样答

核心区别在于控制流由谁决定。Workflow 是开发者预定义的固定流程,每一步做什么、下一步去哪都是代码逻辑决定的。Agent 是 LLM 自主决策,根据当前状态动态选择下一步行动。

选择标准看场景的确定性。如果任务步骤明确、可枚举,用 Workflow 更可靠更快。如果任务需要根据中间结果灵活调整,Agent 更合适。实际项目中很多系统是混合的——主流程用 Workflow 保证稳定性,某些需要灵活判断的节点嵌入 Agent 能力。

Agent 最大的问题是不可控——LLM 的决策是概率性的,延迟和结果都不可预测。所以生产环境中 Workflow 用得远比纯 Agent 多。LangGraph 这类框架走的是 Agentic Workflow 的路线,在 Workflow 结构内引入有限的 Agent 决策能力,算是一种折中。

常见追问

  1. 你实际项目中用的是 Agent 还是 Workflow?为什么这样选?
  2. Agentic Workflow 和纯 Agent 在工程实现上有什么区别?
  3. 如果 Agent 做了错误决策导致结果不对,怎么排查和修复?